PLATFORMIO(1)

📦
version 4.3.4 · 2 versions
, in ubuntu jammy

💖 PLATFORMIO(1) — PlatformIO 💖

✨ NAME ✨

platformio — PlatformIO Documentation

Okay bestie, gather round. PlatformIO is literally a place where Developers and Teams have true Freedom! No more hardware or software lock-ins! 🫶

  • Open source, maximum permissive Apache 2.0 license
  • Cross-platform IDE and Unified Debugger
  • Static Code Analyzer and Remote Unit Testing
  • Multi-platform and Multi-architecture Build System
  • Firmware File Explorer and Memory Inspection.

Social: Twitter | LinkedIn | Facebook | Bintray | Community


📚 CONTENTS 📚

🌸 What is PlatformIO? 🌸

A place where Developers and Teams have true Freedom! No more hardware or software lock-ins! ✨

📝 Contents 📝

  • Awards
  • Philosophy
  • Technologies
  • Problematic
  • How does it work?

PlatformIO is a cross-platform, cross-architecture, multiple framework, professional tool for embedded systems engineers and for software developers who write applications for embedded products.

🏆 Awards 🏆

PlatformIO was nominated for the year's best Software and Tools in the 2015/16 IoT Awards. 👑

A native PlatformIO IDE extension for Microsoft ide_vscode editor is the most rated/reviewed extension with over 800 five-star reviews in the whole Microsoft Marketplace. It also was installed by over 750,000 unique developers around the world. No cap.

🧠 Philosophy 🧠

PlatformIO's unique philosophy in the embedded market provides developers with a modern integrated development environment (ide) that works cross-platform, supports many different software development kits (SDKs) or frameworks, and includes sophisticated debugging (piodebug), unit testing (unit_testing), automated code analysis (piocheck), and remote management (pioremote). It is architected to maximize flexibility and choice by developers, who can use either graphical or command line editors (piocore), or both.

PlatformIO is a must-have tool for professional embedded systems engineers who develop solutions on more than one specific platform. In addition, by having a decentralized architecture, PlatformIO offers both new and existing developers a quick integration path for developing commercial-ready products, and reduces the overall time-to-market.

And it runs on any one of your favorite modern operating systems (macOS, MS Windows, Linux, FreeBSD). 🌈

🛠 Technologies 🛠

PlatformIO applies the latest scalable and flexible software technology to the embedded market – an area traditionally served by complex software tools that experienced hardware engineers have learned over time (often painfully so). Instead, with PlatformIO, users can be hobbyists or professionals. They can import the classic Arduino "Blink" sketch or develop a sophisticated low-level embedded C program for a commercial product. Example code for any supported framework can be compiled and uploaded to a target platform in minutes. ⚡

The build system structure automatically tags software dependencies and applies them using a modular hierarchy that takes away the usual complexity and pain. Developers no longer have to manually find and assemble an environment of toolchains, compilers, and library dependencies to develop applications for a specific target. With PlatformIO, clicking the compile button will bring in all necessary dependencies automatically. It's analogous to if you were a furniture designer, and your CAD program had a "build" button that caused a robot to fetch all the necessary pieces and fasteners and correctly assemble them. 🪑🤖

piocore is a unique, developed-from-scratch build system that removes the usual pain of software integration, packaging, and library dependencies that developers encounter when they move beyond the bounds of a specific SDK or example embedded application. It can be used with a variety of code development environments and allows easy integration with numerous cloud platforms and web services feeds. The user experiences no barriers to getting started quickly: no license fees, no legal contracts. The user maintains full flexibility of the build environment because the tools are open source and permissively licensed (no permission needed to modify them, and no requirement to share changes.) 💅

😤 Problematic 😤

  • The main problem which repulses people from the embedded world is a complicated process to setup development software for a specific MCU/board: toolchains, proprietary vendor's IDE (which sometimes isn't free) and what is more, to get a computer with OS where that software is supported.
  • Multiple hardware platforms (MCUs, boards) require different toolchains, IDEs, etc, and, respectively, spending time on learning new development environments.
  • Finding proper libraries and code samples showing how to use popular sensors, actuators, etc.
  • Sharing embedded projects between team members, regardless of an operating system they prefer to work with.

⚙️ How does it work? ⚙️

Without going too deep into PlatformIO implementation details, work cycle of the project developed using PlatformIO is as follows:

  • Users choose board(s) interested in projectconf
  • Based on this list of boards, PlatformIO downloads required toolchains and installs them automatically.
  • Users develop code and PlatformIO makes sure that it is compiled, prepared and uploaded to all the boards of interest.

🧸 PlatformIO IDE 🧸

PlatformIO IDE is the next-generation integrated development environment for IoT. 🔥

  • Cross-platform build system without external dependencies to the OS software:
    • 800+ boards
    • 35+ platforms
    • 20+ frameworks
  • piodebug
  • pioremote
  • unit_testing
  • C/C++ Intelligent Code Completion
  • C/C++ Smart Code Linter for rapid professional development
  • Library Manager for the hundreds popular libraries
  • Multi-projects workflow with multiple panes
  • Themes support with dark and light colors
  • Serial Port Monitor
  • Built-in Terminal with piocore and CLI tool (pio, platformio)
  • Built-in piohome.

We provide official packages (plugins, extensions) for the most popular IDEs and text editors.

NOTE: In our experience, ide_vscode offers better system performance, and users have found it easier to get started

🆚 PlatformIO for VSCode 🆚

Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. It comes with built-in support for JavaScript, TypeScript and Node.js and has a rich ecosystem of extensions for other languages (such as C++, C#, Python, PHP, Go) and runtimes (such as .NET and Unity).

Install PlatformIO for VSCode / Get started .SS PlatformIO for CLion

🦁 PlatformIO for CLion 🦁

The CLion is a cross-platform C/C++ IDE for Linux, OS X, and Windows. CLion includes such features as a smart editor, code generation, code quality assurance, automated refactorings, on-the-fly code analysis, project manager, integrated version control systems and debugger.

Install PlatformIO for CLion / Get started .SS PlatformIO Core (CLI)

💻 PlatformIO Core (CLI) 💻

PlatformIO Core (CLI tool) is a heart of whole PlatformIO ecosystem and consists of

  • Multi-platform Build System
  • Development platform and package managers
  • librarymanager
  • ldf
  • Serial Port Monitor
  • Integration components (ide and ci).

PlatformIO Core is written in Python and works on Windows, macOS, Linux, FreeBSD and ARM-based credit-card sized computers (Raspberry Pi, BeagleBone, CubieBoard, Samsung ARTIK, etc.).

PlatformIO Core provides a rich and documented Command Line Interface (CLI). The other PlatformIO-based software and IDEs are based on PlatformIO Core CLI, such as pioide. In other words, they wrap PlatformIO Core with own GUI.

NOTE: Please note that you do not need to install PlatformIO Core if you are going to use pioide. PlatformIO Core is built into PlatformIO IDE and you will be able to use it within PlatformIO IDE Terminal. If you need PlatformIO Core commands outside PlatformIO IDE, please piocore_install_shell_commands.

🎬 Demo 🎬

📦 Contents 📦

  • "Blink Project"
    • Used in demo
  • Platform Manager
    • Used in demo
  • Library Manager
    • Used in demo
  • Over-the-Air update for ESP8266
    • Used in demo

[image]

🧪 Used in demo 🧪

  1. Source code of Wiring Blink Example
  2. cmd_run command
  3. platformio run -t upload command.

🗂 Platform Manager 🗂

[image]

🧪 Used in demo 🧪

  1. userguide_platform
  2. cmd_platform_list command
  3. platformio platform search avr command
  4. platformio platform show teensy command
  5. cmd_platform_update command.

📚 Library Manager 📚

[image]

🧪 Used in demo 🧪

  1. cmd_lib
  2. platformio lib search 1-wire command
  3. platformio lib install 54 command
  4. platformio lib search -f mbed command
  5. platformio lib search -k rf command
  6. platformio lib search radiohead command
  7. platformio lib install 124 --version "1.40" command
  8. platformio lib show 124 command
  9. cmd_lib_update command.

📡 Over-the-Air update for ESP8266 📡

.SS Used in demo

🧪 Used in demo 🧪

  1. cmd_run command
  2. platformio run -t upload command.

📥 Installation 📥

NOTE: Please note that you do not need to install piocore if you are going to use pioide. piocore is built into PlatformIO IDE and you will be able to use it within PlatformIO IDE Terminal. If you need piocore outside PlatformIO IDE, please Install Shell Commands.

PlatformIO Core is written in Python and works on Windows, macOS, Linux, FreeBSD and ARM-based credit-card sized computers (Raspberry Pi, BeagleBone, CubieBoard, Samsung ARTIK, etc.).

  • System requirements
  • Installation Methods
    • Installer Script
      • Super-Quick (Mac / Linux)
      • Local Download (Mac / Linux / Windows)
    • Python Package Manager
    • macOS Homebrew
    • Virtual Environment
      • Prerequisites
      • Creating
  • Development Version
  • Install Shell Commands
    • Unix and Unix-like
      • Method 1
      • Method 2
    • Windows
  • Uninstall PIO Core and dependent packages
  • Integration with custom applications (extensions, plugins)
    • Prerequisite
      • Python Interpreter
      • Installer Script
    • Workflow
      • Step 1. Where is PlatformIO Core installed?
      • Step 2. Install PlatformIO Core
  • Troubleshooting

🖥 System requirements 🖥

Operating System Windows, macOS, Linux, FreeBSD, Linux ARMv6+

🌸 Python Interpreter 🌸

Okay bestie, first things first — the vibes need a Python. Python 3.5+ is the moment (Python 2.7 is not recommended, and honestly its support is getting yeeted in the next releases, so don't get attached 😭).

For the Windows girlies, there's a detailed instruction on how to faq_install_python — go read it, it's giving ✨step-by-step✨.


💻 Terminal Application 💻

Every single command in this whole page? Yeah, they all get typed into a command-line application (a Terminal, bestie, we live there now 🫶).

  • For macOS and Linux OS — the Terminal application
  • For Windows OS — the cmd.exe application

🔌 Access to Serial Ports (USB/UART) 🔌

Windows Users: please check that you have correctly installed the USB driver from your board manufacturer. No driver, no serial, no slay 💀

Linux Users:

  • Please install faq_udev_rules 🎀
  • Raspberry Pi girlies, please read this article: Enable serial port on Raspberry Pi 🍓

🛠️ Installation Methods 🛠️

Please choose ONE of the following methods (one!! not all of them, I'm begging 🙈):

  • Installer Script
    • Super-Quick (Mac / Linux)
    • Local Download (Mac / Linux / Windows)
  • Python Package Manager
  • macOS Homebrew
  • Virtual Environment
    • Prerequisites
    • Creating

🎀 Installer Script 🎀

WARNING: PlatformIO DOES NOT require administrative/sudo permissions. Please install using the default user account WITHOUT EXTRA PERMISSIONS. Do not come at it with sudo, it does not want that energy. 💅

⚡ Super-Quick (Mac / Linux) ⚡

To install or upgrade PlatformIO Core, just paste this at a Terminal prompt and let it cook:

python3 -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/develop/scripts/get-platformio.py)"

# or using `curl`

curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -o get-platformio.py
python3 get-platformio.py

# or using `wget`

wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -O get-platformio.py
python3 get-platformio.py

📥 Local Download (Mac / Linux / Windows) 📥

To install or upgrade PlatformIO Core, download the get-platformio.py script (save as...). Then run the following:

# change directory to folder where is located downloaded "get-platformio.py"
cd /path/to/dir/where/is/located/get-platformio.py/script

# run it
python get-platformio.py

On Windows OS it may look like:

# change directory to folder where is located downloaded "get-platformio.py"
cd C:\path\to\dir\where\is\located\script\get-platformio.py

# run it
python.exe get-platformio.py
NOTE: If you need to have access to platformio or platformio.exe commands from other applications or terminal in your OS, please Install Shell Commands. ✨

🐍 Python Package Manager 🐍

WARNING: We recommend using this method ONLY FOR ci use cases or where you have full permissions to install PlatformIO Core into the global scope of your OS. For personal use, and to avoid maintenance and upgrade issues, we HIGHLY RECOMMEND using Installer Script, which installs PlatformIO Core into an isolated virtual environment and does not affect your OS. Periodt. 💅

The latest stable version of PlatformIO Core may be installed or upgraded via Python Package Manager (pip) as follows:

pip install -U platformio

🍎 macOS Homebrew 🍎

The latest stable version of PlatformIO may be installed or upgraded via macOS Homebrew Packages Manager (brew) as follows:

brew install platformio

🧚 Virtual Environment 🧚

PlatformIO Core may be installed into an isolated Python environment. This method is very good if you don't want to install PlatformIO Core Python's dependencies (packages) into your global system scope. pioide uses this method to install PlatformIO Core. Iconic behaviour, honestly. 👑

Default and recommended environment folder is "projectconf_pio_core_dir/penv". You can print the environment folder path using the next command in your system terminal:

python -c "import os; print(os.path.join(os.getenv('PLATFORMIO_CORE_DIR', os.path.join(os.path.expanduser('~'), '.platformio')), 'penv'))"

######################## Examples
# Windows
# C:\Users\UserName\.platformio\penv

# Linux
# ~/.platformio/penv
# /home/username/.platformio/penv

# macOS
# ~/.platformio/penv
# /Users/username/.platformio/penv

📋 Prerequisites 📋

  1. Please remove the existing PlatformIO Core environment folder if it exists. See the command above for how to get the path to the environment folder. 🗑️
  2. Please check that you have a valid Python interpreter by running the next command in your system terminal. Python 2.7.9+ or Python 3.5+ is recommended.
python --version

# or, for Unix (Linux, Mac), you can use `python2` or `python3` aliases
python2 --version
python3 --version
WARNING: Windows Users: If you already tried to install pioide and did not get success, please open your system's Control Panel > Installed Programs, and check if PlatformIO IDE tried to install its own isolated Python 2.7 version. Please uninstall it. Also, it's good to uninstall all Python interpreters from a system and install manually the latest Python using the faq_install_python guide. 😭
  1. Make sure the virtualenv --help command exists in your system, otherwise please install it manually using pip install virtualenv or pip2 install virtualenv.

If pip (Python Package Manager) does not exist, you have to install it manually. See https://pip.pypa.io/en/stable/installing/ 🫶


🌱 Creating 🌱

  1. Create a folder which contains all the necessary executables to use the packages that PIO Core would need, using the virtualenv command:
virtualenv /path/to/.platformio/penv

# If you want to use a custom Python interpreter
virtualenv --python=/path/to/custom/python /path/to/.platformio/penv

# EXAMPLES
# Windows
virtualenv C:\Users\UserName\.platformio\penv
virtualenv --python=C:\Python27\python.exe  C:\Users\UserName\.platformio\penv

# Unix (Linux, Mac)
virtualenv ~/.platformio/penv
virtualenv -p python3 ~/.platformio/penv
  1. Activate the virtual environment:
# Windows
C:\Users\UserName\.platformio\penv\Scripts\activate

# Unix (Linux, Mac)
source /path/to/.platformio/penv/bin/activate
# or
. /path/to/.platformio/penv/bin/activate
  1. Install PIO Core into the virtual environment:
pip install -U platformio

If you plan to use PIO Core commands outside the virtual environment, please Install Shell Commands. ✨


🧪 Development Version 🧪

WARNING: If you use pioide, please enable the development version: - ide_atom: "Menu PlatformIO: Settings > PlatformIO IDE > Use development version of PlatformIO Core" - ide_vscode: Set platformio-ide.useDevelopmentPIOCore to true in ide_vscode_settings

Install the latest PlatformIO from the develop branch:

# uninstall existing version
pip uninstall platformio

# install the latest development version of PlatformIO
pip install -U https://github.com/platformio/platformio-core/archive/develop.zip

If you want to be up-to-date with the latest develop version of PlatformIO, then you need to re-install PlatformIO each time you see new commits in the PlatformIO GitHub repository (branch: develop), like so:

pip install -U https://github.com/platformio/platformio-core/archive/develop.zip

Or:

pio upgrade --dev

To revert to the latest stable version:

pip uninstall platformio
pip install -U platformio

🐚 Install Shell Commands 🐚

piocore consists of 2 standalone tools in a system:

  • platformio or pio (short alias) — piocore_userguide 📖
  • piodebuggdb — alias of cmd_debug 🐛

If you have pioide already installed, you do not need to install piocore separately. Just link these tools with your shell:

  • Unix and Unix-like
    • Method 1
    • Method 2
  • Windows

🐧 Unix and Unix-like 🐧

In Unix and Unix-like systems, there are multiple ways to achieve this. Pick your fighter, bestie 💅


✨ Method 1 ✨

You can export PlatformIO executables' directory to the PATH environmental variable. This method will allow you to execute platformio commands from any terminal emulator, as long as you're logged in as the user PlatformIO is installed and configured for.

If you use Bash as your default shell, you can do it by editing either ~/.profile or ~/.bash_profile and adding the following line:

export PATH=$PATH:~/.platformio/penv/bin

If you use Zsh, you can either edit ~/.zprofile and add the code above, or — for supporting both Bash and Zsh — you can first edit ~/.profile and add the code above, then edit ~/.zprofile and add the following line:

emulate sh -c '. ~/.profile'

After everything's done, just restart your session (log out and log back in) and you're good to go. 🫶

If you don't know the difference between the two, check out this page. 🤔


🔗 Method 2 🔗

You can create system-wide symlinks. This method is not recommended if you have multiple users on your computer, because the symlinks will be broken for other users and they will get errors while executing PlatformIO commands. If that's not a problem, open your system terminal app and paste these commands (MAY require administrator access sudo):

ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio
ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio
ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb

After that, you should be able to run PlatformIO from terminal. No restart is required. ✨


🪟 Windows 🪟

Please read one of these instructions: How do I set or change the PATH system variable?

You need to edit the system environment variable called Path and append C:\Users\UserName\.platformio\penv\Scripts; path at the beginning of the list (please replace UserName with your account name). 💖


🗑️ Uninstall PIO Core and dependent packages 🗑️

  • Uninstall PIO Core tool
# uninstall standalone PIO Core installed via `pip`
pip uninstall platformio

# uninstall Homebrew's PIO Core (only macOS users if you installed it via Homebrew before)
brew uninstall platformio
  • Dependent packages and global libraries are installed to the projectconf_pio_core_dir folder (in user's HOME directory). Just remove it. 💅

🧩 Integration with custom applications (extensions, plugins) 🧩

We recommend using the PlatformIO Core Installer Script when you integrate PlatformIO Core into an application, such as an extension or plugin for an IDE. Examples that use this installer are:

  • platformio-node-helpers, used by PlatformIO IDE for VSCode and PlatformIO IDE for Atom 🌈

🎀 Prerequisite 🎀

🐍 Python Interpreter 🐍

The PlatformIO Core Installer Script is written in Python and is compatible with Python 2.7+ and Python 3.5+. We highly recommend using Python 3. Periodt. 👑

Python ships by default on basically every popular Unix OS out there (macOS, Linux, FreeBSD), so like... usually you're chilling 💅. But if there's no Python on the user's machine (quick vibe check: run python --version and see what comes back), we have 2 options:

  1. Ask the user to install Python 3 using our guide faq_install_python
  2. You can automatically Download Portable Python 3 and unpack it in a cache folder of your application. Later, you can use unpacked_protable_python_dir/python.exe for the installer script.

🐍 Installer Script 🐍

There are 2 options on how to work with PlatformIO Core Installer Script:

  1. Bundle get-platformio.py file into your application
  2. Download get-platformio.py file on demand.

In both cases, you will need to have get-platformio.py script on the end-user machine. You can copy or download it to a cache/temporary folder. No cap. ✨

A list of arguments and options for the installer script is available via

python get-platformio.py --help

🌸 Workflow 🌸

We will describe a simple workflow on how to automatically install piocore for end-user of your application/extension. We assume that get-platformio.py script is already copied/downloaded and exists on the end-user machine. See above how to get it. 👆


📍 Step 1. Where is PlatformIO Core installed? 📍

You should check the PlatformIO Core installation state each time when the user starts your application. You need to call the Installer Script with check core arguments:

python get-platformio.py check core

This command returns 0 "exit code" when PlatformIO Core is already installed and is ready for use, otherwise, the non-zero code of subprocess will be returned and you need to install PlatformIO Core (see Step #2 below).

If you need to have full information about PlatformIO Core installation state, please run with --dump-state option and specify a folder or a full path where to save data in JSON format:

get-platformio.py check core --dump-state tmpdir/pioinstaller-state.json

Now, read JSON file and use platformio_exe binary to call PlatforIO Core using CLI (see piocore_userguide). You can also export penv_bin_dir into system environment PATH variable and platformio command will be available without a full path. 🫶

Example of pioinstaller-state.json run on macOS:

{
  "cache_dir": "/Users/Freedom/.platformio/.cache",
  "core_dir": "/Users/Freedom/.platformio",
  "core_version": "4.3.1",
  "installer_version": "0.2.0",
  "is_develop_core": false,
  "penv_bin_dir": "/Users/Freedom/.platformio/penv/bin",
  "penv_dir": "/Users/Freedom/.platformio/penv",
  "platformio_exe": "/Users/Freedom/.platformio/penv/bin/platformio",
  "python_exe": "/Users/Freedom/.platformio/penv/bin/python",
  "system": "darwin_x86_64"
}

💾 Step 2. Install PlatformIO Core 💾

To install PlatformIO Core into the virtual environment in an automatic mode, please call installer script without any arguments:

python get-platformio.py

Available options:

  • --verbose — verbose output, so you actually see what's going on 👀
  • --dev — install the latest development version of PlatformIO Core
  • --ignore-python — a path to Python to be ignored (multiple options and unix wildcards are allowed)

More options are available at python get-platformio.py --help.

Installer Script will return exit code 0 on success, otherwise non-zero code and error explanation. 😭

Next time just use again python get-platformio.py check core as described in Step #1 (see above). We love a little callback. 💖


🚨 Troubleshooting 🚨

NOTE: Linux OS: Don't forget to install "udev" rules file 99-platformio-udev.rules (an instruction is located in the file). Windows OS: Please check that you have correctly installed USB driver from board manufacturer

For further details, frequently questions, known issues, please refer to faq.

If you find any issues with PlatformIO Core Installer Script, please report to https://github.com/platformio/platformio-core-installer/issues — the devs wanna hear it fr fr 🙈


👑 Quick Start 👑

This tutorial introduces you to the basics of piocore Command Line Interface (CLI) workflow and shows you a creation process of a simple cross-platform "Blink" Project. After finishing you will have a general understanding of how to work with the multiple development platforms and embedded boards. Main character energy, honestly. ✨


🎀 Setting Up the Project 🎀

piocore provides special cmd_project_init command for configuring your projects. It allows one to initialize new empty project or update existing with the new data.

What is more, cmd_project_init can be used for ide. It means that you will be able to import pre-generated PlatformIO project using favorite IDE and extend it with the professional instruments for IoT development.

This tutorial is based on the next popular embedded boards and development platforms using framework_arduino:

  • Platform platform_atmelavr, Board board_atmelavr_uno, Framework framework_arduino
  • Platform platform_espressif8266, Board board_espressif8266_nodemcuv2, Framework framework_arduino
  • Platform platform_teensy, Board board_teensy_teensy31, Framework framework_arduino

🦋 Board Identifier 🦋

cmd_project_init command requires to specify board identifier ID. It can be found using boards catalog, Boards Explorer or cmd_boards command. For example, using cmd_boards let's try to find Teensy boards:

> platformio boards teensy

Platform: teensy
---------------------------------------------------------------------------
ID                    MCU            Frequency  Flash   RAM    Name
---------------------------------------------------------------------------
teensy20              atmega32u4     16MHz     31K    2.5K  Teensy 2.0
teensy30              mk20dx128      48MHz     128K   16K   Teensy 3.0
teensy31              mk20dx256      72MHz     256K   64K   Teensy 3.1 / 3.2
teensylc              mkl26z64       48MHz     62K    8K    Teensy LC
teensy20pp            at90usb1286    16MHz     127K   8K    Teensy++ 2.0

According to the table above the ID for board_teensy_teensy31 is teensy31. Also, the ID for board_atmelavr_uno is uno and for board_espressif8266_nodemcuv2 is nodemcuv2. 💅


🌈 Initialize Project 🌈

PlatformIO ecosystem contains big database with pre-configured settings for the most popular embedded boards. It helps you to forget about installing toolchains, writing build scripts or configuring uploading process. Just tell PlatformIO the Board ID and you will receive full working project with pre-installed instruments for the professional development. Iconic behaviour. ⭐

  1. Create empty folder where you are going to initialize new PlatformIO project. Then open system Terminal and change directory to it:
# create new directory
> mkdir path_to_the_new_directory

# go to it
> cd path_to_the_new_directory
  1. Initialize project for the boards mentioned above (you can specify more than one board at time):
> platformio project init --board uno --board nodemcuv2 --board teensy31

The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio project init -d %PATH_TO_THE_PROJECT_DIR%` command.

The next files/directories will be created in ***
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
src - Put your source files here
lib - Put here project specific (private) libraries
Do you want to continue? [y/N]: y
Project has been successfully initialized!
Useful commands:
`platformio run` - process/build project from the current directory
`platformio run --target upload` or `platformio run -t upload` - upload firmware to embedded board
`platformio run --target clean` - clean project (remove compiled files)

Congrats! You have just created the first PlatformIO based Project with the next structure: 🥳

  • projectconf
  • src directory where you should place source code (*.h, *.c, *.cpp, *.S, *.ino, etc.)
  • lib directory can be used for the project specific (private) libraries. More details are located in lib/README file.
  • Miscellaneous files for VCS and ci support.
NOTE: If you need to add new board to the existing project please use cmd_project_init again.

The result of just generated platformio.ini:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter, extra scripting
;   Upload options: custom port, speed and extra flags
;   Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:uno]
platform = atmelavr
framework = arduino
board = uno

[env:nodemcuv2]
platform = espressif8266
framework = arduino
board = nodemcuv2

[env:teensy31]
platform = teensy
framework = arduino
board = teensy31

Now, we need to create main.cpp file and place it to src folder of our newly created project. The contents of src/main.cpp:

/**
 * Blink
 *
 * Turns on an LED on for one second,
 * then off for one second, repeatedly.
 */
#include "Arduino.h"

#ifndef LED_BUILTIN
#define LED_BUILTIN 13
#endif

void setup()
{
  // initialize LED digital pin as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_BUILTIN, HIGH);

  // wait for a second
  delay(1000);
            // turn the LED off by making the voltage LOW
            digitalWrite(LED_BUILTIN, LOW);

             // wait for a second
            delay(1000);
          }

And boom, that's the whole vibe. Your final Project structure ends up looking like this:

project_dir
├── lib
│   └── README
├── platformio.ini
└── src
    └── main.cpp

Process Project 🛠️

piocore gives you a special cmd_run command to actually do stuff with your project. Call it with zero arguments and the PlatformIO Build System will process every single project environment (aka one per board you set up above). Here are some genuinely useful ones, bestie:

  • platformio run — process (build) all the environments you listed in projectconf
  • platformio run --target upload — build the project and upload the firmware to every device in projectconf
  • platformio run --target clean — clean the project (bye bye, compiled objects 💀)
  • platformio run -e uno — process only the uno environment
  • platformio run -e uno -t upload — build only for uno and upload that firmware

For all the other targets, go read up on platformio run --target documentation, okay?

And finally: there's a demo showing off building a project and uploading firmware to an Arduino Uno: [image]


Further Reading 📚

  • Project examples
  • piocore_userguide for piocore commands

CLI Guide 💅

Contents 🎀

  • CLI Guide
    • Usage
    • Options
    • Commands

Usage ✨

pio [OPTIONS] COMMAND
platformio [OPTIONS] COMMAND

# "pio" is the alias of "platformio" command

Options 🌸

  • --no-ansi — don't print ANSI control characters. Also peep the PLATFORMIO_NO_ANSI and PLATFORMIO_FORCE_ANSI environment variables, iykyk.
  • --version — show the version of PlatformIO.
  • --help, -h — show help for the available options and commands.
$ platformio --help
$ platformio COMMAND --help

Commands 👑

platformio account

CLI helper command for pioaccount.

Wanna see all the available commands and options? Run:

pio account --help
platformio account --help
platformio account COMMAND --help

platformio account forgot

Contents 🦋

  • platformio account forgot
    • Usage
    • Description
      • Options

Usage

platformio account forgot [OPTIONS]
pio account forgot [OPTIONS]

Description

Lets you reset your password for pioaccount, using the username or email you registered with. So chill.

Options

  • --username, -u — username or email. You can totally skip this option and just type your username or email into the Forgot Wizard later. No pressure. 💖

platformio account login

Contents 🦋

  • platformio account login
    • Usage
    • Description
      • Options

Usage

platformio account login [OPTIONS]
pio account login [OPTIONS]

Description

Log in to pioaccount. If you can't hand over your authentication credentials manually, you can use PLATFORMIO_AUTH_TOKEN instead. This is so useful for CI systems and pioremote operations, fr fr.

Options

  • --username, -u — username or email. You can omit this and enter your username or email in the Login Wizard later.
  • --password, -p — you can omit this option and enter your password securely in the Login Wizard later. 🔒

platformio account logout

Contents 🦋

  • platformio account logout
    • Usage
    • Description

Usage

platformio account logout
pio account logout

Description

Log out of pioaccount. Go on, log off, it's giving self-care. 🌈


platformio account password

Contents 🦋

  • platformio account password
    • Usage
    • Description

Usage

platformio account password
pio account password

Description

Change your password for pioaccount.


platformio account register

Contents 🦋

  • platformio account register
    • Usage
    • Description
      • Options

Usage

platformio account register [OPTIONS]
pio account register [OPTIONS]

Description

Create a brand new pioaccount. New account, new you. ✨

Options

You can skip all of these and fill them in later in the Register Wizard. 💅

  • --username, -u — a username. You can use it later for the cmd_account_login, cmd_account_update, and cmd_account_forgot commands.

The username must contain at least 4 characters including single hyphens, and it cannot begin or end with a hyphen.

  • --email, -e — an email. Please enter an existing email, because you'll get a confirmation letter. 📩
  • --password, -p — a password. You'll need it for the cmd_account_login, cmd_account_password, cmd_account_token, and cmd_account_update commands.
  • --firstname — a first name.
  • --lastname — a last name.

platformio account show

Contents 🦋

  • platformio account show
    • Usage
    • Description
      • Options

Usage

platformio account show
pio account show

Description

Show detailed information about pioaccount:

  • Active subscriptions
  • Available packages and services

Options

  • --json-output — return the output in JSON format.

platformio account token

Contents 🦋

  • platformio account token
    • Usage
    • Description
      • Options

Usage

platformio account token
pio account token

Description

Get or regenerate your Personal Authentication Token. This is super useful for CI systems and pioremote operations where you can't authorize manually, no cap.

PlatformIO handles the Personal Authentication Token from the PLATFORMIO_AUTH_TOKEN environment variable.

Options

  • --regenerate — if this option is specified, a new authentication token will be generated. 🔥
  • --json-output — return the output in JSON format.

platformio account update

Contents 🦋

  • platformio account update
    • Usage
    • Description
      • Options

Usage

platformio account update [OPTIONS]
pio account update [OPTIONS]

Description

Update your pioaccount profile. Glow up era. 💅

Options

You can omit these options and enter them later in the update Wizard.

  • --username, -u — a username that must contain at least 4 characters including single hyphens, and cannot begin or end with a hyphen.
  • --email, -e — an email. Please enter an existing email, you will receive a confirmation letter.
  • --firstname — a first name.
  • --lastname — a last name.
  • --current-password — a current password to confirm this operation. 🔐

platformio boards

Contents 🦋

  • platformio boards
    • Usage
    • Description
      • Options
    • Examples

Usage

platformio boards [OPTIONS] [FILTER]
pio boards [OPTIONS] [FILTER]

Description

List pre-configured Embedded Boards. Board shopping, but make it a command. 👑

Options

  • --installed — list boards only from the installed platforms.
  • --json-output — return the output in JSON format.

Examples

  1. Show all available pre-configured embedded boards
$ platformio boards

Platform: atmelavr
---------------------------------------------------------------------------
ID                    MCU           Frequency  Flash   RAM    Name
---------------------------------------------------------------------------
btatmega168           atmega168     16MHz     14K    1K    Arduino BT ATmega168
btatmega328           atmega328p    16MHz     28K    2K    Arduino BT ATmega328
diecimilaatmega168    atmega168     16MHz     14K    1K    Arduino Duemilanove or Diecimila ATmega168
diecimilaatmega328    atmega328p    16MHz     30K    2K    Arduino Duemilanove or Diecimila ATmega328
esplora               atmega32u4    16MHz     28K    2K    Arduino Esplora
ethernet              atmega328p    16MHz     31K    2K    Arduino Ethernet
...
  1. Filter Arduino-based boards
$ platformio boards arduino

Platform: atmelavr
---------------------------------------------------------------------------
ID                    MCU           Frequency  Flash   RAM    Name
---------------------------------------------------------------------------
btatmega168           atmega168     16MHz     14K    1K    Arduino BT ATmega168
btatmega328           atmega328p    16MHz     28K    2K    Arduino BT ATmega328
diecimilaatmega168    atmega168     16MHz     14K    1K    Arduino Duemilanove or Diecimila ATmega168
diecimilaatmega328    atmega328p    16MHz     30K    2K    Arduino Duemilanove or Diecimila ATmega328
esplora               atmega32u4    16MHz     28K    2K    Arduino Esplora
ethernet              atmega328p    16MHz     31K    2K    Arduino Ethernet
...
  1. Filter mbed-enabled boards
$ platformio boards mbed

Platform: freescalekinetis
---------------------------------------------------------------------------
ID                    MCU            Frequency  Flash   RAM    Name
---------------------------------------------------------------------------
frdm_k20d50m          mk20dx128vlh5  48MHz     128K   16K   Freescale Kinetis FRDM-K20D50M
frdm_k22f             mk22fn512vlh12 120MHz    512K   128K  Freescale Kinetis FRDM-K22F
...

Platform: nordicnrf51
---------------------------------------------------------------------------
ID                    MCU            Frequency  Flash   RAM    Name
---------------------------------------------------------------------------
wallBotBLE            nrf51822       16MHz     128K   16K   JKSoft Wallbot BLE
nrf51_dk              nrf51822       32MHz     256K   32K   Nordic nRF51-DK
...

Platform: nxplpc
---------------------------------------------------------------------------
ID                    MCU            Frequency  Flash   RAM    Name
---------------------------------------------------------------------------
blueboard_lpc11u24    lpc11u24       48MHz     32K    8K    BlueBoard-LPC11U24
dipcortexm0           lpc11u24       50MHz     32K    8K    DipCortex M0
lpc11u35              lpc11u35       48MHz     64K    10K   EA LPC11U35 QuickStart Board
...

Platform: ststm32
---------------------------------------------------------------------------
ID                    MCU            Frequency  Flash   RAM    Name
---------------------------------------------------------------------------
disco_f401vc          stm32f401vct6  84MHz     256K   64K   32F401CDISCOVERY
nucleo_f030r8         stm32f030r8t6  48MHz     64K    8K    ST Nucleo F030R8
...
  1. Filter boards which are based on ATmega168 MCU
$ platformio boards atmega168
Platform: atmelavr
---------------------------------------------------------------------------
ID                    MCU           Frequency  Flash   RAM    Name
---------------------------------------------------------------------------
btatmega168           atmega168     16MHz     14K    1K    Arduino BT ATmega168
diecimilaatmega168    atmega168     16MHz     14K    1K    Arduino Duemilanove or Diecimila ATmega168
miniatmega168         atmega168     16MHz     14K    1K    Arduino Mini ATmega168
atmegangatmega168     atmega168     16MHz     14K    1K    Arduino NG or older ATmega168
nanoatmega168         atmega168     16MHz     14K    1K    Arduino Nano ATmega168
pro8MHzatmega168      atmega168     8MHz      14K    1K    Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz)
pro16MHzatmega168     atmega168     16MHz     14K    1K    Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz)
lilypadatmega168      atmega168     8MHz      14K    1K    LilyPad Arduino ATmega168
168pa16m              atmega168p    16MHz     15K    1K    Microduino Core (Atmega168PA@16M,5V)
168pa8m               atmega168p    8MHz      15K    1K    Microduino Core (Atmega168PA@8M,3.3V)

5. Show boards by platform_timsp430 🌈

$ platformio boards timsp430

Platform: timsp430
---------------------------------------------------------------------------
ID                    MCU           Frequency  Flash   RAM    Name
---------------------------------------------------------------------------
lpmsp430fr5739        msp430fr5739  16MHz     15K    1K    FraunchPad w/ msp430fr5739
lpmsp430f5529         msp430f5529   16MHz     128K   1K    LaunchPad w/ msp430f5529 (16MHz)
lpmsp430f5529_25      msp430f5529   25MHz     128K   1K    LaunchPad w/ msp430f5529 (25MHz)
lpmsp430fr5969        msp430fr5969  8MHz      64K    1K    LaunchPad w/ msp430fr5969
lpmsp430g2231         msp430g2231   1MHz      2K     128B   LaunchPad w/ msp430g2231 (1MHz)
lpmsp430g2452         msp430g2452   16MHz     8K     256B   LaunchPad w/ msp430g2452 (16MHz)
lpmsp430g2553         msp430g2553   16MHz     16K    512B   LaunchPad w/ msp430g2553 (16MHz)

✨ platformio check ✨

Helper command for <code>piocheck</code>. 💅

Contents

  • platformio check
    • Usage
    • Description
    • Options
    • Examples

Usage

platformio check [OPTIONS]
pio check [OPTIONS]

Description

Bestie, this one runs a static analysis check on your PlatformIO based project. 💖 By default the check_tool_cppcheck analysis tool is used, no cap.

Wanna know more deets about PlatformIO piocheck? Go look it up, iykyk.

Options

  • -e, --environment — Pick exactly which environments get processed, queen. 👑
  • --pattern — You get to say which source files or folders get included/excluded from the check process. By default only projectconf_pio_src_dir and projectconf_pio_include_dir are checked. Multiple --pattern options and GLOB Patterns are allowed, slay.

Example:

platformio check --pattern="tests" --pattern="src/*.cpp"
  • --flags — Extra flags that need to be passed to the analysis tool. If multiple tools are set in the projectconf_check_tool option, the flags get passed to all of them. Individual flags for each tool can be added using a special suffix with the tool name.
    • --addon=<addon> — Execute addon. i.e. cert.
    • -D<ID> — Define preprocessor symbol.

Multiple --flags options are allowed.

Example:

platformio check --flags "-DDEBUG cppcheck: --std=c++11 --platform=avr8"
  • --severity — Specify the check_severity types which will be reported by the check_tools. Possible values described in the check_severity section. Multiple --severity options are allowed.

Example:

platformio check --severity=high
  • -d, --project-dir — Path to the project directory. By default, --project-dir is equal to the current working directory (CWD).
  • -c, --project-conf — Process the project with a custom projectconf.
  • --json-output — Return the output in JSON format. ✨
  • --fail-on-defect — Fail (exit with non-zero code) if there's a defect found with the specified severity. By default the exit code is the same as the exit code returned by the tool selected for performing the check. Possible values described in the check_severity section. Multiple --fail-on-defect options are allowed.

Example:

platformio check --fail-on-defect=low --fail-on-defect=medium
  • -s, --silent — Suppress progress reporting and show only defects with high severity. See check_severity.
  • -v, --verbose — Show detailed information when processing environments.

This option can also be set globally using the setting_force_verbose setting or by environment variable PLATFORMIO_SETTING_FORCE_VERBOSE.

Examples

For the examples, please follow to the piocheck page. 🫶


✨ platformio ci ✨

Contents

  • platformio ci
    • Usage
    • Description
    • Options
    • Examples

Usage

platformio ci [OPTIONS] [SRC]
pio ci [OPTIONS] [SRC]

Description

Okay so the platformio ci command is literally conceived of as a "hot key" for building a project with arbitrary source code structure. 🔥 In a nutshell, using SRC and platformio ci --lib contents, PlatformIO initializes via cmd_project_init a new project in platformio ci --build-dir with the build environments (using platformio ci --board or platformio ci --project-conf) and processes them via the cmd_run command. Iconic behaviour, fr fr.

The platformio ci command accepts multiple SRC arguments, platformio ci --lib and platformio ci --exclude options which can be a path to a directory, file or Glob Pattern. Also, you can omit the SRC argument and set path (multiple paths are allowed, denoting with :) to the PLATFORMIO_CI_SRC Environment variable.

For more details as for integration with the popular Continuous Integration Systems, please follow to the ci page.

NOTE: platformio ci command is useful for library developers. It allows one to build different examples without creating their own project per each of them. Also, it's possible to upload firmware to the target device. In this case, you need to pass the additional option --project-option="targets=upload". What's more, you can specify a custom upload port using --project-option="upload_port=<port>" option. See platformio ci --project-option for details.

Options

  • -l, --lib — Source code which will be copied to <BUILD_DIR>/lib directly.

If platformio ci --lib is a path to a file (not to a directory), then PlatformIO will create a temporary directory within <BUILD_DIR>/lib and copy the rest of the files into it.

  • --exclude — Exclude directories and/-or files from platformio ci --build-dir. The path must be relative to the PlatformIO project within platformio ci --build-dir.

For example, exclude from the project src directory:

  • examples folder
  • *.h files from foo folder
platformio ci --exclude=src/examples --exclude=src/foo/*.h [SRC]
  • -b, --board — Build the project with automatically pre-generated environments based on board settings.

For more details please look into platformio project init --board.

  • --build-dir — Path to the directory where PlatformIO will initialise the new project. By default it's a temporary directory within your operating system.
NOTE: This directory will be removed at the end of the build process. If you want to keep it, please use platformio ci --keep-build-dir.
  • --keep-build-dir — Don't remove platformio ci --build-dir after the build process. 💅
  • -c, --project-conf — Build the project using a pre-configured projectconf.
  • -O, --project-option — Pass additional options from projectconf to the cmd_project_init command. For example, automatically install dependent libraries platformio ci --project-option="lib_deps=ArduinoJSON" or ignore a specific library platformio ci --project-option="lib_ignore=SomeLib".
NOTE: Use multiple --project-option to pass multiple options to projectconf. One option per one argument. For example, platformio ci --project-option="build_unflags = -std=gnu++11" --project-option="build_flags = -std=c++14"
  • -v, --verbose — Shows detailed information when processing environments.

This option can also be set globally using the setting_force_verbose setting or by environment variable PLATFORMIO_SETTING_FORCE_VERBOSE.

Examples

For the other examples, please follow to the ci page. 🦋


✨ platformio debug ✨

Helper command for <code>piodebug</code>. 💅

Contents

  • platformio debug
    • Usage
    • Description
    • Options
    • Examples

Usage

platformio debug [OPTIONS]
pio debug [OPTIONS]

# A binary shortcut for "platformio debug --interface=gdb" command
piodebuggdb [GDB OPTIONS]

Description

Prepare your PlatformIO project for debugging, or launch the debug server. Main character energy only. 👑

Options

  • -e, --environment — Debug specified environments.

You can also specify which environments should be used for debugging by default using the projectconf_pio_default_envs option from projectconf.

  • -d, --project-dir — Specify the path to a project directory. By default, --project-dir is equal to the current working directory (CWD).
  • -c, --project-conf — Process the project with a custom projectconf.

New in version 4.0. ✨

  • --interface — PIO Debugging Interface. Valid values:
    • gdb - GDB: The GNU Project Debugger
  • -v, --verbose — Shows detailed information when processing environments.

This option can also be set globally using the setting_force_verbose setting or by environment variable PLATFORMIO_SETTING_FORCE_VERBOSE.

Examples

  1. Prepare a project for debugging
> platformio debug
[Sun Apr 30 01:34:01 2017] Processing mzeropro (platform: atmelsam; debug_extra_cmds: b main.cpp:26; board: mzeropro; framework: arduino)
----------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Collected 26 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pio/build/mzeropro/src/main.o
Compiling .pio/build/mzeropro/FrameworkArduinoVariant/variant.o
Compiling .pio/build/mzeropro/FrameworkArduino/IPAddress.o
Compiling .pio/build/mzeropro/FrameworkArduino/Print.o
Archiving .pio/build/mzeropro/libFrameworkArduinoVariant.a
Indexing .pio/build/mzeropro/libFrameworkArduinoVariant.a
...
Compiling .pio/build/mzeropro/FrameworkArduino/wiring_analog.o
Compiling .pio/build/mzeropro/FrameworkArduino/wiring_digital.o
Compiling .pio/build/mzeropro/FrameworkArduino/wiring_private.o
Compiling .pio/build/mzeropro/FrameworkArduino/wiring_shift.o
Archiving .pio/build/mzeropro/libFrameworkArduino.a
Indexing .pio/build/mzeropro/libFrameworkArduino.a
Linking .pio/build/mzeropro/firmware.elf
Calculating size .pio/build/mzeropro/firmware.elf
Building .pio/build/mzeropro/firmware.bin
text       data     bss     dec     hex filename
11512       256    1788   13556    34f4 .pio/build/mzeropro/firmware.elf
=========================== [SUCCESS] Took 7.82 seconds ===========================
  1. Launch GDB instance and load initial configuration per a project
> platformio debug --interface=gdb -x .pioinit

...
Loading section .text, size 0x2c98 lma 0x4000
Loading section .ramfunc, size 0x60 lma 0x6c98
Loading section .data, size 0x100 lma 0x6cf8
Start address 0x47b0, load size 11768
Transfer rate: 4 KB/sec, 3922 bytes/write.
target halted due to debug-request, current mode: Thread
xPSR: 0x81000000 pc: 0x000028f4 msp: 0x20002c00
target halted due to debug-request, current mode: Thread
xPSR: 0x81000000 pc: 0x000028f4 msp: 0x20002c00
Breakpoint 2 at 0x413a: file src/main.cpp, line 26.

🎮 Device Manager CLI

okay bestie, want the full menu of what this thing can do? just ask for help and it'll spill everything ✨ To print all available commands and options use:

pio device --help
platformio device --help
platformio device COMMAND --help

platformio device list

Contents

  • platformio device list
    • Usage
    • Description
    • Options
    • Examples

Usage

platformio device list [OPTIONS]
pio device list [OPTIONS]

Description

List available devices. 💅 Default is set to --serial and all available Serial Ports will be shown.

Options

  • --serial — List available Serial Ports, default. 🫶
  • --logical — List available logical devices.
  • --mdns — List multicast DNS services. 🦋
  • --json-output — Return the output in JSON format. ✨

Examples

  1. Unix OS 🌸
$ platformio device list
/dev/cu.SLAB_USBtoUART
----------
Hardware ID: USB VID:PID=10c4:ea60 SNR=0001
Description: CP2102 USB to UART Bridge Controller

/dev/cu.uart-1CFF4676258F4543
----------
Hardware ID: USB VID:PID=451:f432 SNR=1CFF4676258F4543
Description: Texas Instruments MSP-FET430UIF
  1. Windows OS 🪟
$ platformio device list
COM4
----------
Hardware ID: USB VID:PID=0451:F432
Description: MSP430 Application UART (COM4)

COM3
----------
Hardware ID: USB VID:PID=10C4:EA60 SNR=0001
Description: Silicon Labs CP210x USB to UART Bridge (COM3)
  1. List multicast DNS services and logical devices 🌈
$ platformio device list --mdns --logical
Multicast DNS Services
======================

PlatformIO._bttremote._tcp.local.
------------------------------
Type: _bttremote._tcp.local.
IP: ...
Port: 62941
Properties: ...

Time for PlatformIO._adisk._tcp.local.
---------------------------------
Type: _adisk._tcp.local.
IP: 192.168.0.1
Port: 9
Properties: ...

PlatformIO._ssh._tcp.local.
------------------------
Type: _ssh._tcp.local.
IP: ...
Port: 22

PlatformIO._sftp-ssh._tcp.local.
-----------------------------
Type: _sftp-ssh._tcp.local.
IP: ...
Port: 22

Logical Devices
===============
/
-
Name:

/Volumes/PIO
-------------
Name: PIO

/Volumes/PLUS
--------------
Name: PLUS

platformio device monitor

Contents

  • platformio device monitor
    • Usage
    • Description
    • Options
    • Filters
    • Capture output to a file
    • Device Monitor Filter API
    • Examples

Usage

platformio device monitor [OPTIONS]

Description

This is a console application that provides a small terminal application. 💖 It is based on Miniterm and itself does not implement any terminal features such as VT102 compatibility. However it inherits these features from the terminal it is run. For example on GNU/Linux running from an xterm it will support the escape sequences of the xterm. On Windows the typical console window is dumb and does not support any escapes. When ANSI.sys is loaded it supports some escapes.

Miniterm supports RFC 2217 remote serial ports and raw sockets using URL Handlers such as rfc2217://<host>:<port> respectively socket://<host>:<port> as port argument when invoking. 🦋

To control monitor please use these "hot keys":

  • Ctrl+C Quit
  • Ctrl+T Menu
  • Ctrl+T followed by Ctrl+H Help

Options

  • -p, --port — Port, a number or a device name, or valid URL Handlers.

Can be customized in projectconf using projectconf_monitor_port option.

URL Handlers

  • rfc2217://<host>:<port>[?<option>[&<option>...]]
  • socket://<host>:<port>[?logging={debug|info|warning|error}]
  • loop://[?logging={debug|info|warning|error}]
  • hwgrep://<regexp>[&skip_busy][&n=N]
  • spy://port[?option[=value][&option[=value]]]
  • alt://port?class=<classname>
  • -b, --baud — Set baud rate, default 9600. 🌸

Can be customized in projectconf using projectconf_monitor_speed option.

  • --parity — Set parity (None, Even, Odd, Space, Mark), one of [N, E, O, S, M], default N
  • --rtscts — Enable RTS/CTS flow control, default Off
  • --xonxoff — Enable software flow control, default Off
  • --rts — Set initial RTS line state (0 or 1).

Can be customized in projectconf using projectconf_monitor_rts option.

  • --dtr — Set initial DTR line state (0 or 1).

Can be customized in projectconf using projectconf_monitor_dtr option.

  • --echo — Enable local echo, default Off
  • --encoding — Set the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default UTF-8.
  • -f, --filter — Add text transformation. See available filters at Filters. ✨
  • --eol — End of line mode (CR, LF or CRLF), default CRLF

NEW: Available in Miniterm/PySerial 3.0

  • --raw — Do not apply any encodings/transformations
  • --exit-char — ASCII code of special character that is used to exit the application, default 3 (DEC, Ctrl+C).

For example, to use Ctrl+] run platformio device monitor --exit-char 29. 🫶

  • --menu-char — ASCII code of special character that is used to control miniterm (menu), default 20 (DEC)
  • ---quiet — Diagnostics: suppress non-error messages, default Off
yes bestie, that's three dashes. we didn't invent it, that's literally what the page says 💀 keep it exactly as written.
  • -d, --project-dir — Specify the path to project directory. By default, --project-dir is equal to current working directory (CWD).
  • -e, --environment — Process specified environments. 🌈

You can also specify which environments should be processed by default using projectconf_pio_default_envs option from projectconf.

Filters

New in version 4.3. 🎀

Okay so bestie, here's the whole menu of filters you can slap onto your monitor output — you use them with platformio device monitor --filter, or you just drop them into your config with the projectconf and projectconf_monitor_filters options. Pick your fighters:

  • default — strips out the typical terminal control codes from the input. The basic cleanup queen 💅
  • colorize — different colors for what you received vs. what you echoed back. Aesthetic AND useful, we love
  • debug — prints literally everything, both what's sent and what's received. Nosy in the best way 🙈
  • direct — does absolutely nothing, forwards all data unchanged. Do-nothing icon, and honestly? Valid.
  • hexlify — shows you a hexadecimal representation of the data (the code point of each character). For when you need to see the raw ✨truth✨
  • log2file — logs your data to a file named "platformio-device-monitor-%date%.log" sitting in the current working directory 📝
  • nocontrol — removes all control codes, including CR+LF. Yes, even the line breaks, no survivors 💀
  • printable — shows the decimal code for every non-ASCII character and swaps out most of the control codes
  • time — adds a timestamp with milliseconds to every new line ⏰
  • send_on_enter — sends a text to the device when you hit ENTER
  • esp32_exception_decoder — a custom filter for platform_espressif32 that decodes crash exceptions 🔥
  • esp8266_exception_decoder — a custom filter for platform_espressif8266 that decodes crash exceptions 🔥

🎀 Capture output to a file

New in version 4.3.

You gotta use the log2file filter from the Filters list above, bestie:

$ platformio device monitor -f log2file -f default

Or you can set it up through projectconf and projectconf_monitor_filters:

[env:log_output_to_file]
...
platform = ...
monitor_filters = log2file, default

🧚 Device Monitor Filter API

piocore hands you an API so you can extend the device monitor with your own custom filter — you declare it in the "monitor" folder of platforms. Peep these examples:


✨ Examples ✨

  1. Show available options for the monitor:
$ platformio device monitor --help
Usage: platformio device monitor [OPTIONS]

Options:
  -p, --port TEXT       Port, a number or a device name
  -b, --baud INTEGER    Set baud rate, default=9600
  --parity [N|E|O|S|M]  Set parity, default=N
  --rtscts              Enable RTS/CTS flow control, default=Off
  --xonxoff             Enable software flow control, default=Off
  --rts [0|1]           Set initial RTS line state, default=0
  --dtr [0|1]           Set initial DTR line state, default=0
  --echo                Enable local echo, default=Off
  --encoding TEXT       Set the encoding for the serial port (e.g. Latin1, UTF-8), default: UTF-8
  -f, --filter TEXT     Add filters / text transformation
  --eol [CR|LF|CRLF]    End of line mode, default=CRLF
  --raw                 Do not apply any encodings/transformations
  --exit-char INTEGER   ASCII code of special character that is used to exit the application, default=29 (DEC)
  --menu-char INTEGER   ASCII code of special character that is used to control miniterm (menu), default=20 (DEC)
  --quiet               Diagnostics: suppress non-error messages, default=Off
  -h, --help            Show this message and exit.
  1. Communicate with a serial device and print help inside the terminal:
$ platformio device monitor

--- Available ports:
--- /dev/cu.Bluetooth-Incoming-Port n/a
--- /dev/cu.Bluetooth-Modem n/a
--- /dev/cu.SLAB_USBtoUART CP2102 USB to UART Bridge Controller
--- /dev/cu.obd2ecu-SPPDev n/a
Enter port name:/dev/cu.SLAB_USBtoUART
--- Miniterm on /dev/cu.SLAB_USBtoUART: 9600,8,N,1 ---
--- Quit: Ctrl+C  |  Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
Hello PlatformIO!
---
--- Ctrl+]   Exit program
--- Ctrl+T   Menu escape key, followed by:
--- Menu keys:
---    Ctrl+T  Send the menu character itself to remote
---    Ctrl+]  Send the exit character itself to remote
---    Ctrl+I  Show info
---    Ctrl+U  Upload file (prompt will be shown)
--- Toggles:
---    Ctrl+R  RTS       Ctrl+E  local echo
---    Ctrl+D  DTR       Ctrl+B  BREAK
---    Ctrl+L  line feed  Ctrl+A  Cycle repr mode
---
--- Port settings (Ctrl+T followed by the following):
---    p          change port
---    7 8        set data bits
---    n e o s m  change parity (None, Even, Odd, Space, Mark)
---    1 2 3      set stop bits (1, 2, 1.5)
---    b          change baud rate
---    x X        disable/enable software flow control
---    r R        disable/enable hardware flow control
--- exit ---

🏠 platformio home

A lil helper command for piohome, bestie.

📋 Contents

  • platformio home
    • Usage
    • Description
    • Options
    • Examples

🚀 Usage

platformio home
pio home

💬 Description

Launches the piohome Web-server. That's it, that's the whole vibe. ✨

⚙️ Options

  • --port — the Web-server HTTP port. Default is 8008, no cap.
  • --host — the Web-server HTTP host. Default is 127.0.0.1. If you wanna open PIO Home for inbound connections, use host 0.0.0.0 (yes she's brave, she's iconic 💅).
  • --no-open — do NOT automatically open PIO Home in a system Web-browser. For when you're too cool for pop-ups.
  • --shutdown-timeout — automatically shutdown server on timeout (in seconds) when no clients are connected. Default is 0, which means never auto shutdown. She waits forever, loyal queen. 👑

🎀 Examples

> platformio home

  ___I_
 /\-_--\   PlatformIO Home
/  \_-__\
|[]| [] |  http://127.0.0.1:8008
|__|____|_______________________

Open PIO Home in your browser by this URL => http://127.0.0.1:8008
PIO Home has been started. Press Ctrl+C to shutdown.

📚 Library Manager CLI

🚀 Usage

platformio lib [OPTIONS] COMMAND

# To print all available commands and options use
platformio lib --help
platformio lib COMMAND --help

⚙️ Options

  • -d, --storage-dir — manage custom library storage. You can use it later for the projectconf_lib_extra_dirs option from projectconf. Multiple options are allowed (yes, stack 'em).
  • -g, --global — manage global PlatformIO's library storage ("projectconf_pio_core_dir/lib") where ldf will look for dependencies by default.
  • -e, --environment — manage libraries for the specific project build environments declared in projectconf. Works for --storage-dir which is a valid PlatformIO project.

🖼️ Demo

[image]

🧾 Commands


🧩 platformio lib builtin

📋 Contents

  • platformio lib builtin
    • Usage
    • Description
    • Options
    • Examples

🚀 Usage

platformio lib builtin [OPTIONS]
pio lib builtin [OPTIONS]

💬 Description

Lists built-in libraries based on installed platforms and their frameworks, SDKs, etc. It's giving "here's everything already in the box". 📦

⚙️ Options

  • --storage — list libraries from specified storages. For example, framework-arduinoavr.
  • --json-output — return the output in JSON format. For the machines. 🤖

🎀 Examples

> platformio lib builtin

framework-arduinoavr
********************

Bridge
======
Enables the communication between the Linux processor and the microcontroller. For Arduino/Genuino Yún, Yún Shield and TRE only.

Version: 1.6.1
Homepage: http://www.arduino.cc/en/Reference/YunBridgeLibrary
Keywords: communication
Compatible frameworks: arduino
Compatible platforms: *
Authors: Arduino

EEPROM
======
Enables reading and writing to the permanent board storage.

Version: 2.0
Homepage: http://www.arduino.cc/en/Reference/EEPROM
Keywords: data, storage
Compatible frameworks: arduino
Compatible platforms: atmelavr
Authors: Arduino, Christopher Andrews

...

framework-arduinosam
********************

Audio
=====
Allows playing audio files from an SD card. For Arduino DUE only.

Version: 1.0
Homepage: http://arduino.cc/en/Reference/Audio
Keywords: signal, input, output
Compatible frameworks: arduino
Compatible platforms: atmelsam
Authors: Arduino

...

framework-arduinoespressif32
****************************

SPI
===
Enables the communication with devices that use the Serial Peripheral Interface (SPI) Bus. For all Arduino boards, BUT Arduino DUE.

Version: 1.0
Homepage: http://arduino.cc/en/Reference/SPI
Keywords: signal, input, output
Compatible frameworks: arduino
Compatible platforms:
Authors: Hristo Gochkov

...

framework-arduinoespressif8266
******************************

ArduinoOTA
==========
Enables Over The Air upgrades, via wifi and espota.py UDP request/TCP download.

Version: 1.0
Keywords: communication
Compatible frameworks: arduino
Compatible platforms: espressif8266
Authors: Ivan Grokhotkov and Miguel Angel Ajo

DNSServer
=========
A simple DNS server for ESP8266.

Version: 1.1.0
Keywords: communication
Compatible frameworks: arduino
Compatible platforms: espressif8266
Authors: Kristijan Novoselić

...

framework-arduinointel
**********************

Adafruit NeoPixel
=================
Arduino library for controlling single-wire-based LED pixels and strip.

Version: 1.0.3
Homepage: https://github.com/adafruit/Adafruit_NeoPixel
Keywords: display
Compatible frameworks: arduino
Compatible platforms: *
Authors: Adafruit

CurieBLE
========
Library to manage the Bluetooth Low Energy module with Curie Core boards.

Version: 1.0
Keywords: communication
Compatible frameworks: arduino
Compatible platforms: intel_arc32
Authors: Emutex

CurieEEPROM
===========
Enables reading and writing to OTP flash area of Curie

Version: 1.0
Homepage: http://www.arduino.cc/en/Reference/EEPROM
Keywords: data, storage
Compatible frameworks: arduino
Compatible platforms: intel_arc32
Authors: Intel

...

framework-arduinomicrochippic32
*******************************

Firmata
=======
Enables the communication with computer apps using a standard serial protocol. For all Arduino boards.

Version: 2.4.4
Homepage: https://github.com/firmata/arduino
Keywords: device, control
Compatible frameworks: arduino
Compatible platforms: *
Authors: Firmata Developers

framework-arduinoteensy
***********************

Adafruit CC3000 Library
=======================
Library code for Adafruit's CC3000 WiFi breakouts.

Version: 1.0.1
Homepage: https://github.com/adafruit/Adafruit_CC3000_Library
Keywords: communication
Compatible frameworks: arduino
Compatible platforms: *
Authors: Adafruit

...

framework-energiamsp430
***********************

AIR430BoostEuropeETSI
=====================
Library for the CC110L Sub-1GHz radio BoosterPack for use in Europe

Version: 1.0.0
Homepage: http://energia.nu/reference/libraries/
Keywords: communication
Compatible frameworks: arduino
Compatible platforms:
Authors: Energia

...

framework-energiativa
*********************

aJson
=====
An Arduino library to enable JSON processing with Arduino

Keywords: json, rest, http, web
Compatible frameworks: arduino
Compatible platforms: atmelavr

📥 platformio lib install

📋 Contents

  • platformio lib install
    • Usage
    • Description
    • Storage Options
    • Options
    • Version control
      • Git
      • Mercurial
      • Subversion
    • Examples

🚀 Usage

platformio lib [STORAGE_OPTIONS] install [OPTIONS] [LIBRARY...]
pio lib [STORAGE_OPTIONS] install [OPTIONS] [LIBRARY...]

# install all project dependencies declared via "lib_deps"
# (run it from a project root where is located "platformio.ini")
platformio lib install [OPTIONS]

# install project dependent library
# (run it from a project root where is located "platformio.ini")
platformio lib install [OPTIONS] [LIBRARY...]

# install dependencies for the specific project build environment
# (run it from a project root where is located "platformio.ini")
platformio lib -e myenv install [OPTIONS] [LIBRARY...]
platformio lib -d /path/to/platformio/project -e myenv install [OPTIONS] [LIBRARY...]

# install to global storage
platformio lib --global install [OPTIONS] [LIBRARY...]
platformio lib -g install [OPTIONS] [LIBRARY...]

# install to custom storage
platformio lib --storage-dir /path/to/dir install [OPTIONS] [LIBRARY...]
platformio lib -d /path/to/dir1 -d /path/to/dir2 install [OPTIONS] [LIBRARY...]

# [LIBRARY...] forms
platformio lib [STORAGE_OPTIONS] install (with no args, project dependencies)
platformio lib [STORAGE_OPTIONS] install <id>
platformio lib [STORAGE_OPTIONS] install id=<id>
platformio lib [STORAGE_OPTIONS] install <id>@<version>
platformio lib [STORAGE_OPTIONS] install <id>@<version range>
platformio lib [STORAGE_OPTIONS] install <name>
platformio lib [STORAGE_OPTIONS] install <name>@<version>
platformio lib [STORAGE_OPTIONS] install <name>@<version range>
platformio lib [STORAGE_OPTIONS] install <zip or tarball url>
platformio lib [STORAGE_OPTIONS] install file://<zip or tarball file>
platformio lib [STORAGE_OPTIONS] install file://<folder>
platformio lib [STORAGE_OPTIONS] install <repository>
platformio lib [STORAGE_OPTIONS] install <name>=<repository> (name it should have locally)
platformio lib [STORAGE_OPTIONS] install <repository#tag> ("tag" can be commit, branch or tag)
WARNING: If some libraries are not visible in pioide and Code Completion or Code Linting does not work properly, please perform - Atom: "Menu: PlatformIO > Rebuild C/C++ Project Index (Autocomplete, Linter)" - VSCode: "Menu: View > Command Palette... > PlatformIO: Rebuild C/C++ Project Index"

💬 Description

Install a library, and any libraries that it depends on using:

  1. Library id or name from PlatformIO Library Registry
  2. Custom folder, repository or archive.

The version supports Semantic Versioning (<major>.<minor>.<patch>) and can take any of the following forms:

  • 1.2.3 — an exact version number. Use only this exact version. Periodt.
  • ^1.2.3 — any compatible version (exact version for 1.x.x versions)
  • ~1.2.3 — any version with the same major and minor versions, and an equal or greater patch version
  • >1.2.3 — any version greater than 1.2.3. >=, <, and <= are also possible
  • >0.1.0,!=0.2.0,<0.3.0 — any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0

PlatformIO supports installing from local directory or archive. Need to use file:// prefix before local path. Also, directory or archive should contain .library.json manifest (see library_config). 💖

  • file:///local/path/to/the/platform/dir
  • file:///local/path/to/the/platform.zip
  • file:///local/path/to/the/platform.tar.gz

🗄️ Storage Options

See base options for cmd_lib.

⚙️ Options

  • --save — save installed libraries into the projectconf dependency list (projectconf_lib_deps).

You can save libraries for the specific project environment using the -e, --environment option from the platformio lib command. Like, for example: platformio lib -e myenv install [LIBRARY...]. ✨

  • -s, --silent — hush hush, no progress reporting at all 🙈
  • --interactive — lets you actually pick a choice for every prompt instead of it just doing whatever
  • -f, --force — reinstall/redownload the library even if it's already sitting there. it said what it said 💅

🦋 Version control 🦋

PlatformIO is down to install from Git, Mercurial and Subversion, and it figures out which VCS you mean by peeping the url prefixes: "git+", "hg+", or "svn+". iykyk 🌸

NOTE: PlatformIO needs a working VCS command on your path — so like, git, hg or svn. no command, no install, bestie 😭

✨ Git ✨

The supported schemes are: git, git+https and git+ssh. Here are the supported forms:

Passing branch names, a commit hash or a tag name is possible like so:

🧚 Mercurial 🧚

The supported schemes are: hg+http, hg+https and hg+ssh. Here are the supported forms:

Passing branch names, a commit hash or a tag name is possible like so:

💜 Subversion 💜

The supported schemes are: svn, svn+svn, svn+http, svn+https and svn+ssh. Here are the supported forms:

You can also give specific revisions to an SVN URL, like so:

  • svn+svn://svn.server.org/my-library#13

🌈 Examples 🌈

  1. Install the latest version of library to a global storage using ID or NAME
> platformio lib -g install 4

Library Storage: /storage/dir/...
LibraryManager: Installing id=4
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
IRremote @ 2.2.1 has been successfully installed!

# repeat command with name
> platformio lib -g install IRRemote

Library Storage: /storage/dir/...
Looking for IRRemote library in registry
Found: https://platformio.org/lib/show/4/IRremote
LibraryManager: Installing id=4
IRremote @ 2.2.1 is already installed
  1. Install specified version of a library to a global storage
> platformio lib -g install ArduinoJson@5.6.7

Library Storage: /storage/dir/...
Looking for ArduinoJson library in registry
Found: https://platformio.org/lib/show/64/ArduinoJson
LibraryManager: Installing id=64 @ 5.6.7
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
ArduinoJson @ 5.6.7 has been successfully installed!
  1. Install library with dependencies to custom storage
> platformio lib --storage-dir /my/storage/dir install DallasTemperature

Library Storage: /my/storage/dir
Looking for DallasTemperature library in registry
Found: https://platformio.org/lib/show/54/DallasTemperature
LibraryManager: Installing id=54
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
DallasTemperature @ 3.7.7 has been successfully installed!
Installing dependencies
Looking for OneWire library in registry
Found: https://platformio.org/lib/show/1/OneWire
LibraryManager: Installing id=1
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
OneWire @ 8fd2ebfec7 has been successfully installed!
  1. Install ARM mbed library to the global storage
> platformio lib -g install https://developer.mbed.org/users/simon/code/TextLCD/

Library Storage: /storage/dir/...
LibraryManager: Installing TextLCD
Mercurial Distributed SCM (version 3.8.4)
(see https://mercurial-scm.org for more information)

Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 18 changes to 6 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
TextLCD @ 308d188a2d3a has been successfully installed!
  1. Install from archive using URL
> platformio lib -g install  https://github.com/adafruit/DHT-sensor-library/archive/master.zip

Library Storage: /storage/dir/...
LibraryManager: Installing master
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
DHT sensor library @ 1.2.3 has been successfully installed!

👑 platformio lib list 👑

🎀 Contents 🎀

  • platformio lib list
    • Usage
    • Description
    • Storage Options
    • Options
    • Examples

✨ Usage ✨

platformio lib [STORAGE_OPTIONS] list [OPTIONS]
pio lib [STORAGE_OPTIONS] list [OPTIONS]

# list project dependent libraries
# (run it from a project root where is located "platformio.ini")
platformio lib list [OPTIONS]

# list libraries from global storage
platformio lib --global list [OPTIONS]
platformio lib -g list [OPTIONS]

# list libraries from custom storage
platformio lib --storage-dir /path/to/dir list [OPTIONS]
platformio lib -d /path/to/dir list [OPTIONS]

🌸 Description 🌸

List installed libraries. that's it, that's the whole job, and it ate 💅

🦋 Storage Options 🦋

See base options for cmd_lib.

💖 Options 💖

  • --json-output — return the output in JSON format, for when you want your machine bestie to read it instead of your eyeballs

⭐ Examples ⭐

> platformio lib -g list

Library Storage: /storage/dir/...

Adafruit Unified Sensor
=======================
#ID: 31
Required for all Adafruit Unified Sensor based libraries.

Version: 1.0.2
Keywords: sensors
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32, nordicnrf51, teensy, timsp430
Authors: Adafruit

ArduinoJson
===========
#ID: 64
An elegant and efficient JSON library for embedded systems

Version: 5.8.0
Keywords: web, json, http, rest
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32, nordicnrf51, teensy, timsp430
Authors: Benoit Blanchon

ArduinoJson
===========
#ID: 64
An elegant and efficient JSON library for embedded systems

Version: 5.6.7
Keywords: web, json, http, rest
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32, nordicnrf51, teensy, timsp430
Authors: Benoit Blanchon

ArduinoJson
===========
#ID: 64
An elegant and efficient JSON library for embedded systems

Version: 5.7.2
Keywords: web, json, http, rest
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32, nordicnrf51, teensy, timsp430
Authors: Benoit Blanchon

Blynk
=====
#ID: 415
Build a smartphone app for your project in minutes. Blynk allows creating IoT solutions easily. It supports  WiFi, BLE, Bluetooth, Ethernet, GSM, USB, Serial. Works with many boards like ESP8266, ESP32, Arduino UNO, Nano, Due, Mega, Zero, MKR100, Yun, Raspberry Pi, Particle, Energia, ARM mbed, Intel Edison/Galileo/Joule, BBC micro:bit, DFRobot, RedBearLab, Microduino, LinkIt ONE ...

Version: 0.4.3
Homepage: http://blynk.cc
Keywords: control, gprs, protocol, communication, app, bluetooth, serial, cloud, web, usb, m2m, ble, 3g, smartphone, http, iot, device, sensors, data, esp8266, mobile, wifi, ethernet, gsm
Compatible frameworks: energia, wiringpi, arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, linux_arm, microchippic32, nordicnrf51, teensy, timsp430, titiva
Authors: Volodymyr Shymanskyy

Bounce2
=======
#ID: 1106
Debouncing library for Arduino or Wiring

Version: 2.1
Keywords: input, signal, output, bounce
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32, nordicnrf51, teensy, timsp430
Authors: Thomas O Fredericks

Homie
=====
#ID: 555
ESP8266 framework for Homie, a lightweight MQTT convention for the IoT

Version: 1.5.0
Keywords: home, mqtt, iot, esp8266, automation
Compatible frameworks: arduino
Compatible platforms: espressif8266
Authors: Marvin Roger

JustWifi
========
#ID: 1282
Wifi Manager for ESP8266 that supports multiple wifi networks and scan for strongest signal

Version: 1.1.1
License: GPL-3.0
Keywords: manager, wifi, scan
Compatible frameworks: arduino
Compatible platforms: espressif8266
Authors: Xose Perez

LiquidCrystal
=============
#ID: 136
LiquidCrystal Library is faster and extensable, compatible with the original LiquidCrystal library

Version: 1.3.4
Keywords: lcd, hd44780
Compatible frameworks: arduino
Compatible platforms: atmelavr
Authors: F Malpartida

TextLCD
=======
hg+https://developer.mbed.org/users/simon/code/TextLCD/

Version: 308d188a2d3a
Keywords: uncategorized

Time
====
#ID: 44
Time keeping library

Version: 1.5
Homepage: http://playground.arduino.cc/Code/Time
Keywords: week, rtc, hour, year, month, second, time, date, day, minute
Compatible frameworks: arduino
Compatible platforms:
Authors: Michael Margolis, Paul Stoffregen

Timezone
========
#ID: 76
Arduino library to facilitate time zone conversions and automatic daylight saving (summer) time adjustments
Version: 510ae2f6b6
Keywords: zone, time
Compatible frameworks: arduino
Compatible platforms: atmelavr
Authors: Jack Christensen

and the library list just keeps going, bestie, we're not done yet 💅

U8g2
====
#ID: 942
Monochrome LCD, OLED and eInk Library. Display controller: SSD1305, SSD1306, SSD1322, SSD1325, SSD1327, SSD1606, SH1106, T6963, RA8835, LC7981, PCD8544, PCF8812, UC1604, UC1608, UC1610, UC1611, UC1701, ST7565, ST7567, NT7534, ST7920, LD7032, KS0108. Interfaces: I2C, SPI, Parallel.

Version: 2.11.4
Homepage: https://github.com/olikraus/u8g2
Keywords: display
Compatible frameworks: arduino
Compatible platforms: atmelavr, atmelsam, espressif8266, intel_arc32, microchippic32, nordicnrf51, teensy, timsp430
Authors: oliver
USB-Host-Shield-20
==================
#ID: 59
Revision 2.0 of MAX3421E-based USB Host Shield Library

Version: 1.2.1
License: GPL-2.0
Keywords: usb, spp, mass storage, pl2303, acm, ftdi, xbox, host, hid, wii, buzz, ps3, bluetooth, adk, ps4
Compatible frameworks: spl, arduino
Compatible platforms: atmelavr, atmelsam, teensy, nordicnrf51, ststm32
Authors: Oleg Mazurov, Alexei Glushchenko, Kristian Lauszus, Andrew Kroll

🎀 platformio lib register 🎀

Contents

  • platformio lib register
    • Usage
    • Description
    • Examples

Usage

platformio lib register [MANIFEST_URL]
pio lib register [MANIFEST_URL]

Description

okay so this is the glow-up button for your library ✨ it registers a new library in the PlatformIO Library Registry.

And the Registry is not picky, bestie — it's giving very accepting queen 👑 here's the manifest formats it will happily swallow:

  • PlatformIO library_config
  • Arduino library.properties
  • ARM mbed yotta module.json

Examples

platformio lib register https://raw.githubusercontent.com/bblanchon/ArduinoJson/master/library.json
platformio lib register https://raw.githubusercontent.com/adafruit/DHT-sensor-library/master/library.properties
platformio lib register https://raw.githubusercontent.com/ARMmbed/ble/master/module.json

Contents

  • platformio lib search
    • Usage
    • Description
    • Options
    • Examples

Usage

platformio lib search [OPTIONS] [QUERY]
pio lib search [OPTIONS] [QUERY]

Description

This one searches the PlatformIO Library Registry for a library, matching on library_config fields, in the boolean mode. Fr fr, it's a whole search engine in your terminal 🧚

The boolean search capability supports these operators, and yes we're listing every single one because they all matter:

  • + — a leading or trailing plus sign indicates that this word must be present in the library fields that are returned.
  • - — a leading or trailing minus sign indicates that this word must not be present in any of the libraries that are returned.
  • (no operator) — by default (when neither + nor - is specified), the word is optional, but the libraries that contain it are rated higher.
  • >, < — these two operators change a word's contribution to the relevance value that is assigned to a library. The > operator increases the contribution and the < operator decreases it.
  • ( ) — parentheses group words into subexpressions. Parenthesized groups can be nested.
  • ~ — a leading tilde acts as a negation operator, causing the word's contribution to the library's relevance to be negative. This is useful for marking "noise" words. A library containing such a word is rated lower than others, but is not excluded altogether, as it would be with the - operator.
  • * — the asterisk serves as the truncation (or wildcard) operator. Unlike the other operators, it is appended to the word to be affected. Words match if they begin with the word preceding the * operator.
  • " — a phrase that is enclosed within double quote (") characters matches only libraries that contain the phrase literally, as it was typed.
For more detail information please go to MySQL Boolean Full-Text Searches.

Options

  • --id — filter libraries by registry ID
  • -n, --name — filter libraries by specified name (strict search)
  • -a, --author — filter libraries by specified author
  • -k, --keyword — filter libraries by specified keyword
  • -f, --framework — filter libraries by specified framework
  • -p, --platform — filter libraries by specified keyword
  • -i, --header — filter libraries by header file (include)

For example, platformio lib search --header "OneWire.h"

  • --json-output — return the output in JSON format
  • --page — manually paginate through search results. This option is useful in pair with --json-output.
not me pointing out that -p, --platform literally says "keyword" up there 👀 i'm just the messenger, i did not write this, and i did not fix it either 💀

Examples

  1. List all libraries
> platformio lib search

Found N libraries:

ArduinoJson
===========
#ID: 64
An elegant and efficient JSON library for embedded systems

Keywords: web, json, http, rest
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Microchip PIC32, Nordic nRF51, Teensy, TI MSP430
Authors: Benoit Blanchon

DHT sensor library
==================
#ID: 19
Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors

Keywords: unified, dht, sensor, temperature, humidity
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Adafruit Industries

PubSubClient
============
#ID: 89
A client library for MQTT messaging. MQTT is a lightweight messaging protocol ideal for small devices. This library allows you to send and receive MQTT messages. It supports the latest MQTT 3.1.1 protocol and can be configured to use the older MQTT 3.1...

Keywords: ethernet, mqtt, iot, m2m
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Microchip PIC32, Nordic nRF51, Teensy, TI MSP430
Authors: Nick O'Leary

...

ESPAsyncWebServer
=================
#ID: 306
Asynchronous HTTP and WebSocket Server Library for ESP8266 and ESP32

Keywords: async, websocket, http, webserver
Compatible frameworks: Arduino
Compatible platforms: Espressif 8266
Authors: Hristo Gochkov

Show next libraries? [y/N]:
...
  1. Search for 1-Wire libraries
> platformio lib search "1-wire"

Found N libraries:

DS1820
======
#ID: 196
Dallas / Maxim DS1820 1-Wire library. For communication with multiple DS1820 on a single 1-Wire bus. Also supports DS18S20 and DS18B20.

Keywords: ds18s20, 1-wire, ds1820, ds18b20
Compatible frameworks: mbed
Compatible platforms: Freescale Kinetis, Nordic nRF51, NXP LPC, ST STM32, Teensy
Authors: Michael Hagberg

OneWire
=======
#ID: 1
Control 1-Wire protocol (DS18S20, DS18B20, DS2408 and etc)

Keywords: onewire, temperature, bus, 1-wire, ibutton, sensor
Compatible frameworks: Arduino
Compatible platforms:
Authors: Paul Stoffregen, Jim Studt, Tom Pollard, Derek Yerger, Josh Larios, Robin James, Glenn Trewitt, Jason Dangel, Guillermo Lovato, Ken Butcher, Mark Tillotson, Bertrik Sikken, Scott Roberts

Show next libraries? [y/N]:
...
  1. Search for Arduino-based "I2C" libraries

bestie it just keeps going 💅 and honestly? the lib search examples are everything. watch this:

> platformio lib search "i2c" --framework="arduino"

Found N libraries:

I2Cdevlib-AK8975
================
#ID: 10
AK8975 is 3-axis electronic compass IC with high sensitive Hall sensor technology

Keywords: i2c, i2cdevlib, sensor, compass
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Jeff Rowberg

I2Cdevlib-Core
==============
#ID: 11
The I2C Device Library (I2Cdevlib) is a collection of uniform and well-documented classes to provide simple and intuitive interfaces to I2C devices.

Keywords: i2cdevlib, i2c
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Jeff Rowberg

Adafruit 9DOF Library
=====================
#ID: 14
Unified sensor driver for the Adafruit 9DOF Breakout (L3GD20 / LSM303)

Keywords: magnetometer, unified, accelerometer, spi, compass, i2c, sensor, gyroscope
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Adafruit Industries

Show next libraries? [y/N]:
...
  1. Wanna search by the keywords "web" and "http"? slay, say less:
> platformio lib search --keyword="web" --keyword="http"

Found N libraries:

ArduinoJson
===========
#ID: 64
An elegant and efficient JSON library for embedded systems

Keywords: web, json, http, rest
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Microchip PIC32, Nordic nRF51, Teensy, TI MSP430
Authors: Benoit Blanchon

ESPAsyncWebServer
=================
#ID: 306
Asynchronous HTTP and WebSocket Server Library for ESP8266 and ESP32

Keywords: async, websocket, http, webserver
Compatible frameworks: Arduino
Compatible platforms: Espressif 8266
Authors: Hristo Gochkov

ESP8266wifi
===========
#ID: 1101
ESP8266 Arduino library with built in reconnect functionality

Keywords: web, http, wifi, server, client, wi-fi
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Jonas Ekstrand

Blynk
=====
#ID: 415
Build a smartphone app for your project in minutes. Blynk allows creating IoT solutions easily. It supports  WiFi, BLE, Bluetooth, Ethernet, GSM, USB, Serial. Works with many boards like ESP8266, ESP32, Arduino UNO, Nano, Due, Mega, Zero, MKR100, Yun,...

Keywords: control, gprs, protocol, communication, app, bluetooth, serial, cloud, web, usb, m2m, ble, 3g, smartphone, http, iot, device, sensors, data, esp8266, mobile, wifi, ethernet, gsm
Compatible frameworks: Arduino, Energia, WiringPi
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Linux ARM, Microchip PIC32, Nordic nRF51, Teensy, TI MSP430, TI Tiva
Authors: Volodymyr Shymanskyy

Show next libraries? [y/N]:
...
  1. Now let's vibe-check by author 🫶 searching for "Adafruit Industries":
> platformio lib search --author="Adafruit Industries"

Found N libraries:

DHT sensor library
==================
#ID: 19
Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors

Keywords: unified, dht, sensor, temperature, humidity
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Adafruit Industries

Adafruit DHT Unified
====================
#ID: 18
Unified sensor library for DHT (DHT11, DHT22 and etc) temperature and humidity sensors

Keywords: unified, dht, sensor, temperature, humidity
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Adafruit Industries

Show next libraries? [y/N]:
...
  1. Looking for libs that play nice with Dallas temperature sensors like DS18B20, DS18S20 and friends? say no more:
> platformio lib search "DS*"

Found N libraries:

DS1820
======
#ID: 196
Dallas / Maxim DS1820 1-Wire library. For communication with multiple DS1820 on a single 1-Wire bus. Also supports DS18S20 and DS18B20.

Keywords: ds18s20, 1-wire, ds1820, ds18b20
Compatible frameworks: mbed
Compatible platforms: Freescale Kinetis, Nordic nRF51, NXP LPC, ST STM32, Teensy
Authors: Michael Hagberg

I2Cdevlib-DS1307
================
#ID: 99
The DS1307 serial real-time clock (RTC) is a low-power, full binary-coded decimal (BCD) clock/calendar plus 56 bytes of NV SRAM

Keywords: i2cdevlib, clock, i2c, rtc, time
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Jeff Rowberg

Show next libraries? [y/N]:
...
  1. Hunting for Energia-based nRF24 or HttpClient libs? okay so the query below reads like energia nRF24 OR energia HttpClient — it's giving boolean energy 🔥:
> platformio lib search "+(nRF24 HttpClient)" --framework="arduino"

Found N libraries:

RadioHead
=========
#ID: 124
The RadioHead Packet Radio library which provides a complete object-oriented library for sending and receiving packetized messages via RF22/24/26/27/69, Si4460/4461/4463/4464, nRF24/nRF905, SX1276/77/78, RFM95/96/97/98 and etc.

Keywords: rf, radio, wireless
Compatible frameworks: Arduino, Energia
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 32, Espressif 8266, Infineon XMC, Intel ARC32, Kendryte K210, Microchip PIC32, Nordic nRF51, Nordic nRF52, ST STM32, ST STM8, Teensy, TI MSP430, TI Tiva
Authors: Mike McCauley

ArduinoHttpClient
=================
#ID: 798
[EXPERIMENTAL] Easily interact with web servers from Arduino, using HTTP and WebSocket's.

Keywords: communication
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 32, Espressif 8266, Intel ARC32, Microchip PIC32, Nordic nRF51, Nordic nRF52, ST STM32, ST STM8, Teensy, TI MSP430
Authors: Arduino

HttpClient
==========
#ID: 66
Library to easily make HTTP GET, POST and PUT requests to a web server.

Keywords: communication
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 32, Espressif 8266, Intel ARC32, Microchip PIC32, Nordic nRF51, Nordic nRF52, ST STM32, Teensy, TI MSP430
Authors: Adrian McEwen

Show next libraries? [y/N]:
...
  1. And if you want all the sensor libs but excluding temperature? we gatekeep nothing here:
> platformio lib search "sensor -temperature"

Found N libraries:

SparkFun VL6180 Sensor
======================
#ID: 407
The VL6180 combines an IR emitter, a range sensor, and an ambient light sensor together for you to easily use and communicate with via an I2C interface.

Keywords: sensors
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 8266, Intel ARC32, Microchip PIC32, Nordic nRF51, Teensy, TI MSP430
Authors: Casey Kuhns@SparkFun, SparkFun Electronics

I2Cdevlib-AK8975
================
#ID: 10
AK8975 is 3-axis electronic compass IC with high sensitive Hall sensor technology

Keywords: i2c, i2cdevlib, sensor, compass
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Jeff Rowberg

Adafruit 9DOF Library
=====================
#ID: 14
Unified sensor driver for the Adafruit 9DOF Breakout (L3GD20 / LSM303)

Keywords: magnetometer, unified, accelerometer, spi, compass, i2c, sensor, gyroscope
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR
Authors: Adafruit Industries

Show next libraries? [y/N]:
...

platformio lib show 👑

Contents 🎀

  • platformio lib show
    • Usage
    • Description
    • Options
    • Examples

Usage ✨

platformio lib show [LIBRARY]
pio lib show [LIBRARY]

Description 🦋

Show detailed info about a library using PlatformIO Library Registry.

The possible values for [LIBRARY]:

  • Library ID from Registry (preferred) 👑
  • Library Name

Options 🌸

  • --json-output — Return the output in JSON format

Examples 💖

> platformio lib show OneWire

PubSubClient
============
#ID: 89
A client library for MQTT messaging. MQTT is a lightweight messaging protocol ideal for small devices. This library allows you to send and receive MQTT messages. It supports the latest MQTT 3.1.1 protocol and can be configured to use the older MQTT 3.1...

Version: 2.6, released 10 months ago
Manifest: https://raw.githubusercontent.com/ivankravets/pubsubclient/patch-2/library.json
Homepage: http://pubsubclient.knolleary.net
Repository: https://github.com/knolleary/pubsubclient.git

Authors
-------
Nick O'Leary https://github.com/knolleary

Keywords
--------
ethernet
mqtt
iot
m2m

Compatible frameworks
---------------------
Arduino

Compatible platforms
--------------------
Atmel AVR
Atmel SAM
Espressif 8266
Intel ARC32
Microchip PIC32
Nordic nRF51
Teensy
TI MSP430

Headers
-------
PubSubClient.h

Examples
--------
http://dl.platformio.org/libraries/examples/0/89/mqtt_auth.ino
http://dl.platformio.org/libraries/examples/0/89/mqtt_basic.ino
http://dl.platformio.org/libraries/examples/0/89/mqtt_esp8266.ino
http://dl.platformio.org/libraries/examples/0/89/mqtt_publish_in_callback.ino
http://dl.platformio.org/libraries/examples/0/89/mqtt_reconnect_nonblocking.ino
http://dl.platformio.org/libraries/examples/0/89/mqtt_stream.ino

Versions
--------
2.6, released 10 months ago

Downloads
---------
Today: 25
Week: 120
Month: 462

platformio lib stats 📊

Contents 🎀

  • platformio lib stats
    • Usage
    • Description
    • Options
    • Examples

Usage ✨

platformio lib stats
pio lib stats

Description 🦋

Show PlatformIO Library Registry statistics:

  • Recently updated
  • Recently added
  • Recent keywords
  • Popular keywords
  • Featured: Today
  • Featured: Week
  • Featured: Month

This information is the same that is shown on this page:

Options 🌸

  • --json-output — Return the output in JSON format

✨ Examples ✨

okay bestie so when you actually run a search, the output is so satisfying. it spits out a bunch of little curated lists for you, each one with a Name, a Date (or not, depending on the list), and a Url 💖 here's the full tea, section by section.

RECENTLY UPDATED — the fresh-glow-up girlies:

Name                     Date                    Url
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GroveEncoder             12 hours ago            https://platformio.org/lib/show/1382/GroveEncoder
RF24G                    12 hours ago            https://platformio.org/lib/show/1381/RF24G
Sim800L Library Revised  12 hours ago            https://platformio.org/lib/show/1380/Sim800L%20Library%20Revised
ArduinoSTL               12 hours ago            https://platformio.org/lib/show/750/ArduinoSTL
hd44780                  13 hours ago            https://platformio.org/lib/show/738/hd44780

RECENTLY ADDED — brand new to the function, no cap:

Name                     Date                    Url
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GroveEncoder             12 hours ago            https://platformio.org/lib/show/1382/GroveEncoder
RF24G                    12 hours ago            https://platformio.org/lib/show/1381/RF24G
Sim800L Library Revised  12 hours ago            https://platformio.org/lib/show/1380/Sim800L%20Library%20Revised
DS3231                   a day ago               https://platformio.org/lib/show/1379/DS3231
ArduboyPlaytune          4 days ago              https://platformio.org/lib/show/1378/ArduboyPlaytune

RECENT KEYWORDS — the keywords that just popped off:

Name                     Url
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cobs                     https://platformio.org/lib/search?query=keyword%3Acobs
packet                   https://platformio.org/lib/search?query=keyword%3Apacket
framing                  https://platformio.org/lib/search?query=keyword%3Aframing
3g                       https://platformio.org/lib/search?query=keyword%3A3g
tdd                      https://platformio.org/lib/search?query=keyword%3Atdd

POPULAR KEYWORDS — the main characters of keywords, lowkey iconic:

Name                     Url
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
display                  https://platformio.org/lib/search?query=keyword%3Adisplay
lcd                      https://platformio.org/lib/search?query=keyword%3Alcd
sensors                  https://platformio.org/lib/search?query=keyword%3Asensors
graphics                 https://platformio.org/lib/search?query=keyword%3Agraphics
communication            https://platformio.org/lib/search?query=keyword%3Acommunication
oled                     https://platformio.org/lib/search?query=keyword%3Aoled
tft                      https://platformio.org/lib/search?query=keyword%3Atft
control                  https://platformio.org/lib/search?query=keyword%3Acontrol
device                   https://platformio.org/lib/search?query=keyword%3Adevice
glcd                     https://platformio.org/lib/search?query=keyword%3Aglcd
displaycore              https://platformio.org/lib/search?query=keyword%3Adisplaycore
font                     https://platformio.org/lib/search?query=keyword%3Afont
other                    https://platformio.org/lib/search?query=keyword%3Aother
i2c                      https://platformio.org/lib/search?query=keyword%3Ai2c
input                    https://platformio.org/lib/search?query=keyword%3Ainput
signal                   https://platformio.org/lib/search?query=keyword%3Asignal
sensor                   https://platformio.org/lib/search?query=keyword%3Asensor
output                   https://platformio.org/lib/search?query=keyword%3Aoutput
spi                      https://platformio.org/lib/search?query=keyword%3Aspi
data                     https://platformio.org/lib/search?query=keyword%3Adata
timing                   https://platformio.org/lib/search?query=keyword%3Atiming
serial                   https://platformio.org/lib/search?query=keyword%3Aserial
temperature              https://platformio.org/lib/search?query=keyword%3Atemperature
http                     https://platformio.org/lib/search?query=keyword%3Ahttp
wifi                     https://platformio.org/lib/search?query=keyword%3Awifi
rf                       https://platformio.org/lib/search?query=keyword%3Arf
i2cdevlib                https://platformio.org/lib/search?query=keyword%3Ai2cdevlib
processing               https://platformio.org/lib/search?query=keyword%3Aprocessing
storage                  https://platformio.org/lib/search?query=keyword%3Astorage
radio                    https://platformio.org/lib/search?query=keyword%3Aradio
web                      https://platformio.org/lib/search?query=keyword%3Aweb
accelerometer            https://platformio.org/lib/search?query=keyword%3Aaccelerometer
wireless                 https://platformio.org/lib/search?query=keyword%3Awireless
protocol                 https://platformio.org/lib/search?query=keyword%3Aprotocol
server                   https://platformio.org/lib/search?query=keyword%3Aserver
wi-fi                    https://platformio.org/lib/search?query=keyword%3Awi-fi
ethernet                 https://platformio.org/lib/search?query=keyword%3Aethernet
mbed                     https://platformio.org/lib/search?query=keyword%3Ambed
openag                   https://platformio.org/lib/search?query=keyword%3Aopenag
led                      https://platformio.org/lib/search?query=keyword%3Aled
esp8266                  https://platformio.org/lib/search?query=keyword%3Aesp8266
humidity                 https://platformio.org/lib/search?query=keyword%3Ahumidity
time                     https://platformio.org/lib/search?query=keyword%3Atime
iot                      https://platformio.org/lib/search?query=keyword%3Aiot
json                     https://platformio.org/lib/search?query=keyword%3Ajson
timer                    https://platformio.org/lib/search?query=keyword%3Atimer
client                   https://platformio.org/lib/search?query=keyword%3Aclient
driver                   https://platformio.org/lib/search?query=keyword%3Adriver
button                   https://platformio.org/lib/search?query=keyword%3Abutton
mbed-official            https://platformio.org/lib/search?query=keyword%3Ambed-official

FEATURED: TODAY — the it-girls of right now:

Name                     Url
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PubSubClient             https://platformio.org/lib/show/89/PubSubClient
Adafruit Unified Sensor  https://platformio.org/lib/show/31/Adafruit%20Unified%20Sensor
DHT sensor library       https://platformio.org/lib/show/19/DHT%20sensor%20library
ESPAsyncUDP              https://platformio.org/lib/show/359/ESPAsyncUDP
NtpClientLib             https://platformio.org/lib/show/727/NtpClientLib
Embedis                  https://platformio.org/lib/show/408/Embedis
Blynk                    https://platformio.org/lib/show/415/Blynk
SimpleTimer              https://platformio.org/lib/show/419/SimpleTimer
Adafruit DHT Unified     https://platformio.org/lib/show/18/Adafruit%20DHT%20Unified
RTClib                   https://platformio.org/lib/show/83/RTClib

FEATURED: WEEK — this week's obsession, fr fr:

Name                     Url
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DHT sensor library       https://platformio.org/lib/show/19/DHT%20sensor%20library
Adafruit Unified Sensor  https://platformio.org/lib/show/31/Adafruit%20Unified%20Sensor
Blynk                    https://platformio.org/lib/show/415/Blynk
ESPAsyncWebServer        https://platformio.org/lib/show/306/ESPAsyncWebServer
Adafruit GFX Library     https://platformio.org/lib/show/13/Adafruit%20GFX%20Library
I2Cdevlib-Core           https://platformio.org/lib/show/11/I2Cdevlib-Core
TimeAlarms               https://platformio.org/lib/show/68/TimeAlarms
PubSubClient             https://platformio.org/lib/show/89/PubSubClient
Timer                    https://platformio.org/lib/show/75/Timer
esp8266_mdns             https://platformio.org/lib/show/1091/esp8266_mdns

FEATURED: MONTH — the ones that have been serving looks all month 💅:

Name                     Url
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ArduinoJson              https://platformio.org/lib/show/64/ArduinoJson
DHT sensor library       https://platformio.org/lib/show/19/DHT%20sensor%20library
Adafruit Unified Sensor  https://platformio.org/lib/show/31/Adafruit%20Unified%20Sensor
PubSubClient             https://platformio.org/lib/show/89/PubSubClient
OneWire                  https://platformio.org/lib/show/1/OneWire
ESPAsyncTCP              https://platformio.org/lib/show/305/ESPAsyncTCP
Time                     https://platformio.org/lib/show/44/Time
DallasTemperature        https://platformio.org/lib/show/54/DallasTemperature
ESPAsyncWebServer        https://platformio.org/lib/show/306/ESPAsyncWebServer
WifiManager              https://platformio.org/lib/show/567/WifiManager

platformio lib uninstall

✨ Contents ✨

  • platformio lib uninstall
    • Usage
    • Description
    • Storage Options
    • Examples

✨ Usage ✨

bestie here's the shape of it — same command, two spellings, and then three flavours depending on where the lib lives:

platformio lib [STORAGE_OPTIONS] uninstall [LIBRARY...]
pio lib [STORAGE_OPTIONS] uninstall [LIBRARY...]

# uninstall project dependent library
# (run it from a project root where is located "platformio.ini")
platformio lib uninstall [LIBRARY...]

# uninstall library from global storage
platformio lib --global uninstall [LIBRARY...]
platformio lib -g uninstall [LIBRARY...]

# uninstall library from custom storage
platformio lib --storage-dir /path/to/dir uninstall [LIBRARY...]
platformio lib -d /path/to/dir uninstall [LIBRARY...]
heads up: if you're going for the project-dependent one, you gotta be standing in a project root — the place where platformio.ini lives. no platformio.ini, no vibes. 🫶

💅 [LIBRARY...] forms

platformio lib [STORAGE_OPTIONS] uninstall <id>
platformio lib [STORAGE_OPTIONS] uninstall <id>@<version>
platformio lib [STORAGE_OPTIONS] uninstall <id>@<version range>
platformio lib [STORAGE_OPTIONS] uninstall <name>
platformio lib [STORAGE_OPTIONS] uninstall <name>@<version>
platformio lib [STORAGE_OPTIONS] uninstall <name>@<version range>

🌸 Description

Bye bye library 💔 — this one uninstalls whatever library you point at.

The version situation supports Semantic Versioning (<major>.<minor>.<patch>) and bestie it can look like any of these:

  • 1.2.3 — an exact version number. Use only this exact version ✋
  • ^1.2.3 — any compatible version (exact version for 1.x.x versions)
  • ~1.2.3 — any version with the same major and minor versions, and an equal or greater patch version
  • >1.2.3 — any version greater than 1.2.3. >=, <, and <= are also possible
  • >0.1.0,!=0.2.0,<0.3.0 — any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0

🎀 Storage Options

See base options for cmd_lib.

🦋 Examples

> platformio lib -g uninstall AsyncMqttClient

Library Storage: /storage/dir/...
Uninstalling AsyncMqttClient @ 0.2.0:   [OK]

👑 platformio lib update

📋 Contents

  • platformio lib update
    • Usage
    • Description
    • Storage Options
    • Options
    • Examples

✨ Usage

platformio lib [STORAGE_OPTIONS] update [OPTIONS]
pio lib [STORAGE_OPTIONS] update [OPTIONS]

# update all project libraries
# (run it from a project root where is located "platformio.ini")
platformio lib update [OPTIONS]

# update project dependent library
platformio lib [STORAGE_OPTIONS] update [OPTIONS] [LIBRARY...]

# update library in global storage
platformio lib --global update [OPTIONS] [LIBRARY...]
platformio lib -g update [OPTIONS] [LIBRARY...]

# update library in custom storage
platformio lib --storage-dir /path/to/dir update [OPTIONS] [LIBRARY...]
platformio lib -d /path/to/dir update [OPTIONS] [LIBRARY...]

# [LIBRARY...] forms
platformio lib [STORAGE_OPTIONS] update <id>
platformio lib [STORAGE_OPTIONS] update <id>@<version>
platformio lib [STORAGE_OPTIONS] update <id>@<version range>
platformio lib [STORAGE_OPTIONS] update <name>
platformio lib [STORAGE_OPTIONS] update <name>@<version>
platformio lib [STORAGE_OPTIONS] update <name>@<version range>

💖 Description

Check or update installed libraries. It's giving glow up era for your deps ✨

The version supports Semantic Versioning (<major>.<minor>.<patch>) and can take any of the following forms:

  • 1.2.3 — an exact version number. Use only this exact version ✋
  • ^1.2.3 — any compatible version (exact version for 1.x.x versions)
  • ~1.2.3 — any version with the same major and minor versions, and an equal or greater patch version
  • >1.2.3 — any version greater than 1.2.3. >=, <, and <= are also possible
  • >0.1.0,!=0.2.0,<0.3.0 — any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0

🎀 Storage Options

See base options for cmd_lib.

⭐ Options

  • -c, --only-check — DEPRECATED. Please use --dry-run instead. (she's retired bestie, don't use her 🙈)
  • --dry-run — Do not update, only check for the new versions 👀
  • --json-output — Return the output in JSON format 📦

🌈 Examples

  1. Update all installed libraries in global storage
> platformio lib -g update

Library Storage: /storage/dir/...
Updating ESP8266_SSD1306 @ 3.2.3:   [Up-to-date]
Updating EngduinoMagnetometer @ 3.1.0:  [Up-to-date]
Updating IRremote @ 2.2.1:  [Up-to-date]
Updating Json @ 5.4.0:  [Out-of-date]
LibraryManager: Installing id=64 @ 5.6.4
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Json @ 5.6.4 has been successfully installed!
Updating PJON @ 1fb26fd:    [Checking]
git version 2.7.4 (Apple Git-66)
Already up-to-date.
Updating TextLCD @ 308d188a2d3a:    [Checking]
Mercurial Distributed SCM (version 3.8.4)
(see https://mercurial-scm.org for more information)

Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
pulling from https://developer.mbed.org/users/simon/code/TextLCD/
searching for changes
no changes found
  1. Update specified libraries in global storage
> platformio lib -g update Json 4

Library Storage: /storage/dir/...
Updating Json @ 5.6.4:  [Up-to-date]
Updating IRremote @ 2.2.1:  [Up-to-date]

🛠 Project Manager CLI

To print all available commands and options use:

platformio project --help
platformio project COMMAND --help

💜 platformio project config

📋 Contents

  • platformio project config
    • Usage
    • Description
      • Options
    • Examples

✨ Usage

platformio project config [OPTIONS]
pio project config [OPTIONS]

🧚 Description

Show project computed configuration based on projectconf. The extra configuration files and dynamic variables will be expanded. 🔍✨

This command is useful for developers to check how PlatformIO computes configuration from projectconf.

🎀 Options

  • -d, --project-dir — Specify the path to project directory. By default, --project-dir is equal to current working directory (CWD).
  • --json-output — Return the output in JSON format.

🌸 Examples

> pio platformio config
Computed project configuration for Tasmota Project

platformio
----------
src_dir          =  tasmota
build_dir        =  .pioenvs
build_cache_dir  =  .cache
extra_configs    =  platformio_tasmota_env.ini
                    platformio_override.ini
default_envs     =  tasmota

common
------
framework               =  arduino
board                   =  esp01_1m
board_build.flash_mode  =  dout
platform                =  espressif8266
build_flags             =  -D NDEBUG
                           -mtarget-align
                           -Wl,-Map,firmware.map
                           -Wl,-Teagle.flash.1m.ld
                           -DBEARSSL_SSL_BASIC
                           -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703
                           -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH
                           -DVTABLES_IN_FLASH
                           -fno-exceptions
                           -lstdc++
build_unflags           =  -Wall
board_build.f_cpu       =  80000000L
monitor_speed           =  115200
upload_speed            =  115200
upload_resetmethod      =  nodemcu
upload_port             =  COM5
extra_scripts           =  pio/strip-floats.py
                           pio/name-firmware.py

scripts_defaults
----------------
extra_scripts  =  pio/strip-floats.py
                  pio/name-firmware.py

...

🌟 platformio project init

📋 Contents

  • platformio project init
    • Usage
    • Description
    • Options
    • Examples

✨ Usage

platformio project init [OPTIONS]
pio project init [OPTIONS]

🦋 Description

Initialize a new PlatformIO based project or update existing with new data. New project era unlocked 🔓✨

This command will create:

  • projectconf
  • projectconf_pio_include_dir, put project header files here
  • projectconf_pio_src_dir, put project source files here (*.h, *.c, *.cpp, *.S, *.ino, etc.)
  • projectconf_pio_lib_dir, put project specific (private) libraries here. See also ldf
  • projectconf_pio_test_dir, put project tests here. More details unit_testing
  • Miscellaneous files for VCS and ci support.

⭐ Options

  • -d, --project-dir — A path to a directory where PlatformIO will initialize new project.
  • -b, --board — If you specify board ID (you can pass multiple --board options), then PlatformIO will automatically generate environment for projectconf and pre-fill these data:
    • projectconf_env_platform
    • projectconf_env_framework
    • projectconf_env_board

The full list with pre-configured boards is available here platforms.

  • --ide — Initialize PlatformIO project for the specified IDE which can be imported later via "Import Project" functionality.

A list with supported IDE is available within platformio project init --help command. Also, please take a look at ide page.

  • -O, --project-option — Initialize project with additional options from projectconf. For example, platformio project init --project-option="lib_deps=ArduinoJSON". Multiple options are allowed.
  • --env-prefix — An environment prefix which will be used with pair in projectconf_env_board ID. For example, the default environment name for board_teensy_teensy31 board will be [env:teensy31].
  • -s, --silent — Suppress progress reporting 🤫

🌈 Examples

  1. Initialize new project in a current working directory
> platformio project init

The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio project init -d %PATH_TO_THE_PROJECT_DIR%` command.

The next files/directories will be created in ***
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
src - Put your source files here
lib - Put here project specific (private) libraries
Project has been successfully initialized!
Useful commands:
`platformio run` - process/build project from the current directory
`platformio run --target upload` or `platformio run -t upload` - upload firmware to embedded board
`platformio run --target clean` - clean project (remove compiled files)
  1. Initialize new project in a specified directory
> platformio project init -d %PATH_TO_DIR%

The next files/directories will be created in ***
 platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
...
  1. Initialize project for Arduino Uno
> platformio project init --board uno

The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio project init -d %PATH_TO_THE_PROJECT_DIR%` command.
...
  1. Initialize project for Teensy 3.1 board with custom framework_mbed
> platformio project init --board teensy31 --project-option "framework=mbed"

The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio project init -d %PATH_TO_THE_PROJECT_DIR%` command.

...

🎮 Platform Manager CLI

okay bestie so the Platform Manager is literally the whole vibe of installing + managing dev platforms and their lil packages ✨

to see every command and option it has, just run:

platformio platform --help
platformio platform COMMAND --help
📸 [image]

🧩 platformio platform frameworks

📖 Contents

  • platformio platform frameworks
    • Usage
    • Description
      • Options
    • Examples

🚀 Usage

platformio platform frameworks QUERY [OPTIONS]
pio platform frameworks QUERY [OPTIONS]

💬 Description

Lists out all the supported frameworks (that's SDKs, etc. bestie) 💅

⚙️ Options

  • --json-output — spits the output back at you as JSON instead of the pretty human version

🌸 Examples

print every supported framework, SDK, etc. — here's the whole tea 🍵

> platformio platform frameworks

arduino ~ Arduino
=================
Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

Home: https://platformio.org/frameworks/arduino

artik-sdk ~ ARTIK SDK
=====================
ARTIK SDK is a C/C++ SDK targeting Samsung ARTIK platforms. It exposes a set of APIs to ease up development of applications. These APIs cover hardware buses such as GPIO, SPI, I2C, UART, connectivity links like Wi-Fi, Bluetooth, Zigbee, and network protocols such as HTTP, Websockets, MQTT, and others.

Home: https://platformio.org/frameworks/artik-sdk

cmsis ~ CMSIS
=============
The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices.

Home: https://platformio.org/frameworks/cmsis

espidf ~ ESP-IDF
===============
Espressif IoT Development Framework. Official development framework for ESP32.

Home: https://platformio.org/frameworks/espidf

libopencm3 ~ libOpenCM3
=======================
The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others.

Home: https://platformio.org/frameworks/libopencm3

mbed ~ mbed
===========
The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

Home: https://platformio.org/frameworks/mbed

pumbaa ~ Pumbaa
===============
Pumbaa is Python on top of Simba. The implementation is a port of MicroPython, designed for embedded devices with limited amount of RAM and code memory.

Home: https://platformio.org/frameworks/pumbaa

simba ~ Simba
=============
Simba is an RTOS and build framework. It aims to make embedded programming easy and portable.

Home: https://platformio.org/frameworks/simba

spl ~ SPL
=========
The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers.

Home: https://platformio.org/frameworks/spl

wiringpi ~ WiringPi
===================
WiringPi is a GPIO access library written in C for the BCM2835 used in the Raspberry Pi. It's designed to be familiar to people who have used the Arduino "wiring" system.

Home: https://platformio.org/frameworks/wiringpi

📥 platformio platform install

📖 Contents

  • platformio platform install
    • Usage
    • Options
    • Description
    • Version control
      • Git
      • Mercurial
      • Subversion
    • Examples

🚀 Usage

platformio platform install [OPTIONS] [PLATFORM...]
pio platform install [OPTIONS] [PLATFORM...]

# [PLATFORM...] forms
platformio platform install <name>
platformio platform install <name>@<version>
platformio platform install <name>@<version range>
platformio platform install <zip or tarball url>
platformio platform install file://<zip or tarball file>
platformio platform install file://<folder>
platformio platform install <repository>
platformio platform install <name=repository> (name it should have locally)
platformio platform install <repository#tag> ("tag" can be commit, branch or tag)

⚙️ Options

  • --with-package — install this specific package (or alias, either works bestie)
  • --without-package — do NOT install this specific package (or alias)
  • --skip-default — skip the default packages entirely
  • --with-all-packages — install every single package declared in platform.json
  • -f, --force — reinstall/redownload the development platform and its packages even if they already exist, no questions asked 💀

💬 Description

Installs platforms and all their dependent packages. Easy.

The version follows Semantic Versioning ( <major>.<minor>.<patch>) and can show up in any of these shapes:

  • 1.2.3 — one exact version number. use ONLY this exact version, no substitutes
  • ^1.2.3 — any compatible version (which means the exact version for 1.x.x versions)
  • ~1.2.3 — any version with the same major and minor versions, and an equal or greater patch version
  • >1.2.3 — any version greater than 1.2.3. >=, <, and <= are also possible
  • >0.1.0,!=0.2.0,<0.3.0 — any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0

Also — plot twist — PlatformIO supports installing from a local directory or archive 🎀 You need to slap a file:// prefix in front of the local path. And yes, the directory or archive has to contain a platform.json manifest.

  • file:///local/path/to/the/platform/dir
  • file:///local/path/to/the/platform.zip
  • file:///local/path/to/the/platform.tar.gz

🔀 Version control

PlatformIO supports installing from Git, Mercurial and Subversion, and it figures out which type of VCS you mean from the url prefixes: git+, hg+, or svn+.

⚠️ NOTE: PlatformIO needs a working VCS command on your path: git, hg or svn. no command, no install, periodt.

🐙 Git

The supported schemes are: git, git+https and git+ssh. here are the supported forms:

Passing branch names, a commit hash or a tag name is possible like so:

🧿 Mercurial

The supported schemes are: hg+http, hg+https and hg+ssh. here are the supported forms:

Passing branch names, a commit hash or a tag name is possible like so:

🗂️ Subversion

The supported schemes are: svn, svn+svn, svn+http, svn+https and svn+ssh. here are the supported forms:

You can also give specific revisions to an SVN URL, like so:

  • svn+svn://svn.server.org/my-platform#13

🌈 Examples

1. Install platform_atmelavr with default packages

> platformio platform install atmelavr

PlatformManager: Installing atmelavr
Downloading...
Unpacking  [####################################]  100%
atmelavr @ 0.0.0 has been successfully installed!
PackageManager: Installing tool-scons @ >=2.3.0,<2.6.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
tool-scons @ 2.4.1 has been successfully installed!
PackageManager: Installing toolchain-atmelavr @ ~1.40801.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
toolchain-atmelavr @ 1.40801.0 has been successfully installed!
The platform 'atmelavr' has been successfully installed!
The rest of packages will be installed automatically depending on your build environment.

2. Install platform_atmelavr with uploader utility only and skip default packages

> platformio platform install atmelavr --skip-default-package --with-package=uploader

PlatformManager: Installing atmelavr
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
atmelavr @ 0.0.0 has been successfully installed!
PackageManager: Installing tool-micronucleus @ ~1.200.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
tool-micronucleus @ 1.200.0 has been successfully installed!
PackageManager: Installing tool-avrdude @ ~1.60001.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
tool-avrdude @ 1.60001.1 has been successfully installed!
The platform 'atmelavr' has been successfully installed!
The rest of packages will be installed automatically depending on your build environment.

3. Install the latest development platform_atmelavr from Git repository

> platformio platform install https://github.com/platformio/platform-atmelavr.git
PlatformManager: Installing platform-atmelavr
git version 2.7.4 (Apple Git-66)
Cloning into '/Volumes/MEDIA/tmp/pio3_test_projects/arduino-digihead-master/home_dir/platforms/installing-U3ucN0-package'...
remote: Counting objects: 176, done.
remote: Compressing objects: 100% (55/55), done.
remote: Total 176 (delta 114), reused 164 (delta 109), pack-reused 0
Receiving objects: 100% (176/176), 38.86 KiB | 0 bytes/s, done.
Resolving deltas: 100% (114/114), done.
Checking connectivity... done.
Submodule 'examples/arduino-external-libs/lib/OneWire' (https://github.com/PaulStoffregen/OneWire.git) registered for path 'examples/arduino-external-libs/lib/OneWire'
Cloning into 'examples/arduino-external-libs/lib/OneWire'...
remote: Counting objects: 91, done.
remote: Total 91 (delta 0), reused 0 (delta 0), pack-reused 91
Unpacking objects: 100% (91/91), done.
Checking connectivity... done.
Submodule path 'examples/arduino-external-libs/lib/OneWire': checked out '57c18c6de80c13429275f70875c7c341f1719201'
atmelavr @ 0.0.0 has been successfully installed!
PackageManager: Installing tool-scons @ >=2.3.0,<2.6.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
tool-scons @ 2.4.1 has been successfully installed!
PackageManager: Installing toolchain-atmelavr @ ~1.40801.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
toolchain-atmelavr @ 1.40801.0 has been successfully installed!
The platform 'https://github.com/platformio/platform-atmelavr.git' has been successfully installed!
The rest of packages will be installed automatically depending on your build environment.

💖 platformio platform list 💖

Contents

  • platformio platform list
    • Usage
    • Description
      • Options
    • Examples

Usage

platformio platform list [OPTIONS]
pio platform list [OPTIONS]

Description

Lists every platform you've already got installed on your machine. Bestie, this is the "what's in my closet" check. 👗

Options

  • --json-output — hands you the output as JSON instead of the pretty text. Perfect for scripts and for anyone who's like "I need to parse this, not vibe with it." 🤖

Examples

> platformio platform list

atmelavr ~ Atmel AVR
====================
Atmel AVR 8- and 32-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industrys most code-efficient architecture for C and assembly programming.

Home: https://platformio.org/platforms/atmelavr
Packages: toolchain-atmelavr, framework-simba
Version: 0.0.0

atmelsam ~ Atmel SAM
====================
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

Home: https://platformio.org/platforms/atmelsam
Packages: framework-arduinosam, framework-mbed, framework-simba, toolchain-gccarmnoneeabi, tool-bossac
Version: 0.0.0

espressif8266 ~ Espressif 8266
==============================
Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

Home: https://platformio.org/platforms/espressif8266
Packages: framework-simba, tool-esptool, framework-arduinoespressif8266, sdk-esp8266, toolchain-xtensa
Version: 0.0.0
...

Contents

  • platformio platform search
    • Usage
    • Description
      • Options
    • Examples

Usage

platformio platform search QUERY [OPTIONS]
pio platform search QUERY [OPTIONS]

Description

Goes hunting for development platforms. Drop a QUERY and it comes back with the matches — it's giving search bar energy, fr fr. 🔍✨

Options

  • --json-output — return the output in JSON format. Same deal as before, bestie: machine-readable, no decorations, just the goods. 💅

Examples

  1. Print all available development platforms
> platformio platform search

atmelavr ~ Atmel AVR
====================
Atmel AVR 8- and 32-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industrys most code-efficient architecture for C and assembly programming.

Home: https://platformio.org/platforms/atmelavr
Packages: toolchain-atmelavr, framework-arduinoavr, framework-simba, tool-avrdude, tool-micronucleus

atmelsam ~ Atmel SAM
====================
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

Home: https://platformio.org/platforms/atmelsam
Packages: toolchain-gccarmnoneeabi, framework-arduinosam, framework-simba, tool-openocd, framework-mbed, tool-avrdude, tool-bossac

espressif32 ~ Espressif 32
==========================
Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

Home: https://platformio.org/platforms/espressif32
Packages: toolchain-xtensa32, framework-simba, framework-arduinoespressif32, framework-pumbaa, framework-espidf, tool-esptoolpy

espressif8266 ~ Espressif 8266
==============================
Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

Home: https://platformio.org/platforms/espressif8266
Packages: toolchain-xtensa, framework-simba, tool-esptool, tool-mkspiffs, tool-espotapy, framework-arduinoespressif8266, sdk-esp8266

freescalekinetis ~ Freescale Kinetis
====================================
Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration.
...
  1. Search for TI development platforms
> platformio platform search texas

timsp430 ~ TI MSP430
====================
MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications.

Home: https://platformio.org/platforms/timsp430
Packages: toolchain-timsp430, tool-mspdebug, framework-energiamsp430, framework-arduinomsp430

titiva ~ TI TIVA
================
Texas Instruments TM4C12x MCUs offer the industrys most popular ARM Cortex-M4 core with scalable memory and package options, unparalleled connectivity peripherals, advanced application functions, industry-leading analog integration, and extensive software solutions.

Home: https://platformio.org/platforms/titiva
Packages: ldscripts, framework-libopencm3, toolchain-gccarmnoneeabi, tool-lm4flash, framework-energiativa

> platformio platform search framework-mbed

atmelsam ~ Atmel SAM
====================
Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

Home: https://platformio.org/platforms/atmelsam
Packages: toolchain-gccarmnoneeabi, framework-arduinosam, framework-simba, tool-openocd, framework-mbed, ldscripts, tool-bossac

freescalekinetis ~ Freescale Kinetis
====================================
Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration.

Home: https://platformio.org/platforms/freescalekinetis
Packages: framework-mbed, toolchain-gccarmnoneeabi

nordicnrf51 ~ Nordic nRF51
==========================
The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell.

Home: https://platformio.org/platforms/nordicnrf51
Packages: framework-mbed, tool-rfdloader, toolchain-gccarmnoneeabi, framework-arduinonordicnrf51

nxplpc ~ NXP LPC
================
The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.

Home: https://platformio.org/platforms/nxplpc
Packages: framework-mbed, toolchain-gccarmnoneeabi

siliconlabsefm32 ~ Silicon Labs EFM32
=====================================
Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption.

Home: https://platformio.org/platforms/siliconlabsefm32
Packages: framework-mbed, toolchain-gccarmnoneeabi

ststm32 ~ ST STM32
==================
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

Home: https://platformio.org/platforms/ststm32
Packages: framework-libopencm3, toolchain-gccarmnoneeabi, tool-stlink, framework-spl, framework-cmsis, framework-mbed, ldscripts

teensy ~ Teensy
===============
Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port.

Home: https://platformio.org/platforms/teensy
Packages: framework-arduinoteensy, tool-teensy, toolchain-gccarmnoneeabi, framework-mbed, toolchain-atmelavr, ldscripts
...

🦋 platformio platform show 🦋

Contents

  • platformio platform show
    • Usage
    • Description
    • Examples

✨ Usage ✨

platformio platform show PLATFORM
pio platform show PLATFORM

Description

Show details about platforms — like, all the deets, bestie. 💅

Examples

> platformio platform show atmelavr

atmelavr ~ Atmel AVR
====================
Atmel AVR 8- and 32-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industrys most code-efficient architecture for C and assembly programming.

Version: 1.2.1
Home: https://platformio.org/platforms/atmelavr
License: Apache-2.0
Frameworks: simba, arduino

Package toolchain-atmelavr
--------------------------
Type: toolchain
Requirements: ~1.40902.0
Installed: Yes
Description: avr-gcc
Url: http://www.atmel.com/products/microcontrollers/avr/32-bitavruc3.aspx?tab=tools
Version: 1.40902.0 (4.9.2)

Package framework-arduinoavr
----------------------------
Type: framework
Requirements: ~1.10612.1
Installed: Yes
Url: https://www.arduino.cc/en/Main/Software
Version: 1.10612.1 (1.6.12)
Description: Arduino Wiring-based Framework (AVR Core, 1.6)

Package framework-simba
-----------------------
Type: framework
Requirements: >=7.0.0
Installed: Yes
Url: https://github.com/eerimoq/simba
Version: 11.0.0
Description: Simba Embedded Programming Platform

Package tool-avrdude
--------------------
Type: uploader
Requirements: ~1.60300.0
Installed: Yes
Description: AVRDUDE
Url: http://www.nongnu.org/avrdude/
Version: 1.60300.0 (6.3.0)

Package tool-micronucleus
-------------------------
Type: uploader
Requirements: ~1.200.0
Installed: No (optional)

🗑️ platformio platform uninstall

Contents

  • platformio platform uninstall
    • Usage
    • Description
    • Examples

Usage

platformio platform uninstall [PLATFORM...]
pio platform uninstall [PLATFORM...]

# uninstall specific platform version using Semantic Versioning
platformio platform uninstall PLATFORM@X.Y.Z

Description

Uninstall specified platforms — bye bye, don't let the door hit you. 👋

Examples

> platformio platform uninstall atmelavr
Uninstalling platform atmelavr @ 0.0.0:    [OK]
Uninstalling package tool-scons @ 2.4.1:    [OK]
Uninstalling package toolchain-atmelavr @ 1.40801.0:    [OK]
The platform 'atmelavr' has been successfully uninstalled!

🔄 platformio platform update

Contents

  • platformio platform update
    • Usage
    • Description
    • Options
    • Examples

Usage

platformio platform update [OPTIONS] [PLATFORM...]
pio platform update [OPTIONS] [PLATFORM...]

# update specific platform version using Semantic Versioning
platformio platform update PLATFORM@X.Y.Z

Description

Check or update installed platforms — keep your faves fresh, bestie. ✨

Options

  • -p, --only-packages — Update only the platform related packages. Do not update development platform build scripts, board configs and etc.
  • -c, --only-check — DEPRECATED. Please use --dry-run instead.
  • --dry-run — Do not update, only check for the new versions
  • --json-output — Return the output in JSON format

Examples

> platformio platform update

Platform atmelavr
--------
Updating atmelavr @ 0.0.0:  [Up-to-date]
Updating framework-arduinoavr @ 1.10608.1:  [Up-to-date]
Updating tool-avrdude @ 1.60001.1:  [Up-to-date]
Updating toolchain-atmelavr @ 1.40801.0:    [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform espressif8266
--------
Updating espressif @ 0.0.0:     [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]
Updating toolchain-xtensa @ 1.40802.0:  [Up-to-date]
Updating tool-esptool @ 1.409.0:    [Up-to-date]
Updating tool-mkspiffs @ 1.102.0:   [Up-to-date]
Updating framework-arduinoespressif8266 @ 1.20300.0:    [Up-to-date]
Updating sdk-esp8266 @ 1.10502.0:   [Up-to-date]

Platform teensy
--------
Updating teensy @ 0.0.0:    [Up-to-date]
Updating framework-arduinoteensy @ 1.128.0:     [Up-to-date]
Updating tool-teensy @ 1.1.0:   [Up-to-date]
Updating framework-mbed @ 1.121.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]
Updating toolchain-atmelavr @ 1.40801.0:    [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]

...

🌈 PlatformIO Remote CLI

Helper command for pioremote.

To print all available commands and options use:

pio remote --help
platformio remote --help
platformio remote COMMAND --help

# run command on the specified PIO Remote Agents
platformio remote --agent NAME_1 --agent NAME_N COMMAND

🛰️ PIO Remote Agent

Start PIO Remote Agent on a host machine and work remotely with your devices WITHOUT extra software, services, SSH, VPN, tunneling or opening incoming network ports. 🤯

pioremote supports wired and wireless devices. Wired devices should be connected physically to host machine where PIO Remote Agent is started, where wireless devices should be visible for PIO Remote Agent to provide network operations Over-The-Air (OTA).

Contents

  • PIO Remote Agent
    • platformio remote agent list
      • Usage
      • Description
      • Example
    • platformio remote agent start
      • Usage
      • Description
      • Options

📋 platformio remote agent list

Usage

platformio remote agent list
pio remote agent list

Description

List active PIO Remote Agent s started using own pioaccount or shared with you by other PlatformIO developers.

Example

> platformio remote agent list

innomac.local
-------------
ID: 98853d930......788d77375e7
Started: 2016-10-26 16:32:56

                                         ----

🚀 platformio remote agent start

Usage

platformio remote agent start [OPTIONS]
pio remote agent start [OPTIONS]

Description

Start PIO Remote Agent and work remotely with your devices from anywhere in the world. This command can be run as daemon or added to autostart list of your OS.

Options

  • -n, --name — Agent name/alias. By default, machine's hostname will be used. You can use this name later for cmd_remote_device and cmd_remote_run commands. Good names are home, office, lab or etc.
  • -s, --share — Share your agent/devices with other PlatformIO developers who have pioaccount: friends, co-workers, team, etc. The valid value for --share option is email address that was used for cmd_account_register command.
  • -d, --working-dir — A working directory where PIO Remote Agent stores projects data for incremental synchronization and embedded programs for PIO Process Supervisor.

📱 platformio remote device

Remote Device: monitor remote device or list existing.

Contents

  • platformio remote device
    • platformio remote device list
      • Usage
      • Description
      • Options
      • Example
    • platformio remote device monitor
      • Usage
      • Description
      • Options
      • Examples

🔌 platformio remote device list

Usage

platformio remote device list [OPTIONS]
pio remote device list [OPTIONS]

# List devices from the specified agents. Multiple agents are allowed.
platformio remote --agent NAME device list [OPTIONS]

Description

List Serial Ports on remote machines where cmd_remote_agent is started.

You can list devices from the specified remote machines using --agent NAME option between "remote" & "device" sub-commands. For example, you have run platformio remote agent start --name command with "home" and "office" options:

  • platformio remote agent start --name home
  • platformio remote agent start --name office

Now, to list devices from office machine please use platformio remote --agent office device list.

Multiple agents are allowed ( platformio remote --agent lab1 --agent lab3 device ...).

Options

  • --json-output — Return the output in JSON format

Example

> platformio remote device list

Agent innomac.local
===================
/dev/cu.Bluetooth-Incoming-Port
-------------------------------
Hardware ID: n/a
Description: n/a
/dev/cu.obd2ecu-SPPDev
----------------------
Hardware ID: n/a
Description: n/a
/dev/cu.usbmodemFA1431
----------------------
Hardware ID: USB VID:PID=2A03:0043 SER=75435353038351015271 LOCATION=250-1.4.3
Description: Arduino Uno
/dev/cu.usbserial-A6004003
--------------------------
Hardware ID: USB VID:PID=0403:6001 SER=A6004003 LOCATION=253-1.3.1
Description: FT232R USB UART - FT232R USB UART
/dev/cu.SLAB_USBtoUART
----------------------
Hardware ID: USB VID:PID=10C4:EA60 SER=0001 LOCATION=253-1.3.2
Description: CP2102 USB to UART Bridge Controller - CP2102 USB to UART Bridge Controller
/dev/cu.usbmodem589561
----------------------
Hardware ID: USB VID:PID=16C0:0483 SER=589560 LOCATION=250-1.4.1
Description: USB Serial

🖥️ platformio remote device monitor

Remote Serial Port Monitor

Usage

platformio remote device monitor [OPTIONS]
pio remote device monitor [OPTIONS]

# Connect to a specified agent
platformio remote --agent NAME device monitor [OPTIONS]
platformio remote -a NAME device monitor [OPTIONS]

Description

Connect to Serial Port of remote device and receive or send data in real time. cmd_remote_agent should be started before on a remote machine.

To control monitor please use these "hot keys":

  • Ctrl+C Quit
  • Ctrl+T Menu
  • Ctrl+T followed by Ctrl+H Help

Options

  • -p, --port — Port, a number or a device name
  • -b, --baud — Set baud rate, default 9600
  • --parity — Set parity (None, Even, Odd, Space, Mark), one of [N, E, O, S, M], default N
  • --rtscts — Enable RTS/CTS flow control, default Off
  • --xonxoff — Enable software flow control, default Off
  • --rts — Set initial RTS line state, default 0
  • --dtr — Set initial DTR line state, default 0
  • --echo — Enable local echo, default Off
  • --encoding — Set the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default UTF-8.
  • -f, --filter — Add text transformation. Available filters:
    • colorize — Apply different colors for received and echo
    • debug — Print what is sent and received
    • default — Remove typical terminal control codes from input
    • direct — Do-nothing: forward all data unchanged
  • nocontrol — nukes all the control codes, CR+LF included. gone. bye 💅
  • printable — shows the decimal code for every non-ASCII character and swaps out most of the control codes. so you can actually see what's going on ✨

  • --eol — end of line mode, and your choices are CR, LF or CRLF. default is CRLF 🍓
  • --raw — do not apply any encodings/transformations. like, at all. raw raw. 😳
  • --exit-char — ASCII code of the special character used to exit the application, default 3 (DEC, Ctrl+C). for example, to use Ctrl+] you'd run platformio remote device monitor --exit-char 29. lowkey iconic 🎀
  • --menu-char — ASCII code of the special character that controls miniterm (the menu), default 20 (DEC). that's your Ctrl+T btw iykyk 🧚
  • ---quiet — Diagnostics: suppress non-error messages, default Off. (yes bestie, that's three dashes, i don't make the rules 😭)
  • -d, --project-dir — specify the path to the project directory. by default, --project-dir is equal to the current working directory (CWD). ✨
  • -e, --environment — process specified environments. you can also pick which environments get processed by default using the projectconf_pio_default_envs option from projectconf. main character energy honestly 👑

🌸 Examples 🌸

  1. show the available options for monitor
> platformio remote device monitor --help

Usage: platformio remote device monitor [OPTIONS]

Options:
  -p, --port TEXT       Port, a number or a device name
  -b, --baud INTEGER    Set baud rate, default=9600
  --parity [N|E|O|S|M]  Set parity, default=N
  --rtscts              Enable RTS/CTS flow control, default=Off
  --xonxoff             Enable software flow control, default=Off
  --rts [0|1]           Set initial RTS line state, default=0
  --dtr [0|1]           Set initial DTR line state, default=0
  --echo                Enable local echo, default=Off
  --encoding TEXT       Set the encoding for the serial port (e.g. hexlify,
                        Latin1, UTF-8), default: UTF-8
  -f, --filter TEXT     Add text transformation
  --eol [CR|LF|CRLF]    End of line mode, default=CRLF
  --raw                 Do not apply any encodings/transformations
  --exit-char INTEGER   ASCII code of special character that is used to exit
                        the application, default=29 (DEC)
  --menu-char INTEGER   ASCII code of special character that is used to
                        control miniterm (menu), default=20 (DEC)
  --quiet               Diagnostics: suppress non-error messages, default=Off
  -h, --help            Show this message and exit.
  1. talk to a serial device and print help inside the terminal
> platformio remote device monitor

--- Available ports:
--- /dev/cu.Bluetooth-Incoming-Port n/a
--- /dev/cu.Bluetooth-Modem n/a
--- /dev/cu.SLAB_USBtoUART CP2102 USB to UART Bridge Controller
--- /dev/cu.obd2ecu-SPPDev n/a
Enter port name:/dev/cu.SLAB_USBtoUART
--- Miniterm on /dev/cu.SLAB_USBtoUART: 9600,8,N,1 ---
--- Quit: Ctrl+C  |  Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
Hello PlatformIO!
---
--- Ctrl+]   Exit program
--- Ctrl+T   Menu escape key, followed by:
--- Menu keys:
---    Ctrl+T  Send the menu character itself to remote
---    Ctrl+]  Send the exit character itself to remote
---    Ctrl+I  Show info
---    Ctrl+U  Upload file (prompt will be shown)
--- Toggles:
---    Ctrl+R  RTS          Ctrl+E  local echo
---    Ctrl+D  DTR          Ctrl+B  BREAK
---    Ctrl+L  line feed    Ctrl+A  Cycle repr mode
---
--- Port settings (Ctrl+T followed by the following):
---    p          change port
---    7 8        set data bits
---    n e o s m  change parity (None, Even, Odd, Space, Mark)
---    1 2 3      set stop bits (1, 2, 1.5)
---    b          change baud rate
---    x X        disable/enable software flow control
---    r R        disable/enable hardware flow control
--- exit ---

🦋 platformio remote run 🦋

Remote Firmware Updates


✨ Contents ✨

  • platformio remote run
    • Usage
    • Description
    • Options
    • Example

💅 Usage 💅

platformio remote run [OPTIONS]
pio remote run [OPTIONS]

# process environments using specified PIO Remote Agent
platformio remote --agent NAME run [OPTIONS]

💜 Description 💜

so basically, this processes environments remotely — the ones that are defined in your projectconf file. by default, pioremote builds the project on a host machine and then deploys the final firmware (program) to a remote device (aka your embedded board). slay ✨

and if you actually need the project processed on the remote machine itself, bestie you want the platformio remote run --force-remote option. in that case, pioremote will automatically sync your project with the remote machine, install all the required toolchains, frameworks, SDKs, etc., and process the project. it's giving full-service 💅


🌈 Options 🌈

  • -e, --environment — process specified environments.

you can also decide which environments get processed by default with the projectconf_pio_default_envs option from projectconf. 🎀

  • -t, --target — process specified targets.

the built-in targets are:

  • clean — delete compiled object files, libraries and firmware/program binaries 🧹
  • upload — firmware "auto-uploading" for embedded platforms 🔥
  • program — firmware "auto-uploading" for embedded platforms using an external programmer (available only for platform_atmelavr)
  • buildfs — platform_espressif_uploadfs
  • uploadfs — platform_espressif_uploadfs
  • envdump — dump the current build environment
  • size — print the size of the sections in a firmware/program
  • --upload-port — custom upload port of the embedded board. to print all available ports, use the cmd_remote_device command.

if the upload port isn't specified, PlatformIO will try to detect it automatically. she's got it 🫶

  • -d, --project-dir — specify the path to the project directory. by default, --project-dir is equal to the current working directory (CWD). ⭐
  • -v, --verbose — shows detailed information when processing environments. the way she spills the tea... 😭

this option can also be set globally using the setting_force_verbose setting, or with the environment variable PLATFORMIO_SETTING_FORCE_VERBOSE.

  • --disable-auto-clean — disable the auto-clean of projectconf_pio_build_dir when projectconf or projectconf_pio_src_dir (the project structure) have been modified.
  • -r, --force-remote — by default, pioremote builds the project on a host machine and deploys the final firmware (program) to the remote device (embedded board).

if you need to process the project on the remote machine, please use the platformio remote run --force-remote option. in this case, pioremote will automatically synchronize your project with the remote machine, install the required toolchains, frameworks, SDKs, etc., and process the project. 🌸


⭐ Example ⭐

> platformio remote run --environment uno --target upload
          Building project locally
          [Wed Oct 26 16:35:09 2016] Processing uno (platform: atmelavr, board: uno, framework: arduino)
          --------------------------------------------------------------------------------
          Verbose mode can be enabled via `-v, --verbose` option
          Collected 25 compatible libraries
          Looking for dependencies...
          Project does not have dependencies
          Compiling .pio/build/uno/src/main.o
          Archiving .pio/build/uno/libFrameworkArduinoVariant.a
          Indexing .pio/build/uno/libFrameworkArduinoVariant.a
          Compiling .pio/build/uno/FrameworkArduino/CDC.o
          Compiling .pio/build/uno/FrameworkArduino/HardwareSerial.o
          Compiling .pio/build/uno/FrameworkArduino/HardwareSerial0.o
          Compiling .pio/build/uno/FrameworkArduino/HardwareSerial1.o
          Compiling .pio/build/uno/FrameworkArduino/HardwareSerial2.o
          Compiling .pio/build/uno/FrameworkArduino/HardwareSerial3.o
          Compiling .pio/build/uno/FrameworkArduino/IPAddress.o
          Compiling .pio/build/uno/FrameworkArduino/PluggableUSB.o
          Compiling .pio/build/uno/FrameworkArduino/Print.o
          Compiling .pio/build/uno/FrameworkArduino/Stream.o
          Compiling .pio/build/uno/FrameworkArduino/Tone.o
          Compiling .pio/build/uno/FrameworkArduino/USBCore.o
          Compiling .pio/build/uno/FrameworkArduino/WInterrupts.o
          Compiling .pio/build/uno/FrameworkArduino/WMath.o
          Compiling .pio/build/uno/FrameworkArduino/WString.o
          Compiling .pio/build/uno/FrameworkArduino/_wiring_pulse.o
          Compiling .pio/build/uno/FrameworkArduino/abi.o
          Compiling .pio/build/uno/FrameworkArduino/hooks.o
          Compiling .pio/build/uno/FrameworkArduino/main.o
          Compiling .pio/build/uno/FrameworkArduino/new.o
          Compiling .pio/build/uno/FrameworkArduino/wiring.o
          Compiling .pio/build/uno/FrameworkArduino/wiring_analog.o
          Compiling .pio/build/uno/FrameworkArduino/wiring_digital.o
          Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.o
          Compiling .pio/build/uno/FrameworkArduino/wiring_shift.o
          Archiving .pio/build/uno/libFrameworkArduino.a
          Indexing .pio/build/uno/libFrameworkArduino.a
          Linking .pio/build/uno/firmware.elf
          Checking program size
          Building .pio/build/uno/firmware.hex
          text       data     bss     dec     hex filename
          2574         48     168    2790     ae6 .pio/build/uno/firmware.elf
          ========================= [SUCCESS] Took 10.01 seconds =======================
          ================================== [SUMMARY] =================================
          Environment nodemcuv2   [SKIP]
          Environment uno_pic32   [SKIP]
          Environment teensy31    [SKIP]
          Environment uno         [SUCCESS]
          ========================= [SUCCESS] Took 10.01 seconds ========================
          Uploading firmware remotely
          [Wed Oct 26 19:35:20 2016] Processing uno (platform: atmelavr, board: uno, framework: arduino)
          ----------------------------------------------------------------------------------------------
          Verbose mode can be enabled via `-v, --verbose` option
          Looking for upload port...
          Auto-detected: /dev/cu.usbmodemFA1431
          Uploading .pio/build/uno/firmware.hex
          avrdude: AVR device initialized and ready to accept instructions
          Reading | ################################################## | 100% 0.00s
          avrdude: Device signature = 0x1e950f
          avrdude: reading input file ".pio/build/uno/firmware.hex"
          avrdude: writing flash (2622 bytes):
          Writing | ################################################## | 100% 0.43s
          avrdude: 2622 bytes of flash written
          avrdude: verifying flash memory against .pio/build/uno/firmware.hex:
          avrdude: load data flash data from input file .pio/build/uno/firmware.hex:
          avrdude: input file .pio/build/uno/firmware.hex contains 2622 bytes
          avrdude: reading on-chip flash data:
          Reading | ################################################## | 100% 0.34s
          avrdude: verifying ...
          avrdude: 2622 bytes of flash verified
          avrdude done.  Thank you.
          ========================= [SUCCESS] Took 3.04 seconds =======================
          ========================= [SUMMARY] =========================================
          Environment nodemcuv2   [SKIP]
          Environment uno_pic32   [SKIP]
          Environment teensy31    [SKIP]
          Environment uno         [SUCCESS]
          ========================= [SUCCESS] Took 3.04 seconds ========================

💅 platformio remote test

<span pink>okay bestie, this one is literally the little helper command for remote unit_testing.</span> 🧪

🎀 Contents

  • platformio remote test
    • Usage
    • Description
    • Options
    • Examples

✨ Usage

platformio remote test [OPTIONS]
pio remote test [OPTIONS]

# run tests on specified PIO Remote Agent
platformio remote --agent NAME test [OPTIONS]

🌸 Description

<span purple>So what it does:</span> it runs your tests remotely from your PlatformIO based project. <span cyan>Want the whole tea on PlatformIO unit_testing?</span> there's more over there, go look.

This command lets you apply the tests for the environments specified in projectconf. 🫶

👑 Options

  • -e, --environment — process the environments you name. More deets over at platformio run --environment. ✨
  • -i, --ignore — skip tests whose name matches the patterns you give. You can pass more than one pattern, no cap. If you wanna ignore specific tests for a specific environment, peep the projectconf_test_ignore option in projectconf. 🙈

Here's the pattern cheat sheet, bestie:

┌─────────┬───────────────────────────┐
│ Pattern │ Meaning                   │
├─────────┼───────────────────────────┤
│ *       │ matches everything        │
├─────────┼───────────────────────────┤
│ ?       │ matches any single        │
│         │ character                 │
├─────────┼───────────────────────────┤
│ [seq]   │ matches any character in  │
│         │ seq                       │
├─────────┼───────────────────────────┤
│ [!seq]  │ matches any character not │
│         │ in seq                    │
└─────────┴───────────────────────────┘

For example: platformio remote test --ignore "mytest*" -i "test[13]" 💖

  • --upload-port — the port meant for firmware uploading. Wanna see what ports you got? Use the cmd_device_list command. 📋

If you don't specify an upload port, PlatformIO will try to auto-detect it for you. iconic, honestly.

  • --test-port — a Serial/UART port that PlatformIO uses as the communication interface between the PlatformIO Unit Test Engine and your target device. Again, to list available ports use the cmd_device_list command. 🔌

If the test port isn't specified, PlatformIO will try to auto-detect it. ✨

  • -d, --project-dir — tell it the path to your project directory. By default, --project-dir is equal to the current working directory (CWD). 🗂️
  • -r, --force-remote — by default, pioremote processes your project on a host machine and deploys the final testing firmware (program) to the remote device (embedded board). 🖥️➡️🔌

But if you need the project processed on the remote machine, use the platformio remote test --force-remote option. In that case, pioremote will automatically sync your project with the remote machine, install the required toolchains, frameworks, SDKs, etc., and then process the project. slay 🦋

  • --without-building — skip the building stage. 🏃♀️
  • --without-uploading — skip the uploading stage. (no period here in the original, so no period from me either 💅)
  • -v, --verbose — shows detailed info when it's processing environments. 🔍

This option can also be set globally using the setting_force_verbose setting, or via the environment variable PLATFORMIO_SETTING_FORCE_VERBOSE. 🎀

🌈 Examples

For the examples, please follow over to the unit_testing page. ✨


💖 platformio remote update

🎀 Contents

  • platformio remote update
    • Usage
    • Description
    • Options
    • Examples

✨ Usage

platformio remote update [OPTIONS]
pio remote update [OPTIONS]

# start update process on the specified agents/machines
platformio remote --agent NAME update [OPTIONS]

🌸 Description

<span purple>Checks or updates</span> your installed platforms and global Libraries on the remote machine. 🧚

👑 Options

  • -c, --only-check — DEPRECATED. Please use --dry-run instead, bestie, she's retired. 💀
  • --dry-run — do not update, only check for the new versions. 👀

🌈 Examples

> platformio remote update

Platform Manager
================
Platform timsp430
--------
Updating timsp430 @ 0.0.0:  [Up-to-date]
Updating toolchain-timsp430 @ 1.40603.0:    [Up-to-date]
Updating framework-energiamsp430 @ 1.17.0:  [Up-to-date]
Updating framework-arduinomsp430 @ 1.10601.0:   [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform freescalekinetis
--------
Updating freescalekinetis @ 0.0.0:  [Up-to-date]
Updating framework-mbed @ 1.121.1:  [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform ststm32
--------
Updating ststm32 @ 0.0.0:   [Up-to-date]
Updating framework-libopencm3 @ 1.1.0:  [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
Updating tool-stlink @ 1.10200.0:   [Up-to-date]
Updating framework-spl @ 1.10201.0:     [Up-to-date]
Updating framework-cmsis @ 1.40300.0:   [Up-to-date]
Updating framework-mbed @ 1.121.1:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform lattice_ice40
--------
Updating lattice_ice40 @ 0.0.0:     [Up-to-date]
Updating toolchain-icestorm @ 1.7.0:    [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform atmelavr
--------
Updating atmelavr @ 0.0.0:  [Up-to-date]
Updating framework-arduinoavr @ 1.10608.1:  [Up-to-date]
Updating tool-avrdude @ 1.60001.1:  [Up-to-date]
Updating toolchain-atmelavr @ 1.40801.0:    [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform espressif8266
--------
Updating espressif8266 @ 0.0.0:     [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]
Updating toolchain-xtensa @ 1.40802.0:  [Up-to-date]
Updating tool-esptool @ 1.409.0:    [Up-to-date]
Updating tool-mkspiffs @ 1.102.0:   [Up-to-date]
Updating framework-arduinoespressif8266 @ 1.20300.0:    [Up-to-date]
Updating sdk-esp8266 @ 1.10502.0:   [Up-to-date]

          Platform linux_x86_64
          --------
          Updating linux_x86_64 @ 0.0.0:  [Up-to-date]
          Updating toolchain-gcclinux64 @ 1.40801.0:  [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Platform windows_x86
          --------
          Updating windows_x86 @ 0.0.0:   [Up-to-date]
          Updating toolchain-gccmingw32 @ 1.40800.0:  [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Platform teensy
          --------
          Updating teensy @ 0.0.0:    [Up-to-date]
          Updating framework-arduinoteensy @ 1.128.0:     [Up-to-date]
          Updating tool-teensy @ 1.1.0:   [Up-to-date]
          Updating framework-mbed @ 1.121.1:  [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]
          Updating toolchain-atmelavr @ 1.40801.0:    [Up-to-date]
          Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]

          Platform nordicnrf51
          --------
          Updating nordicnrf51 @ 0.0.0:   [Up-to-date]
          Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
          Updating framework-arduinonordicnrf51 @ 1.20302.0:  [Up-to-date]
          Updating framework-mbed @ 1.121.1:  [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Platform titiva
          --------
          Updating titiva @ 0.0.0:    [Up-to-date]
          Updating framework-libopencm3 @ 1.1.0:  [Up-to-date]
          Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
          Updating framework-energiativa @ 1.17.0:    [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Platform atmelsam
          --------
          Updating atmelsam @ 0.0.0:  [Up-to-date]
          Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
          Updating tool-openocd @ 1.900.0:    [Up-to-date]
          Updating framework-mbed @ 1.121.1:  [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]
          Updating tool-avrdude @ 1.60001.1:  [Up-to-date]
          Updating tool-bossac @ 1.10601.0:   [Up-to-date]

          Platform siliconlabsefm32
          --------
          Updating siliconlabsefm32 @ 0.0.0:  [Up-to-date]
          Updating framework-mbed @ 1.121.1:  [Up-to-date]
          Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Platform microchippic32
          --------
          Updating microchippic32 @ 0.0.0:    [Up-to-date]
          Updating framework-arduinomicrochippic32 @ 1.10201.0:   [Up-to-date]
          Updating toolchain-microchippic32 @ 1.40803.0:  [Up-to-date]
          Updating tool-pic32prog @ 1.200200.0:   [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Platform linux_i686
          --------
          Updating linux_i686 @ 0.0.0:    [Up-to-date]
          Updating toolchain-gcclinux32 @ 1.40801.0:  [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Platform intel_arc32
          --------
          Updating intel_arc32 @ 0.0.0:   [Up-to-date]
          Updating framework-arduinointel @ 1.10006.0:    [Up-to-date]
          Updating tool-arduino101load @ 1.124.0:     [Up-to-date]
          Updating toolchain-intelarc32 @ 1.40805.0:  [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Platform nxplpc
          --------
          Updating nxplpc @ 0.0.0:    [Up-to-date]
          Updating framework-mbed @ 1.121.1:  [Up-to-date]
          Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Platform linux_arm
          --------
          Updating linux_arm @ 0.0.0:     [Up-to-date]
          Updating toolchain-gccarmlinuxgnueabi @ 1.40802.0:  [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Platform native
          --------
          Updating native @ 0.0.0:    [Up-to-date]
          Updating tool-scons @ 2.4.1:    [Up-to-date]

          Library Manager
          ===============
          Updating Adafruit-GFX @ 334e815bc1:     [Up-to-date]
          Updating Adafruit-ST7735 @ d53d4bf03a:  [Up-to-date]
          Updating Adafruit-DHT @ 09344416d2:  [Up-to-date]
          Updating Adafruit-Unified-Sensor @ f2af6f4efc:  [Up-to-date]
          Updating ESP8266_SSD1306 @ 3.2.3:   [Up-to-date]
          Updating EngduinoMagnetometer @ 3.1.0:  [Up-to-date]
          Updating IRremote @ 2.2.1:  [Up-to-date]
          Updating Json @ 5.6.4:  [Up-to-date]
          Updating MODSERIAL @ d8422efe47:    [Up-to-date]
          Updating PJON @ 1fb26fd:    [Checking]
          git version 2.7.4 (Apple Git-66)
          Already up-to-date.
          Updating Servo @ 36b69a7ced07:  [Checking]
          Mercurial Distributed SCM (version 3.8.4)
          (see https://mercurial-scm.org for more information)

          Copyright (C) 2005-2016 Matt Mackall and others
          This is free software; see the source for copying conditions. There is NO
          warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
          pulling from https://developer.mbed.org/users/simon/code/Servo/
          searching for changes
          no changes found
          Updating TextLCD @ 308d188a2d3a:    [Checking]
          Mercurial Distributed SCM (version 3.8.4)
          (see https://mercurial-scm.org for more information)

          Copyright (C) 2005-2016 Matt Mackall and others
          This is free software; see the source for copying conditions. There is NO
          warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
          pulling from https://developer.mbed.org/users/simon/code/TextLCD/
          searching for changes
          no changes found

🏃♀️ platformio run 🏃♀️

📑 Contents 📑

  • platformio run
    • Usage
    • Description
    • Options
    • Examples

🛠️ Usage

platformio run [OPTIONS]
pio run [OPTIONS]

💬 Description

It processes the environments that are defined in your projectconf file. Like, that's the whole job bestie. 🫶


✨ Options ✨

  • -e, --environment — Process specified environments. And listen — you can also pick which environments get processed by default using the projectconf_pio_default_envs option over in projectconf. So you're not re-typing them every single time, iykyk. 💅
  • -t, --target — Process specified targets.
NOTE: you can configure default targets per project environment using the projectconf_targets option in projectconf. 🌸

Built-in targets:

  • Processing
    • clean — delete compiled object files, libraries and firmware/program binaries
    • upload — firmware "auto-uploading" for embedded platforms
    • debug — build using Debug Configuration
    • program — firmware "auto-uploading" for embedded platforms using external programmer (available only for platform_atmelavr)
    • fuses — set fuse bits (available only for platform_atmelavr)
    • buildfs — platform_espressif_uploadfs
    • uploadfs — platform_espressif_uploadfs
    • size — print the size of the sections in a firmware/program
    • checkprogsize — check maximum allowed firmware size for uploading
    • erase — erase device flash (not available on the all platforms)
    • compiledb — build compilation_db
  • Device
    • monitor — automatically start cmd_device_monitor after success build operation. You can configure monitor using projectconf_section_env_monitor.
  • Service
    • envdump — dump current build environment
    • idedata — export build environment for IDE (defines, build flags, CPPPATH, etc.)
  • --upload-port — Custom upload port of embedded board. Wanna see every port that's available? Run the cmd_device_list command. 🦋 And if you don't specify an upload port, PlatformIO will try to detect it automatically for you — she's got you. 💖
  • -d, --project-dir — Specify the path to project directory. By default, --project-dir is equal to current working directory (CWD).
  • -c, --project-conf — New in version 4.0. Process project with a custom projectconf.
  • -j, --jobs — New in version 4.0. Control a number of parallel build jobs. Default is a number of CPUs in a system.
  • -s, --silent — Suppress progress reporting 🤫
  • -v, --verbose — Shows detailed information when processing environments. 🔍 This option can also be set globally using the setting_force_verbose setting or by the environment variable PLATFORMIO_SETTING_FORCE_VERBOSE.
  • --disable-auto-clean — Disable auto-clean of projectconf_pio_build_dir when projectconf or projectconf_pio_src_dir (project structure) have been modified. ✨

🎀 Examples 🎀

  1. Process Wiring Blink Example
> platformio run

[Wed Sep  7 15:48:58 2016] Processing uno (platform: atmelavr, board: uno, framework: arduino)
-----------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Collected 36 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pio/build/uno/src/main.o
Archiving .pio/build/uno/libFrameworkArduinoVariant.a
Indexing .pio/build/uno/libFrameworkArduinoVariant.a
Compiling .pio/build/uno/FrameworkArduino/CDC.o
...
Compiling .pio/build/uno/FrameworkArduino/wiring_shift.o
Archiving .pio/build/uno/libFrameworkArduino.a
Indexing .pio/build/uno/libFrameworkArduino.a
Linking .pio/build/uno/firmware.elf
Building .pio/build/uno/firmware.hex
Calculating size .pio/build/uno/firmware.elf
AVR Memory Usage
----------------
Device: atmega328p

Program:    1034 bytes (3.2% Full)
(.text + .data + .bootloader)

Data:          9 bytes (0.4% Full)
(.data + .bss + .noinit)

=========================== [SUCCESS] Took 2.47 seconds ===========================

[Wed Sep  7 15:49:01 2016] Processing nodemcu (platform: espressif8266, board: nodemcu, framework: arduino)
-----------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Collected 34 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pio/build/nodemcu/src/main.o
Archiving .pio/build/nodemcu/libFrameworkArduinoVariant.a
Indexing .pio/build/nodemcu/libFrameworkArduinoVariant.a
Compiling .pio/build/nodemcu/FrameworkArduino/Esp.o
Compiling .pio/build/nodemcu/FrameworkArduino/FS.o
Compiling .pio/build/nodemcu/FrameworkArduino/HardwareSerial.o
...
Archiving .pio/build/nodemcu/libFrameworkArduino.a
Indexing .pio/build/nodemcu/libFrameworkArduino.a
Linking .pio/build/nodemcu/firmware.elf
Calculating size .pio/build/nodemcu/firmware.elf
text       data     bss     dec     hex filename
221240      888   29400  251528   3d688 .pio/build/nodemcu/firmware.elf
Building .pio/build/nodemcu/firmware.bin
=========================== [SUCCESS] Took 6.43 seconds ===========================
          [Wed Sep  7 15:49:07 2016] Processing teensy31 (platform: teensy, board: teensy31, framework: arduino)
          -----------------------------------------------------------------------------------------------
          Verbose mode can be enabled via `-v, --verbose` option
          Collected 96 compatible libraries
          Looking for dependencies...
          Project does not have dependencies
          Compiling .pio/build/teensy31/src/main.o
          Compiling .pio/build/teensy31/FrameworkArduino/AudioStream.o
          Compiling .pio/build/teensy31/FrameworkArduino/DMAChannel.o
          ...
          Compiling .pio/build/teensy31/FrameworkArduino/yield.o
          Archiving .pio/build/teensy31/libFrameworkArduino.a
          Indexing .pio/build/teensy31/libFrameworkArduino.a
          Linking .pio/build/teensy31/firmware.elf
          Calculating size .pio/build/teensy31/firmware.elf
          text       data     bss     dec     hex filename
          11288       168    2288   13744    35b0 .pio/build/teensy31/firmware.elf
          Building .pio/build/teensy31/firmware.hex
          =========================== [SUCCESS] Took 5.36 seconds ===========================

          [Wed Sep  7 15:49:12 2016] Processing lpmsp430g2553 (platform: timsp430, build_flags: -D LED_BUILTIN=RED_LED, board: lpmsp430g2553, framework: arduino)
          -----------------------------------------------------------------------------------------------
          Verbose mode can be enabled via `-v, --verbose` option
          Collected 29 compatible libraries
          Looking for dependencies...
          Project does not have dependencies
          Compiling .pio/build/lpmsp430g2553/src/main.o
          Compiling .pio/build/lpmsp430g2553/FrameworkAnergia/HardwareSerial.o
          Compiling .pio/build/lpmsp430g2553/FrameworkAnergia/IPAddress.o
          ...
          Compiling .pio/build/lpmsp430g2553/FrameworkAnergia/wiring_digital.o
          Compiling .pio/build/lpmsp430g2553/FrameworkAnergia/wiring_pulse.o
          Compiling .pio/build/lpmsp430g2553/FrameworkAnergia/wiring_shift.o
          Archiving .pio/build/lpmsp430g2553/libFrameworkAnergia.a
          Indexing .pio/build/lpmsp430g2553/libFrameworkAnergia.a
          Linking .pio/build/lpmsp430g2553/firmware.elf
          Calculating size .pio/build/lpmsp430g2553/firmware.elf
          text       data     bss     dec     hex filename
          820           0      20     840     348 .pio/build/lpmsp430g2553/firmware.elf
          Building .pio/build/lpmsp430g2553/firmware.hex
          =========================== [SUCCESS] Took 2.34 seconds ===========================

and that's the whole first vibe check done, bestie — every environment built, every one said SUCCESS, we move 💅


  1. Process specific environment

okay so when you only wanna build SOME of your environments and not the whole roster, you just name them. watch:

> platformio run -e nodemcu -e teensy31
          [Wed Sep  7 15:49:01 2016] Processing nodemcu (platform: espressif8266, board: nodemcu, framework: arduino)
          -----------------------------------------------------------------------------------------------
          Verbose mode can be enabled via `-v, --verbose` option
          Collected 34 compatible libraries
          Looking for dependencies...
          Project does not have dependencies
          Compiling .pio/build/nodemcu/src/main.o
          Archiving .pio/build/nodemcu/libFrameworkArduinoVariant.a
          Indexing .pio/build/nodemcu/libFrameworkArduinoVariant.a
          Compiling .pio/build/nodemcu/FrameworkArduino/Esp.o
          Compiling .pio/build/nodemcu/FrameworkArduino/FS.o
          Compiling .pio/build/nodemcu/FrameworkArduino/HardwareSerial.o
          ...
          Archiving .pio/build/nodemcu/libFrameworkArduino.a
          Indexing .pio/build/nodemcu/libFrameworkArduino.a
          Linking .pio/build/nodemcu/firmware.elf
          Calculating size .pio/build/nodemcu/firmware.elf
          text       data     bss     dec     hex filename
          221240      888   29400  251528   3d688 .pio/build/nodemcu/firmware.elf
          Building .pio/build/nodemcu/firmware.bin
          =========================== [SUCCESS] Took 6.43 seconds ===========================

          [Wed Sep  7 15:49:07 2016] Processing teensy31 (platform: teensy, board: teensy31, framework: arduino)
          -----------------------------------------------------------------------------------------------
          Verbose mode can be enabled via `-v, --verbose` option
          Collected 96 compatible libraries
          Looking for dependencies...
          Project does not have dependencies
          Compiling .pio/build/teensy31/src/main.o
          Compiling .pio/build/teensy31/FrameworkArduino/AudioStream.o
          Compiling .pio/build/teensy31/FrameworkArduino/DMAChannel.o
          ...
          Compiling .pio/build/teensy31/FrameworkArduino/yield.o
          Archiving .pio/build/teensy31/libFrameworkArduino.a
          Indexing .pio/build/teensy31/libFrameworkArduino.a
          Linking .pio/build/teensy31/firmware.elf
          Calculating size .pio/build/teensy31/firmware.elf
          text       data     bss     dec     hex filename
          11288       168    2288   13744    35b0 .pio/build/teensy31/firmware.elf
          Building .pio/build/teensy31/firmware.hex
          =========================== [SUCCESS] Took 5.36 seconds ===========================

see how it only did nodemcu and teensy31? exactly the two you asked for, no extras, no drama ✨


  1. Process specific target (clean project)

now THIS one is so satisfying, ngl — you're telling it to yeet all the build artifacts. it's giving spring cleaning 💅

> platformio run -t clean
          [Wed Sep  7 15:53:26 2016] Processing uno (platform: atmelavr, board: uno, framework: arduino)
          -----------------------------------------------------------------------------------------------------
          Removed .pio/build/uno/firmware.elf
          Removed .pio/build/uno/firmware.hex
          Removed .pio/build/uno/libFrameworkArduino.a
          Removed .pio/build/uno/libFrameworkArduinoVariant.a
          Removed .pio/build/uno/FrameworkArduino/_wiring_pulse.o
          Removed .pio/build/uno/FrameworkArduino/abi.o
          Removed .pio/build/uno/FrameworkArduino/CDC.o
          Removed .pio/build/uno/FrameworkArduino/HardwareSerial.o
          Removed .pio/build/uno/FrameworkArduino/HardwareSerial0.o
          Removed .pio/build/uno/FrameworkArduino/HardwareSerial1.o
          Removed .pio/build/uno/FrameworkArduino/HardwareSerial2.o
          Removed .pio/build/uno/FrameworkArduino/HardwareSerial3.o
          Removed .pio/build/uno/FrameworkArduino/hooks.o
          Removed .pio/build/uno/FrameworkArduino/IPAddress.o
          Removed .pio/build/uno/FrameworkArduino/main.o
          Removed .pio/build/uno/FrameworkArduino/new.o
          Removed .pio/build/uno/FrameworkArduino/PluggableUSB.o
          Removed .pio/build/uno/FrameworkArduino/Print.o
          Removed .pio/build/uno/FrameworkArduino/Stream.o
          Removed .pio/build/uno/FrameworkArduino/Tone.o
          Removed .pio/build/uno/FrameworkArduino/USBCore.o
          Removed .pio/build/uno/FrameworkArduino/WInterrupts.o
          Removed .pio/build/uno/FrameworkArduino/wiring.o
          Removed .pio/build/uno/FrameworkArduino/wiring_analog.o
          Removed .pio/build/uno/FrameworkArduino/wiring_digital.o
          Removed .pio/build/uno/FrameworkArduino/wiring_pulse.o
          Removed .pio/build/uno/FrameworkArduino/wiring_shift.o
          Removed .pio/build/uno/FrameworkArduino/WMath.o
          Removed .pio/build/uno/FrameworkArduino/WString.o
          Removed .pio/build/uno/src/main.o
          Done cleaning
          ======================= [SUCCESS] Took 0.49 seconds =======================

          [Wed Sep  7 15:53:27 2016] Processing nodemcu (platform: espressif8266, board: nodemcu, framework: arduino)
          -----------------------------------------------------------------------------------------------------
          Removed .pio/build/nodemcu/firmware.bin
          Removed .pio/build/nodemcu/firmware.elf
          Removed .pio/build/nodemcu/libFrameworkArduino.a
          Removed .pio/build/nodemcu/libFrameworkArduinoVariant.a
          ...
          Removed .pio/build/nodemcu/FrameworkArduino/spiffs/spiffs_nucleus.o
          Removed .pio/build/nodemcu/FrameworkArduino/umm_malloc/umm_malloc.o
          Removed .pio/build/nodemcu/src/main.o
          Done cleaning
          ======================= [SUCCESS] Took 0.50 seconds =======================

          [Wed Sep  7 15:53:27 2016] Processing teensy31 (platform: teensy, board: teensy31, framework: arduino)
          -----------------------------------------------------------------------------------------------------
          Removed .pio/build/teensy31/firmware.elf
          Removed .pio/build/teensy31/firmware.hex
          Removed .pio/build/teensy31/libFrameworkArduino.a
          Removed .pio/build/teensy31/FrameworkArduino/analog.o
          Removed .pio/build/teensy31/FrameworkArduino/AudioStream.o
          ...
          Removed .pio/build/teensy31/FrameworkArduino/WString.o
          Removed .pio/build/teensy31/FrameworkArduino/yield.o
          Removed .pio/build/teensy31/src/main.o
          Done cleaning
          ======================= [SUCCESS] Took 0.50 seconds =======================

          [Wed Sep  7 15:53:28 2016] Processing lpmsp430g2553 (platform: timsp430, build_flags: -D LED_BUILTIN=RED_LED, board: lpmsp430g2553, framework: energia)
          -----------------------------------------------------------------------------------------------------
          Removed .pio/build/lpmsp430g2553/firmware.elf
          Removed .pio/build/lpmsp430g2553/firmware.hex
          Removed .pio/build/lpmsp430g2553/libFrameworkAnergia.a
          Removed .pio/build/lpmsp430g2553/FrameworkAnergia/atof.o
          ...
          Removed .pio/build/lpmsp430g2553/FrameworkAnergia/avr/dtostrf.o
          Removed .pio/build/lpmsp430g2553/src/main.o
          Done cleaning
          ======================= [SUCCESS] Took 0.49 seconds =======================

every single .o, every firmware.elf, every firmware.hex, every .a — GONE. "Done cleaning", "Done cleaning", "Done cleaning" 😭 it's so cathartic


  1. Mix environments and targets

and here's the iconic combo move — pick your environment AND your target in the same breath. it's giving main character energy fr fr 👑

> platformio run -e uno -t upload
          [Wed Sep  7 15:55:11 2016] Processing uno (platform: atmelavr, board: uno, framework: arduino)
          --------------------------------------------------------------------------------------------------
          Verbose mode can be enabled via `-v, --verbose` option
          Collected 36 compatible libraries
          Looking for dependencies...
          Project does not have dependencies
          Compiling .pio/build/uno/src/main.o
          Archiving .pio/build/uno/libFrameworkArduinoVariant.a
          Indexing .pio/build/uno/libFrameworkArduinoVariant.a
          Compiling .pio/build/uno/FrameworkArduino/CDC.o
          ...
          Compiling .pio/build/uno/FrameworkArduino/wiring_shift.o
          Archiving .pio/build/uno/libFrameworkArduino.a
          Indexing .pio/build/uno/libFrameworkArduino.a
          Linking .pio/build/uno/firmware.elf
          Checking program size .pio/build/uno/firmware.elf
          text       data     bss     dec     hex filename
          1034          0       9    1043     413 .pio/build/uno/firmware.elf
          Building .pio/build/uno/firmware.hex
          Looking for upload port...
          Auto-detected: /dev/cu.usbmodemFA141
          Uploading .pio/build/uno/firmware.hex

          avrdude: AVR device initialized and ready to accept instructions

          Reading | ################################################## | 100% 0.01s

          avrdude: Device signature = 0x1e950f
          avrdude: reading input file ".pio/build/uno/firmware.hex"
          avrdude: writing flash (1034 bytes):

          Writing | ################################################## | 100% 0.18s

          avrdude: 1034 bytes of flash written
          avrdude: verifying flash memory against .pio/build/uno/firmware.hex:
          avrdude: load data flash data from input file .pio/build/uno/firmware.hex:
          avrdude: input file .pio/build/uno/firmware.hex contains 1034 bytes
          avrdude: reading on-chip flash data:

that "Looking for upload port..." → "Auto-detected: /dev/cu.usbmodemFA141" pipeline? chef's kiss 🫶 it found the board all by itself and started pushing bytes 🦋

          Reading | ################################################## | 100% 0.15s

          avrdude: verifying ...
          avrdude: 1034 bytes of flash verified

          avrdude: safemode: Fuses OK (H:00, E:00, L:00)

          avrdude done.  Thank you.

          ======================== [SUCCESS] Took 4.14 seconds ========================

okay so that right there? that's the whole upload just vibing to completion 💚 verified, fuses checked, SUCCESS in 4.14 seconds. chef's kiss. we move.


💅 platformio settings 💅

Manage PlatformIO settings. that's it, that's the job. your little settings dashboard, bestie. 🎛️

Contents (the lil map 🗺️)

  • platformio settings
    • platformio settings get
      • Usage
      • Description
      • Settings
        • auto_update_libraries
        • auto_update_platforms
        • check_libraries_interval
        • check_platformio_interval
        • check_platforms_interval
        • enable_cache
        • strict_ssl
        • enable_telemetry
        • force_verbose
        • projects_dir
      • Examples
    • platformio settings set
      • Usage
      • Description
      • Examples
    • platformio settings reset
      • Usage
      • Description
      • Examples

🌸 platformio settings get 🌸

Usage

platformio settings get [NAME]
pio settings get [NAME]

Description

NOTE: ✨ - The Yes value is equal to: True, Y, 1 and is not case sensitive. so like, don't stress about caps, it's giving flexible. 🙌 - You can override these settings using envvars. 💖

Get/List existing settings — show me what you got, bestie. 👀


Settings (the whole roster 👑)

auto_update_libraries

  • Default: No
  • Values: Yes/No
  • Automatically update libraries. 🤖

auto_update_platforms

  • Default: No
  • Values: Yes/No
  • Automatically update platforms. 🛠️

check_libraries_interval

  • Default: 7
  • Values: Days (Number)
  • Check for the library updates interval. 📚

check_platformio_interval

  • Default: 3
  • Values: Days (Number)
  • Check for the new PlatformIO interval. 🆕

check_platforms_interval

  • Default: 7
  • Values: Days (Number)
  • Check for the platform updates interval. 🧩

enable_cache

  • Default: Yes
  • Values: Yes/No
  • Enable caching for API requests and Library Manager. ⚡ (yes it's on by default, it's iconic)

strict_ssl

  • Default: No
  • Values: Yes/No
  • Strict SSL for PlatformIO Services. 🔒

enable_telemetry

  • Default: Yes
  • Values: Yes/No
  • Share minimal diagnostics and usage information to help us make PlatformIO better. 🫶

The source code of telemetry service is open source. You can make sure that we DO NOT SHARE PRIVATE information or source code of your project. All information shares ANONYMOUSLY. 🌈

Which data do we collect and why? (the receipts 📋)

  • A version of Python Interpreter. piocore is written in Python language, including development platforms. We need to know which Python version produces such type of exceptions (see below), which is more popular, which version we should drop and focus on a new one. 🐍
  • piocore errors/exceptions. We report automatically fatal exceptions raised by PlatformIO Core source code but NOT by your project. 💀
  • The name of the used platform, board, framework. We collect this type of information to have a clear picture which software products are the most widely used by our Community and for the which we should provide frequent updates and add new features ( for example, "atmelavr", "arduino", "uno", etc.) 🌟
  • The name of CLI command. It helps us to improve our CLI. For example, "run", "lib list") ⌨️
  • The name of ide. This is very important information for us. We create native extensions based on the popularity of IDEs (for example, ide_vscode, ide_clion) 🖥️

Thanks a lot that you keep this setting enabled! 💖

force_verbose

  • Default: No
  • Values: Yes/No
  • Force verbose output when processing environments. This setting overrides: 🗣️
    • platformio run --verbose
    • platformio ci --verbose
    • platformio test --verbose

projects_dir

  • Default: ~/Documents/PlatformIO/Projects
  • Values: Path to folder
  • Default location for PlatformIO projects (PIO Home) 🏠

Examples

  1. List all settings and theirs current values
> platformio settings get

Name                            Value [Default]   Description
------------------------------------------------------------------------------------------
auto_update_libraries           No                Automatically update libraries (Yes/No)
auto_update_platforms           No                Automatically update platforms (Yes/No)
check_libraries_interval        7                 Check for the library updates interval (days)
check_platformio_interval       3                 Check for the new PlatformIO interval (days)
check_platforms_interval        7                 Check for the platform updates interval (days)
enable_cache                    Yes               Enable caching for API requests and Library Manager
strict_ssl                      No                Strict SSL for PlatformIO Services
enable_telemetry                Yes               Telemetry service?#enable-telemetry> (Yes/No)
force_verbose                   No                Force verbose output when processing environments
projects_dir                    ~/Documents/PlatformIO/Projects Default location for PlatformIO projects (PIO Home)
  1. Show specified setting
$ platformio settings get auto_update_platforms
Name                            Value [Default]   Description
------------------------------------------------------------------------------------------
auto_update_platforms           Yes               Automatically update platforms (Yes/No)

🎀 platformio settings set 🎀

Usage

platformio settings set NAME VALUE

Description

Set new value for the setting. you're the main character now, you decide. 👑

Examples

Change to check for the new PlatformIO each day ☀️

$ platformio settings set check_platformio_interval 1
The new value for the setting has been set!
Name                            Value [Default]   Description
------------------------------------------------------------------------------------------
check_platformio_interval       1 [3]             Check for the new PlatformIO interval (days)

🦋 platformio settings reset 🦋

Usage

platformio settings reset

Description

Reset settings to default. factory reset era. 🔄

Examples

$ platformio settings reset
The settings have been reset!

Name                            Value [Default]   Description
------------------------------------------------------------------------------------------
auto_update_libraries           No                Automatically update libraries (Yes/No)
auto_update_platforms           No                Automatically update platforms (Yes/No)
check_libraries_interval        7                 Check for the library updates interval (days)
check_platformio_interval       3                 Check for the new PlatformIO interval (days)
check_platforms_interval        7                 Check for the platform updates interval (days)
enable_cache                    Yes               Enable caching for API requests and Library Manager
strict_ssl                      No                Enable SSL for PlatformIO Services
enable_telemetry                Yes               Telemetry service?#enable-telemetry> (Yes/No)
force_verbose                   No                Force verbose output when processing environments
projects_dir                    ~/Documents/PlatformIO/Projects Default location for PlatformIO projects (PIO Home)

💜 platformio system 💜

Miscellaneous system commands. the "everything else" drawer, but make it cute. 🗄️

To print all available commands and options use:

platformio system --help
platformio system COMMAND --help
pio system --help

✨ PlatformIO Shell Completion ✨

Shell completion support for 🐚

  • Fish
  • Zsh
  • Bash
  • PowerShell

To print all available commands and options use:

platformio misc completion --help
platformio misc completion COMMAND --help
pio misc completion --help

🌟 platformio misc completion install 🌟

Contents

  • platformio misc completion install
    • Usage
    • Description
      • Options
    • Examples

Usage

platformio misc completion install [OPTIONS]
pio misc completion install [OPTIONS]

Description

Install shell completion files or code. get that autocomplete glow-up. ✨

Options

  • --shell — The shell type, default is auto and will be detected from a current shell session. Supported shells are:
    • fish
    • zsh
    • bash
    • powershell
  • --path — Custom installation path of the code to be evaluated by the shell. The standard installation path is used by default. 📁

Examples

> pio misc completion install

PlatformIO CLI completion has been installed for fish shell to ~/.config/fish/completions/pio.fish
Please restart a current shell session

🐚 platformio misc completion uninstall 🐚

Contents

  • platformio misc completion uninstall
    • Usage
    • Description
      • Options
    • Examples

Usage

platformio misc completion uninstall [OPTIONS]
pio misc completion uninstall [OPTIONS]

Description

Uninstall shell completion files or code. breaking up with your completions, respectfully. 💔

Options

  • --shell — The shell type, default is auto and will be detected from a current shell session. Supported shells are:
    • fish
    • zsh
    • bash
    • powershell
  • --path — Custom installation path of the code to be evaluated by the shell. The standard installation path is used by default. 📁

Examples

> pio misc completion uninstall

PlatformIO CLI completion has been uninstalled for fish shell from ~/.config/fish/completions/pio.fish
Please restart a current shell session.

🧪 platformio test 🧪

Helper command for local unit_testing. okay testing era, let's gooo. 🔥

Contents

  • platformio test
    • Usage
    • Description
    • Options
    • Examples

Usage

platformio test [OPTIONS]
pio test [OPTIONS]

Description

Run locally tests from PlatformIO based project. More details about PlatformIO unit_testing. 📝

This command allows you to apply the tests for the environments specified in projectconf. 🎯

Options

  • -e, --environment — Process specified environments. More details platformio run --environment 🌍
  • -f, --filter —

Process only the tests where the name matches the patterns you throw at it — and bestie, you can pass more than one pattern, it's not a one-and-done situation. If you need to filter tests for one specific environment only, go peek at the projectconf_test_filter option over in projectconf.

Here's the pattern cheat sheet, iykyk:

  • * — matches everything
  • ? — matches any single character
  • [seq] — matches any character in seq
  • [!seq] — matches any character not in seq

For example:

platformio test --filter "mytest*" -i "test[13]"
  • -i, --ignore — ignore tests where the name matches the patterns you give it. Multiple patterns? Totally allowed. If you wanna ignore tests for one specific environment only, that's the projectconf_test_ignore option in projectconf, go look 💅

Same pattern language, same energy:

  • * — matches everything
  • ? — matches any single character
  • [seq] — matches any character in seq
  • [!seq] — matches any character not in seq

For example:

platformio test --ignore "mytest*" -i "test[13]"
  • --upload-port — the port meant for firmware uploading. Wanna see which ports exist? Use the cmd_device_list command. If you don't specify an upload port, PlatformIO will try to detect it automatically. She's capable like that ✨
  • --test-port — a Serial/UART port that PlatformIO uses as the communication interface between the PlatformIO Unit Test Engine and your target device. Listing available ports is a cmd_device_list job too. And if you don't specify a test port, PlatformIO will try to auto-detect it. Again: capable. 🫶
  • -d, --project-dir — point at the path to your project directory. By default, --project-dir is equal to the current working directory (CWD).
  • -c, --project-conf — process the project with a custom projectconf. New in version 4.0.
  • --without-building — skip the building stage. Gone. Not happening. 🦋
  • --without-uploading — skip the uploading stage.
  • --no-reset — disable the software reset via Serial.DTR/RST before the test runs. Which means... you're pressing the "reset" button yourself after firmware uploading, bestie. Manually. With your own finger. 😭
WARNING: if your board does not support software reset via Serial.DTR/RTS, you should add a >2 seconds delay before UNITY_BEGIN(). We need that time to establish a Serial communication between the host machine and the target device. See unit_testing.
  • --monitor-rts — set the initial RTS line state for Serial Monitor (0 or 1), default 1. We use it to gather test results via the Serial connection.
  • --monitor-dtr — set the initial DTR line state for Serial Monitor (0 or 1), default 1. Same deal — we use it to gather test results via Serial.
  • -v, --verbose — shows detailed information while processing environments. You can also set this globally with the setting_force_verbose setting, or via the environment variable PLATFORMIO_SETTING_FORCE_VERBOSE.

✨ Examples ✨

For the examples, please follow to the unit_testing page. (Not skipping it, that's literally what it says 💜)


🎀 platformio update 🎀

Contents

  • platformio update
    • Usage
    • Description
    • Options
    • Examples

Usage

platformio update [OPTIONS]
pio update [OPTIONS]

Description

Check or update your installed PIO Core packages, platforms and global Libraries. This command is a combo meal of 2 sub-commands:

  • cmd_platform_update
  • cmd_lib_update

Options

  • --core-packages — update only the core packages. Nothing else gets touched. 👑
  • -c, --only-check — DEPRECATED. Please use --dry-run instead, bestie, she's the moment now.
  • --dry-run — do not update, only check for the new versions. Look but don't touch energy. 🙈

Examples

> platformio update

Platform Manager
================
Platform timsp430
--------
Updating timsp430 @ 0.0.0:  [Up-to-date]
Updating toolchain-timsp430 @ 1.40603.0:    [Up-to-date]
Updating framework-energiamsp430 @ 1.17.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform freescalekinetis
--------
Updating freescalekinetis @ 0.0.0:  [Up-to-date]
Updating framework-mbed @ 1.121.1:  [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform ststm32
--------
Updating ststm32 @ 0.0.0:   [Up-to-date]
Updating framework-libopencm3 @ 1.1.0:  [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
Updating tool-stlink @ 1.10200.0:   [Up-to-date]
Updating framework-spl @ 1.10201.0:     [Up-to-date]
Updating framework-cmsis @ 1.40300.0:   [Up-to-date]
Updating framework-mbed @ 1.121.1:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform lattice_ice40
--------
Updating lattice_ice40 @ 0.0.0:     [Up-to-date]
Updating toolchain-icestorm @ 1.7.0:    [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform atmelavr
--------
Updating atmelavr @ 0.0.0:  [Up-to-date]
Updating framework-arduinoavr @ 1.10608.1:  [Up-to-date]
Updating tool-avrdude @ 1.60001.1:  [Up-to-date]
Updating toolchain-atmelavr @ 1.40801.0:    [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform espressif8266
--------
Updating espressif8266 @ 0.0.0:     [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]
Updating toolchain-xtensa @ 1.40802.0:  [Up-to-date]
Updating tool-esptool @ 1.409.0:    [Up-to-date]
Updating tool-mkspiffs @ 1.102.0:   [Up-to-date]
Updating framework-arduinoespressif8266 @ 1.20300.0:    [Up-to-date]
Updating sdk-esp8266 @ 1.10502.0:   [Up-to-date]

Platform linux_x86_64
--------
Updating linux_x86_64 @ 0.0.0:  [Up-to-date]
Updating toolchain-gcclinux64 @ 1.40801.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform windows_x86
--------
Updating windows_x86 @ 0.0.0:   [Up-to-date]
Updating toolchain-gccmingw32 @ 1.40800.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform teensy
--------
Updating teensy @ 0.0.0:    [Up-to-date]
Updating framework-arduinoteensy @ 1.128.0:     [Up-to-date]
Updating tool-teensy @ 1.1.0:   [Up-to-date]
Updating framework-mbed @ 1.121.1:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]
Updating toolchain-atmelavr @ 1.40801.0:    [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]

Platform nordicnrf51
--------
Updating nordicnrf51 @ 0.0.0:   [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
Updating framework-arduinonordicnrf51 @ 1.20302.0:  [Up-to-date]
Updating framework-mbed @ 1.121.1:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform titiva
--------
Updating titiva @ 0.0.0:    [Up-to-date]
Updating framework-libopencm3 @ 1.1.0:  [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
Updating framework-energiativa @ 1.17.0:    [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform atmelsam
--------
Updating atmelsam @ 0.0.0:  [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
Updating tool-openocd @ 1.900.0:    [Up-to-date]
Updating framework-mbed @ 1.121.1:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]
Updating tool-avrdude @ 1.60001.1:  [Up-to-date]
Updating tool-bossac @ 1.10601.0:   [Up-to-date]

Platform siliconlabsefm32
--------
Updating siliconlabsefm32 @ 0.0.0:  [Up-to-date]
Updating framework-mbed @ 1.121.1:  [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform microchippic32
--------
Updating microchippic32 @ 0.0.0:    [Up-to-date]
Updating framework-arduinomicrochippic32 @ 1.10201.0:   [Up-to-date]
Updating toolchain-microchippic32 @ 1.40803.0:  [Up-to-date]
Updating tool-pic32prog @ 1.200200.0:   [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform linux_i686
--------
Updating linux_i686 @ 0.0.0:    [Up-to-date]
Updating toolchain-gcclinux32 @ 1.40801.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform intel_arc32
--------
Updating intel_arc32 @ 0.0.0:   [Up-to-date]
Updating framework-arduinointel @ 1.10006.0:    [Up-to-date]
Updating tool-arduino101load @ 1.124.0:     [Up-to-date]
Updating toolchain-intelarc32 @ 1.40805.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]
Platform nxplpc
--------
Updating nxplpc @ 0.0.0:    [Up-to-date]
Updating framework-mbed @ 1.121.1:  [Up-to-date]
Updating toolchain-gccarmnoneeabi @ 1.40804.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform linux_arm
--------
Updating linux_arm @ 0.0.0:     [Up-to-date]
Updating toolchain-gccarmlinuxgnueabi @ 1.40802.0:  [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Platform native
--------
Updating native @ 0.0.0:    [Up-to-date]
Updating tool-scons @ 2.4.1:    [Up-to-date]

Library Manager
===============
Updating Adafruit-GFX @ 334e815bc1:     [Up-to-date]
Updating Adafruit-ST7735 @ d53d4bf03a:  [Up-to-date]
Updating Adafruit-DHT @ 09344416d2:     [Up-to-date]
Updating Adafruit-Unified-Sensor @ f2af6f4efc:  [Up-to-date]
Updating ESP8266_SSD1306 @ 3.2.3:   [Up-to-date]
Updating EngduinoMagnetometer @ 3.1.0:  [Up-to-date]
Updating IRremote @ 2.2.1:  [Up-to-date]
Updating Json @ 5.6.4:  [Up-to-date]
Updating MODSERIAL @ d8422efe47:    [Up-to-date]
Updating PJON @ 1fb26fd:    [Checking]
git version 2.7.4 (Apple Git-66)
Already up-to-date.
Updating Servo @ 36b69a7ced07:  [Checking]
Mercurial Distributed SCM (version 3.8.4)
(see https://mercurial-scm.org for more information)

Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
pulling from https://developer.mbed.org/users/simon/code/Servo/
searching for changes
no changes found
Updating TextLCD @ 308d188a2d3a:    [Checking]
Mercurial Distributed SCM (version 3.8.4)
(see https://mercurial-scm.org for more information)

Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
pulling from https://developer.mbed.org/users/simon/code/TextLCD/
searching for changes
no changes found

okay bestie that's the whole "did anything move??" sweep 💅 every platform, every toolchain, every library — the ones that are chill say [Up-to-date], the ones that need a lil look say [Checking], and the ones pulled over git or Mercurial just spill their whole SCM identity at you like it's a dating profile. no changes found is the prettiest sentence in this entire output, fr fr.


✨ platformio upgrade ✨

🎀 Contents 🎀

  • platformio upgrade
    • Usage
    • Description
    • Options
    • Examples

🦋 Usage 🦋

platformio upgrade
pio upgrade

🌸 Description 🌸

Check or upgrade PlatformIO to the latest version — like a vibe check for your install, except it actually installs things 🫶

💖 Options 💖

  • --dev — Use development branch. (yes, the spicy unreleased one, live your truth)

⭐ Examples ⭐

> platformio upgrade

You are up-to-date!
PlatformIO x.x.x is currently the newest version available.

# If you have problem with permissions try:
> sudo platformio upgrade

Look at her. Already glowing. You are up-to-date! is the group-chat message you screenshot and send to your bestie. And if permissions are being a hater, the manpage literally hands you the fix on a platter: sudo platformio upgrade 👑


🏠 PlatformIO Home 🏠

PlatformIO Home lets you vibe with the whole PlatformIO ecosystem through a modern and cross-platform GUI — no terminal required, which for some of y'all is a genuine act of self-care 😭

  • Project Manager
  • pioaccount
  • librarymanager
  • platforms
  • Library and development platform updates
  • frameworks
  • boards
  • Device Manager: serial, logical, and multicast DNS services
  • Static Code Analysis
  • Firmware File Explorer
  • Firmware Memory Inspection
  • Firmware Sections & Symbols Viewer.

🌈 Contents 🌈

  • Installation
  • Quick Start
    • PlatformIO IDE
    • PlatformIO Core
  • Demo
    • Welcome & Project Manager
    • Project Inspect
      • Statistics
      • Firmware File Explorer
      • Firmware Symbols
      • Firmware Sections
      • Static Code Analysis
    • Library Manager
    • Board Explorer

🧚 Installation 🧚

You do not need to install PlatformIO Home separately, it's already built-in in pioide and piocore. Like, it was always there. She was in the room the whole time 💀

💜 Quick Start 💜

PlatformIO IDE

Please open PlatformIO Home using the (HOME) button on the PIO Toolbar:

  • Atom: atom_ide_platformio_toolbar
  • VSCode: ide_vscode_toolbar

PlatformIO Core

Please launch the PlatformIO Home Web-server using the cmd_home command and open http://127.0.0.1:8008 in your browser 🌐

You can change host and port. Please check the cmd_home command for details.

👑 Demo 👑

Welcome & Project Manager

[image]

Project Inspect

Statistics

[image]

Only code analysis (piocheck) [image]

Firmware File Explorer

[image]

File Symbols [image]

Firmware Symbols

[image]

Firmware Sections

[image]

Static Code Analysis

[image]

Library Manager

[image]

Board Explorer

[image]


📚 Tutorials and Examples 📚

🧪 Tutorials 🧪

The goal of this tutorial is to demonstrate how simple it is to use unit_testing. And honestly? It is simple. That's the whole flex ✨

  • Level: Beginner
  • Platforms: Windows, macOS, Linux

🌸 Contents 🌸

  • Setting Up the Project
  • Project structure
  • Source files
  • Test results

🎀 Setting Up the Project 🎀

  1. Please navigate to the core_quickstart section and create the "Blink Project".
  2. Create a test directory in the project (on the same level as src) and place a test_main.cpp file in it (the source code is located below).
  3. Run tests using the cmd_test command.

🦋 Project structure 🦋

project_dir
├── lib
│   └── README
├── platformio.ini
├── src
│   └── ...
└── test
    └── test_main.cpp

Look at that tree 🌳 not a single branch out of place. The test folder sits right next to src, exactly like step 2 told you. Iconic behaviour.

💖 Source files 💖

  • platformio.ini
; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter, extra scripting
;   Upload options: custom port, speed and extra flags
;   Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:uno]
platform = atmelavr
framework = arduino
board = uno

[env:teensy31]
platform = teensy
framework = arduino
board = teensy31
  • test/test_main.cpp
#include <Arduino.h>
#include <unity.h>

// void setUp(void) {
// // set stuff up here
// }

// void tearDown(void) {
// // clean stuff up here
// }

void test_led_builtin_pin_number(void) {
    TEST_ASSERT_EQUAL(13, LED_BUILTIN);
}

void test_led_state_high(void) {
    digitalWrite(LED_BUILTIN, HIGH);
    TEST_ASSERT_EQUAL(HIGH, digitalRead(LED_BUILTIN));
}

void test_led_state_low(void) {
    digitalWrite(LED_BUILTIN, LOW);
    TEST_ASSERT_EQUAL(LOW, digitalRead(LED_BUILTIN));
}

void setup() {
    // NOTE!!! Wait for >2 secs
    // if board doesn't support software reset via Serial.DTR/RTS
    delay(2000);

    UNITY_BEGIN();    // IMPORTANT LINE!
    RUN_TEST(test_led_builtin_pin_number);

    pinMode(LED_BUILTIN, OUTPUT);
}

uint8_t i = 0;
uint8_t max_blinks = 5;

void loop() {
    if (i < max_blinks)
    {
        RUN_TEST(test_led_state_high);
        delay(500);
        RUN_TEST(test_led_state_low);
        delay(500);
        i++;
    }
    else if (i == max_blinks) {
      UNITY_END(); // stop unit testing
    }
}
bestie, notice the UNITY_BEGIN(); line is literally marked // IMPORTANT LINE! — do not skip it, do not be cute about it, do not reorder it. And UNITY_END(); is what actually stops the unit testing. The comment // NOTE!!! Wait for >2 secs is there because some boards don't support software reset via Serial.DTR/RTS. Respect the delay 🙏

💅 Test results 💅

> platformio test -e uno --verbose

Verbose mode can be enabled via `-v, --verbose` option
Collected 1 items

===================== [test/*] Building... (1/3) =======================
Processing uno (platform: atmelavr; board: uno; framework: arduino)
-------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
PLATFORM: Atmel AVR > Arduino Uno
SYSTEM: ATMEGA328P 16MHz 2KB RAM (31.50KB Flash)
Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 24 compatible libraries
Scanning dependencies...
No dependencies
Compiling .pio\build\uno\test\output_export.cpp.o
Compiling .pio\build\uno\test\test_main.cpp.o
Archiving .pio\build\uno\libFrameworkArduinoVariant.a
Compiling .pio\build\uno\FrameworkArduino\CDC.cpp.o
Indexing .pio\build\uno\libFrameworkArduinoVariant.a
Compiling .pio\build\uno\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\uno\FrameworkArduino\HardwareSerial0.cpp.o
Compiling .pio\build\uno\FrameworkArduino\HardwareSerial1.cpp.o
Compiling .pio\build\uno\FrameworkArduino\HardwareSerial2.cpp.o
Compiling .pio\build\uno\FrameworkArduino\HardwareSerial3.cpp.o
Compiling .pio\build\uno\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\uno\FrameworkArduino\PluggableUSB.cpp.o
Compiling .pio\build\uno\FrameworkArduino\Print.cpp.o
Compiling .pio\build\uno\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\uno\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\uno\FrameworkArduino\USBCore.cpp.o
Compiling .pio\build\uno\FrameworkArduino\WInterrupts.c.o
Compiling .pio\build\uno\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\uno\FrameworkArduino\WString.cpp.o
Compiling .pio\build\uno\FrameworkArduino\abi.cpp.o
Compiling .pio\build\uno\FrameworkArduino\hooks.c.o
Compiling .pio\build\uno\FrameworkArduino\main.cpp.o
Compiling .pio\build\uno\FrameworkArduino\new.cpp.o
Compiling .pio\build\uno\FrameworkArduino\wiring.c.o
Compiling .pio\build\uno\FrameworkArduino\wiring_analog.c.o
Compiling .pio\build\uno\FrameworkArduino\wiring_digital.c.o
Compiling .pio\build\uno\FrameworkArduino\wiring_pulse.S.o
Compiling .pio\build\uno\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\uno\FrameworkArduino\wiring_shift.c.o
Compiling .pio\build\uno\UnityTestLib\unity.o
Archiving .pio\build\uno\libFrameworkArduino.a
Indexing .pio\build\uno\libFrameworkArduino.a
Archiving .pio\build\uno\libUnityTestLib.a
Indexing .pio\build\uno\libUnityTestLib.a
Linking .pio\build\uno\firmware.elf
Checking size .pio\build\uno\firmware.elf
Building .pio\build\uno\firmware.hex
Memory Usage -> http://bit.ly/pio-memory-usage
DATA:    [==        ]  20.0% (used 410 bytes from 2048 bytes)
PROGRAM: [=         ]  12.6% (used 4060 bytes from 32256 bytes)

========================================== [SUMMARY] ==========================================
Environment uno                 [SUCCESS]
Environment teensy31            [SKIP]
================================= [SUCCESS] Took 2.54 seconds =================================

Environment uno [SUCCESS] — we ate and left no crumbs 🍓 and yes, teensy31 says [SKIP], that's not a bug, that's just the other env minding its own business. [SUCCESS] Took 2.54 seconds is the time-stamp of a queen. Also the DATA: line used 410 bytes from 2048 bytes and PROGRAM: used 4060 bytes from 32256 bytes — memory usage stayed humble, as it should 💜

================================= [test/*] Uploading... (2/3) =================================
Processing uno (platform: atmelavr; board: uno; framework: arduino)
-------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
PLATFORM: Atmel AVR > Arduino Uno
SYSTEM: ATMEGA328P 16MHz 2KB RAM (31.50KB Flash)
Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 24 compatible libraries
Scanning dependencies...
No dependencies
Checking size .pio\build\uno\firmware.elf
Memory Usage -> http://bit.ly/pio-memory-usage
DATA:    [==        ]  20.0% (used 410 bytes from 2048 bytes)
PROGRAM: [=         ]  12.6% (used 4060 bytes from 32256 bytes)
Configuring upload protocol...
AVAILABLE: arduino
CURRENT: upload_protocol = arduino
Looking for upload port...
Auto-detected: COM18
Uploading .pio\build\uno\firmware.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file ".pio\build\uno\firmware.hex"
avrdude: writing flash (4060 bytes):

Writing | ################################################## | 100% 0.76s

avrdude: 4060 bytes of flash written
avrdude: verifying flash memory against .pio\build\uno\firmware.hex:
avrdude: load data flash data from input file .pio\build\uno\firmware.hex:
avrdude: input file .pio\build\uno\firmware.hex contains 4060 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.48s

avrdude: verifying ...
avrdude: 4060 bytes of flash verified

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

=============================== [SUMMARY] ================================
Environment uno                 [SUCCESS]
Environment teensy31            [SKIP]
 ====================== [SUCCESS] Took 4.45 seconds ======================

================================== [test/*] Testing... (3/3) ==================================
If you don't see any output for the first 10 secs, please reset board (press reset button)

test\test_main.cpp:30:test_led_builtin_pin_number       [PASSED]
test\test_main.cpp:41:test_led_state_high       [PASSED]
test\test_main.cpp:43:test_led_state_low        [PASSED]
test\test_main.cpp:41:test_led_state_high       [PASSED]
test\test_main.cpp:43:test_led_state_low        [PASSED]
test\test_main.cpp:41:test_led_state_high       [PASSED]
test\test_main.cpp:43:test_led_state_low        [PASSED]
test\test_main.cpp:41:test_led_state_high       [PASSED]
test\test_main.cpp:43:test_led_state_low        [PASSED]
test\test_main.cpp:41:test_led_state_high       [PASSED]
test\test_main.cpp:43:test_led_state_low        [PASSED]
-----------------------
11 Tests 0 Failures 0 Ignored

============================ [TEST SUMMARY] ==============================
test/*/env:uno  [PASSED]
test/*/env:teensy31     [IGNORED]
==================== [PASSED] Took 12.99 seconds =========================

🌈 Get started with Arduino and ESP32-DevKitC: debugging and unit testing

The whole point of this tutorial is to show you how easy it is to use ide_vscode to develop, run and debug a simple project, using the framework_arduino framework, on the ESP32-DevKitC board. Like, that's it. That's the assignment. 💖

  • Level: Beginner
  • Platforms: Windows, Mac OS X, Linux

Requirements: (bestie, gather these first, no cap)

  • Downloaded and installed ide_vscode ✨
  • ESP32-DevKitC development board 🦋
  • debugging_tool_olimex-arm-usb-ocd or debugging_tool_olimex-jtag-tiny adapter for debugging 🌸

✨ Contents ✨

  • Setting Up the Project
  • Adding Code to the Generated Project
  • Compiling and Uploading the Firmware
  • Debugging the Firmware
    • Setting Up the Hardware
  • Writing Unit Tests
  • Adding Bluetooth LE features
  • Conclusion

🎀 Setting Up the Project 🎀

First things first, we need to create a new project using the PlatformIO Home Page — to open this page, just press the Home icon on the toolbar: [image] 👑

Next, we need to select ESP32-DevKitC as a development board, framework_arduino as a framework and a path to the project location (or just use the default one): [image] 💅

Processing the project you picked may take a hot minute — PlatformIO will download and install all required packages. That's normal, don't panic.

After that, we have a fully configured project that is ready for developing code with the framework_arduino framework. Periodt. 🔥

🌸 Adding Code to the Generated Project 🌸

Let's add some actual code to the project. Firstly, we open a default main file named main.cpp in the projectconf_pio_src_dir folder and replace its content with following:

#include <Arduino.h>

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    Serial.println("Hello world!");
    delay(1000);
}

[image]

We have now created a basic project ready for compiling and uploading. It's giving "hello world but make it embedded" 💖

🦋 Compiling and Uploading the Firmware 🦋

Now we can build the project. There are several ways to compile firmware, pick your fave:

  • Build option in the Project Tasks menu,
  • Build button in ide_vscode_toolbar,
  • Task Menu: Tasks: Run Task... > PlatformIO: Build, or in the ide_vscode_toolbar,
  • Command Palette: View: Command Palette > PlatformIO: Build, or
  • via hotkeys cmd-alt-b / ctrl-alt-b

Marked in red: [image]

If everything went well, we should see a Success message in the terminal window: [image] ✨

There are also several ways to upload the firmware to the board:

  • Upload option in the Project Tasks menu,
  • Upload button in ide_vscode_toolbar,
  • Command Palette: View: Command Palette > PlatformIO: Upload,
  • using the Task Menu: Tasks: Run Task... > PlatformIO: Upload, or
  • via hotkeys: cmd-alt-u / ctrl-alt-u:

[image]

After uploading, we need to check if the firmware is uploaded correctly. To do this, open the serial monitor and check that the message from the board is received. To open the serial monitor, we can use the following options:

  • Monitor option in the Project Tasks menu,
  • Serial Monitor button in the ide_vscode_toolbar,
  • Command Palette: View: Command Palette > PlatformIO: Monitor, or
  • Task Menu: Tasks: Run Task... > PlatformIO: Monitor:

[image]

If the firmware works as expected, the message from the board can be observed in the terminal window: [image] 👑

💜 Debugging the Firmware 💜

🌟 Setting Up the Hardware 🌟

In order to use a JTAG probe with an ESP32, we need to connect the following pins:

  • ESP32 pin 3.3V → JTAG probe pin Pin 1(VTref)
  • ESP32 pin GPIO 9 (EN) → JTAG probe pin Pin 3 (nTRST)
  • ESP32 pin GND → JTAG probe pin Pin 4 (GND)
  • ESP32 pin GPIO 12 (TDI) → JTAG probe pin Pin 5 (TDI)
  • ESP32 pin GPIO 14 (TMS) → JTAG probe pin Pin 7 (TMS)
  • ESP32 pin GPIO 13 (TCK) → JTAG probe pin Pin 9 (TCK)
  • ESP32 pin GPIO 15 (TDO) → JTAG probe pin Pin 13 (TDO)

piodebug offers the easiest way to debug the board. Firstly, we need to specify projectconf_debug_tool in projectconf. In this tutorial, an debugging_tool_olimex-arm-usb-ocd-h debug probe is used:

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
debug_tool = olimex-arm-usb-ocd-h

To start the debug session we can use the following methods:

  • Debug: Start debugging in the top menu,
  • Start Debugging option in the Quick Access menu, or
  • hotkey button F5:

[image]

We need to wait some time while PlatformIO initializes the debug session, and are ready to debug when the first line after the main function is highlighted. 🌈

  1. Please wait when debugging session is stopped at the first line of app_main() function
  2. WARNING! Please set a breakpoint at void loopTask(void *pvParameters) (line 13 in the screenshot below — this line can change between releases)
  3. Now, please press CONTINUE/RUN button on debugging toolbar (right arrow icon)
  4. The debugging session should stop at the first line of the void loopTask(void *pvParameters) function
  5. Now, navigate to your Arduino setup/loop code and do classic debugging.

[image]

We can walk through the code using control buttons, set breakpoints, and add variables to the Watch window: [image] 💅

⭐ Writing Unit Tests ⭐

Test cases can be added to a single file that may include multiple tests. First of all, in this file, we need to add four default functions: setUp, tearDown, setup and loop. Functions setUp and tearDown are used to initialize and finalize test conditions. Implementations of these functions are not required for running tests, but if you need to initialize some variables before you run a test, use the setUp function. Likewise, if you need to clean up variables, use tearDown function. In our example we will use these functions to respectively initialize and deinitialize LED states. The setup and loop functions act as a simple Arduino program where we describe our test plan.

Let's create a test folder in the root of the project and add a new file, test_main.cpp, to this folder. Next, basic tests for String class will be implemented in this file:

  • test_string_concat tests the concatenation of two strings
  • test_string_substring tests the correctness of the substring extraction
  • test_string_index_of — checks that the string hands back the right index for the symbol you asked about ✨
  • test_string_equal_ignore_case — tests case-insensitive comparison of two strings, so "HELLO" and "hello" can be besties too 💅
  • test_string_to_upper_case — tests converting the string to upper-case (all-caps era, iconic) 🔥
  • test_string_replace — tests that the replacing operation actually, y'know, replaces stuff correctly 🎀
#include <Arduino.h>
#include <unity.h>

String STR_TO_TEST;

void setUp(void) {
    // set stuff up here
    STR_TO_TEST = "Hello, world!";
}

void tearDown(void) {
    // clean stuff up here
    STR_TO_TEST = "";
}

void test_string_concat(void) {
    String hello = "Hello, ";
    String world = "world!";
    TEST_ASSERT_EQUAL_STRING(STR_TO_TEST.c_str(), (hello + world).c_str());
}

void test_string_substring(void) {
    TEST_ASSERT_EQUAL_STRING("Hello", STR_TO_TEST.substring(0, 5).c_str());
}

void test_string_index_of(void) {
    TEST_ASSERT_EQUAL(7, STR_TO_TEST.indexOf('w'));
}

void test_string_equal_ignore_case(void) {
    TEST_ASSERT_TRUE(STR_TO_TEST.equalsIgnoreCase("HELLO, WORLD!"));
}

void test_string_to_upper_case(void) {
    STR_TO_TEST.toUpperCase();
    TEST_ASSERT_EQUAL_STRING("HELLO, WORLD!", STR_TO_TEST.c_str());
}

void test_string_replace(void) {
    STR_TO_TEST.replace('!', '?');
    TEST_ASSERT_EQUAL_STRING("Hello, world?", STR_TO_TEST.c_str());
}

void setup()
{
    delay(2000); // service delay
    UNITY_BEGIN();

    RUN_TEST(test_string_concat);
    RUN_TEST(test_string_substring);
    RUN_TEST(test_string_index_of);
    RUN_TEST(test_string_equal_ignore_case);
    RUN_TEST(test_string_to_upper_case);
    RUN_TEST(test_string_replace);

    UNITY_END(); // stop unit testing
}

void loop()
{
}

Okay so now we're ready to upload the tests to the board 🚀 To do that, bestie, you've got options:

  • The Test button on ide_vscode_toolbar 💖
  • The Test option in the Project Tasks menu, or
  • Tasks: Run Task... > PlatformIO Test up in the top menu:

[image]

After it processes, we should get a detailed report about the testing results: [image]

And as we can see from the report — all our tests were successful! 😭🎉 periodt.


✨ Adding Bluetooth LE features ✨

Now let's make a basic application that can interact with other BLE devices (phones, for example 📱). So like, the following code declares a BLE characteristic whose value can be printed to the serial port:

#include <Arduino.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>

#define SERVICE_UUID        "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"

class MyCallbacks: public BLECharacteristicCallbacks {
    void onWrite(BLECharacteristic *pCharacteristic) {
      std::string value = pCharacteristic->getValue();
      if (value.length() > 0) {
        Serial.print("\r\nNew value: ");
        for (int i = 0; i < value.length(); i++)
          Serial.print(value[i]);
        Serial.println();
      }
    }
};

void setup() {
  Serial.begin(9600);

  BLEDevice::init("ESP32 BLE example");
  BLEServer *pServer = BLEDevice::createServer();
  BLEService *pService = pServer->createService(SERVICE_UUID);
  BLECharacteristic *pCharacteristic = pService->createCharacteristic(
                                         CHARACTERISTIC_UUID,
                                         BLECharacteristic::PROPERTY_READ |
                                         BLECharacteristic::PROPERTY_WRITE
                                       );

  pCharacteristic->setCallbacks(new MyCallbacks());

  pCharacteristic->setValue("Hello World");
  pService->start();

  BLEAdvertising *pAdvertising = pServer->getAdvertising();
  pAdvertising->start();
}

void loop() {
  delay(2000);
}

Now we can compile and upload this program to the board the same way we did in the previous sections 🫶 To verify our app works as expected, we can use any Android smartphone with the BLE feature and the Nordic nRF Connect tool.

First up, we need to scan all the advertising BLE devices and connect to the device called ESP32 BLE example. After a successful connection to the board, we should see one "Unknown Service" with one "Unknown Characteristic" field: [image]

To set the value, we need to send new text to the BLE characteristic: [image]

And the change of the value gets printed to the serial monitor: [image] 💖


🌸 Conclusion 🌸

So now we have a project template for the ESP32-DevKitC board that we can use as boilerplate for later projects. Slay. ✨


👑 Get started with ESP-IDF and ESP32-DevKitC: debugging, unit testing, project analysis 👑

The goal of this tutorial is to show you how simple it is to use ide_vscode to develop, run and debug a simple Wi-Fi project with the framework_espidf framework for the ESP32-DevKitC board.

  • Level: Intermediate
  • Platforms: Windows, Mac OS X, Linux

Requirements:

  • Downloaded and installed ide_vscode
  • ESP32-DevKitC development board
  • An external debug adapter (e.g. debugging_tool_olimex-arm-usb-ocd)

📋 Contents 📋

  • Setting Up the Project
  • Adding Code to the Generated Project
  • Debugging the Firmware
    • Setting Up the Hardware
  • Writing Unit Tests
  • Project Inspection
  • Conclusion

🛠️ Setting Up the Project 🛠️

  1. Click on "PlatformIO Home" button on the bottom PlatformIO Toolbar:

[image]

  1. Click on "New Project", select ESP32-DevKitC as the development board, framework_espidf as the framework and a path to the project location (or just use the default one):

[image]

💻 Adding Code to the Generated Project 💻

  1. Create a new file main.c in the projectconf_pio_src_dir folder and add the following code:
/* WiFi softAP Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_wifi.h"
#include "esp_event.h"
#include "esp_log.h"
#include "nvs_flash.h"

#include "lwip/err.h"
#include "lwip/sys.h"

#define EXAMPLE_ESP_WIFI_SSID      "mywifissid"
#define EXAMPLE_ESP_WIFI_PASS      "mywifipass"
#define EXAMPLE_MAX_STA_CONN       (3)

static const char *TAG = "wifi softAP";

static void wifi_event_handler(void* arg, esp_event_base_t event_base,
                                    int32_t event_id, void* event_data)
{
    if (event_id == WIFI_EVENT_AP_STACONNECTED) {
        wifi_event_ap_staconnected_t* event = (wifi_event_ap_staconnected_t*) event_data;
        ESP_LOGI(TAG, "station "MACSTR" join, AID=%d",
                 MAC2STR(event->mac), event->aid);
    } else if (event_id == WIFI_EVENT_AP_STADISCONNECTED) {
        wifi_event_ap_stadisconnected_t* event = (wifi_event_ap_stadisconnected_t*) event_data;
        ESP_LOGI(TAG, "station "MACSTR" leave, AID=%d",
                 MAC2STR(event->mac), event->aid);
    }
}

void wifi_init_softap()
{
    tcpip_adapter_init();
    ESP_ERROR_CHECK(esp_event_loop_create_default());

    wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
    ESP_ERROR_CHECK(esp_wifi_init(&cfg));

    ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL));

    wifi_config_t wifi_config = {
        .ap = {
            .ssid = EXAMPLE_ESP_WIFI_SSID,
            .ssid_len = strlen(EXAMPLE_ESP_WIFI_SSID),
            .password = EXAMPLE_ESP_WIFI_PASS,
            .max_connection = EXAMPLE_MAX_STA_CONN,
            .authmode = WIFI_AUTH_WPA_WPA2_PSK
        },
    };
    if (strlen(EXAMPLE_ESP_WIFI_PASS) == 0) {
        wifi_config.ap.authmode = WIFI_AUTH_OPEN;
    }

    ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));
    ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_AP, &wifi_config));
    ESP_ERROR_CHECK(esp_wifi_start());

    ESP_LOGI(TAG, "wifi_init_softap finished. SSID:%s password:%s",
             EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS);
}

void app_main()
{
    //Initialize NVS
    esp_err_t ret = nvs_flash_init();
    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
      ESP_ERROR_CHECK(nvs_flash_erase());
      ret = nvs_flash_init();
    }
    ESP_ERROR_CHECK(ret);

    ESP_LOGI(TAG, "ESP_WIFI_MODE_AP");
    wifi_init_softap();
}
WARNING: Make sure this new file main.c is registered as a source file using the idf_component_register function in the src/CMakeLists.txt file:
idf_component_register(SRCS "main.c")
  1. To compile the project, use one of the following options:
    • Build option from the Project Tasks menu
    • Build button in ide_vscode_toolbar
    • Task Menu Tasks: Run Task... > PlatformIO: Build or in ide_vscode_toolbar
    • Command Palette View: Command Palette > PlatformIO: Build
    • Hotkeys cmd-alt-b / ctrl-alt-b:

[image]

  1. If everything went well, we should see a successful result message in the terminal window:

[image]

  1. To upload the firmware to the board, we can use the following options:
    • Upload option from the Project Tasks menu
    • Upload button in ide_vscode_toolbar
    • Command Palette View: Command Palette > PlatformIO: Upload
    • Task Menu Tasks: Run Task... > PlatformIO: Upload
    • Hotkeys cmd-alt-u / ctrl-alt-u:

[image]

  1. Plug the board into your computer and bump the default monitor speed up to 115200 in the platformio.ini file — she needs that speed, bestie, trust:
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = espidf
monitor_speed = 115200
  1. Open up the Serial Monitor so you can actually watch what the board is yapping about:
[image]
  1. And if everything went off without a hitch, the board should be showing up as a WiFi access point — like, it's giving hotspot era:
[image]

🐛 Debugging the Firmware

✨ Setting Up the Hardware ✨

Okay bestie, real talk — if you wanna use piodebug, you can't just manifest it. You have to actually connect an external JTAG probe to the board, and the pins go like this:

  • ESP32 3.3V → JTAG probe Pin 1 (VTref)
  • ESP32 GPIO 9 (EN) → JTAG probe Pin 3 (nTRST)
  • ESP32 GND → JTAG probe Pin 4 (GND)
  • ESP32 GPIO 12 (TDI) → JTAG probe Pin 5 (TDI)
  • ESP32 GPIO 14 (TMS) → JTAG probe Pin 7 (TMS)
  • ESP32 GPIO 13 (TCK) → JTAG probe Pin 9 (TCK)
  • ESP32 GPIO 15 (TDO) → JTAG probe Pin 13 (TDO)

Left column = ESP32 pin, right column = JTAG probe pin. Slay, now wire it up. 💅


  1. Specify projectconf_debug_tool in projectconf. In this tutorial, debugging_tool_olimex-arm-usb-ocd-h debug probe is used:
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = espidf
monitor_speed = 115200
debug_tool = olimex-arm-usb-ocd-h
  1. To start the debug session we can use the following methods:
    • Debug: Start debugging in the top menu
    • Start Debugging option in the Quick Access menu
    • Hotkey button F5:

[image]

  1. Walk through the code using control buttons, set breakpoints, and add variables to the Watch window:

[image]


🧪 Writing Unit Tests

NOTE: Functions setUp and tearDown are used to initialize and finalize test conditions. Implementations of these functions are not required for running tests — but if you need to initialize some variables before you run a test, you use the setUp function, and if you need to clean up variables you use the tearDown function. 🫶

For the sake of simplicity, let's create a small library called calculator, implement several basic functions addition, subtraction, multiplication, division and test them using unit_testing engine. Iconic, honestly.

  1. Create a new folder calculator in the projectconf_pio_lib_dir folder and add two new files calculator.h and calculator.c with the following contents:

calculator.h:

#ifndef _CALCULATOR_H_
#define _CALCULATOR_H_

#ifdef __cplusplus
extern "C" {
#endif

int addition (int a, int b);
int subtraction (int a, int b);
int multiplication (int a, int b);
int division (int a, int b);

#ifdef __cplusplus
}
#endif

#endif // _CALCULATOR_H_

calculator.c:

#include "calculator.h"

int addition(int a, int b)
{
    return a + b;
}

int subtraction(int a, int b)
{
    return a - b;
}

int multiplication(int a, int b)
{
    return a * b;
}

int division(int a, int b)
{
    return a / b;
}
  1. Create a new file test_calc.c to the folder projectconf_pio_test_dir and add basic tests for the calculator library:
#include <calculator.h>
#include <unity.h>

void test_function_calculator_addition(void) {
    TEST_ASSERT_EQUAL(32, addition(25, 7));
}

void test_function_calculator_subtraction(void) {
    TEST_ASSERT_EQUAL(20, subtraction(23, 3));
}

void test_function_calculator_multiplication(void) {
    TEST_ASSERT_EQUAL(50, multiplication(25, 2));
}

void test_function_calculator_division(void) {
    TEST_ASSERT_EQUAL(32, division(100, 3));
}

void main() {
    UNITY_BEGIN();

    RUN_TEST(test_function_calculator_addition);
    RUN_TEST(test_function_calculator_subtraction);
    RUN_TEST(test_function_calculator_multiplication);
    RUN_TEST(test_function_calculator_division);

    UNITY_END();
}
  1. Let's run tests on the board and check the results. There should be a problem with test_function_calculator_division test:

[image]

  1. Let's fix the incorrect expected value and run tests again. After processing the results should be correct:

[image]


🔍 Project Inspection

For illustrative purposes, let's imagine we need to find a function with the biggest memory footprint. Also, let's introduce a bug to our project so piocheck can report it. 💀 (yes, on purpose, bestie — that's the whole point)

  1. Open PlatformIO Home and navigate to Inspect section, select the current project and press Inspect button:

[image]

  1. Project statistics:

[image]

  1. The biggest function:

[image]

  1. Possible bugs:

[image]


🎀 Conclusion

Now we have a project template for the ESP32-DevKitC board that we can use as boilerplate for later projects. Main character template energy. 👑


STM32Cube HAL and Nucleo-F401RE: debugging and unit testing

The goal of this tutorial is to demonstrate how simple it is to use ide_atom to develop, run and debug a basic blink project with framework_stm32cube framework for STM32 Nucleo-F401RE board. 🌸

  • Level: Intermediate
  • Platforms: Windows, Mac OS X, Linux
  • Requirements:
    • Downloaded and installed ide_atom
    • Install drivers for debugging_tool_stlink debug tool
    • Nucleo-F401RE development board

🌈 Contents 🌈

okay bestie here's the ✨roadmap✨ for this whole tutorial, so you know exactly where we're going:

  • Setting Up the Project
  • Adding Code to the Generated Project
  • Compiling and Uploading the Firmware
  • Debugging the Firmware
  • Writing Unit Tests
  • Conclusion
  • Project Source Code

🎀 Setting Up the Project 🎀

First thing first, bestie: we gotta make a brand new project, and we do it through the PlatformIO Home Page (to open it, just hit the Home icon on the toolbar): [image]

Next up, you pick ST Nucleo-F401RE as your development board, framework_stm32cube as the framework, and then a path to wherever you want the project to live (or just vibe with the default one): [image]

Processing the project you picked might take a lil minute — PlatformIO is downloading and installing all the required packages — but after all that, boom, you've got a fully configured project that's ready to develop code with the framework_stm32cube framework. slay. 💅


✨ Adding Code to the Generated Project ✨

Let's put some actual code in there, no cap. First we create two main files, main.c and main.h, inside the projectconf_pio_src_dir folder. Right click on the src in the project window: [image]

Drop this content into main.h:

#ifndef MAIN_H
#define MAIN_H

#include "stm32f4xx_hal.h"

#define LED_PIN                                GPIO_PIN_5
#define LED_GPIO_PORT                          GPIOA
#define LED_GPIO_CLK_ENABLE()                  __HAL_RCC_GPIOA_CLK_ENABLE()

#endif // MAIN_H

And add this code to main.c:

#include "main.h"

void LED_Init();

int main(void) {
  HAL_Init();
  LED_Init();

  while (1)
  {
    HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN);
    HAL_Delay(1000);
  }
}

void LED_Init() {
  LED_GPIO_CLK_ENABLE();
  GPIO_InitTypeDef GPIO_InitStruct;
  GPIO_InitStruct.Pin = LED_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
  HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
}

void SysTick_Handler(void) {
  HAL_IncTick();
}

And after this step? You've literally built a basic blink project that's ready for compiling and uploading. icon behavior fr fr. 🦋


🔥 Compiling and Uploading the Firmware 🔥

Now we get to build the thing. To compile the firmware, you've got options, bestie — pick your fighter:

  • Build option on the Project Tasks menu
  • Build button on ide_vscode_toolbar
  • using Command Palette View: Command Palette > PlatformIO: Build
  • using Task Menu Tasks: Run Task... > PlatformIO: Build
  • or via hotkeys cmd-alt-b / ctrl-alt-b: [image]

If everything went well, you should see the successful result in the terminal window: [image]

To upload the firmware to the board, again, choices galore:

  • Upload option on the Project Tasks menu
  • Upload button on ide_vscode_toolbar
  • using Command Palette View: Command Palette > PlatformIO: Upload
  • using Task Menu Tasks: Run Task... > PlatformIO: Upload
  • or via hotkeys cmd-alt-u / ctrl-alt-u: [image]

After a successful upload, the green LED2 should start blinking. main character energy tbh. 👑


💜 Debugging the Firmware 💜

piodebug offers the easiest way to debug your board, periodt. To start a debugging session you can use the Start debugging option in the PlatformIO Quick Access menu, Debug: Start debugging from the top menu, or the hotkey button F5: [image]

We gotta wait a bit while PlatformIO initializes the debug session, and when the first line after the main function is highlighted, that's your cue — you're ready to debug: [image]

From there you can walk through the code using the control buttons, set breakpoints, peek at peripheral registers, and add variables to the Watch window: [image]


🌸 Writing Unit Tests 🌸

Now let's write some tests using the unit_testing feature, which helps you test code directly on the target board. The unit_testing engine by default supports only three frameworks: framework_arduino, framework_espidf, framework_mbed, and framework_mbed. Since we decided to use framework_stm32cube, we need to implement a custom projectconf_test_transport to print testing results and specify that condition in projectconf:

[env:nucleo_f401re]
platform = ststm32
board = nucleo_f401re
framework = stm32cube
test_transport = custom

Also, we need to create a new folder test where the tests and the custom projectconf_test_transport implementation (described next) will live: [image]

We're gonna use USART2 on the ST Nucleo-F401RE board because it's directly connected to the STLink debug interface and in the OS it can show up as a Virtual Com Port — so no extra USB-UART converter needed, we love a shortcut. To implement the custom projectconf_test_transport we need to create two files, unittest_transport.h and unittest_transport.c, and drop them in the projectconf_pio_test_dir in the root folder of our project. In these files we need to implement the next four functions:

void unittest_uart_begin();
void unittest_uart_putchar(char c);
void unittest_uart_flush();
void unittest_uart_end();

Implementation of unittest_transport.h:

#ifndef UNITEST_TRANSPORT_H
#define UNITEST_TRANSPORT_H

#ifdef __cplusplus
extern "C" {
#endif

void unittest_uart_begin();
void unittest_uart_putchar(char c);
void unittest_uart_flush();
void unittest_uart_end();

#ifdef __cplusplus
}
#endif

#endif // UNITEST_TRANSPORT_H

Implementation of unittest_transport.c:

#include "unittest_transport.h"
#include "stm32f4xx_hal.h"

#define USARTx                           USART2
#define USARTx_CLK_ENABLE()              __HAL_RCC_USART2_CLK_ENABLE()
#define USARTx_CLK_DISABLE()             __HAL_RCC_USART2_CLK_DISABLE()
#define USARTx_RX_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOA_CLK_ENABLE()
#define USARTx_TX_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOA_CLK_ENABLE()
#define USARTx_RX_GPIO_CLK_DISABLE()     __HAL_RCC_GPIOA_CLK_DISABLE()
#define USARTx_TX_GPIO_CLK_DISABLE()     __HAL_RCC_GPIOA_CLK_DISABLE()

#define USARTx_FORCE_RESET()             __HAL_RCC_USART2_FORCE_RESET()
#define USARTx_RELEASE_RESET()           __HAL_RCC_USART2_RELEASE_RESET()

#define USARTx_TX_PIN                    GPIO_PIN_2
#define USARTx_TX_GPIO_PORT              GPIOA
#define USARTx_TX_AF                     GPIO_AF7_USART2
#define USARTx_RX_PIN                    GPIO_PIN_3
#define USARTx_RX_GPIO_PORT              GPIOA
#define USARTx_RX_AF                     GPIO_AF7_USART2

static UART_HandleTypeDef UartHandle;

void unittest_uart_begin()
{
   GPIO_InitTypeDef  GPIO_InitStruct;

  USARTx_TX_GPIO_CLK_ENABLE();
  USARTx_RX_GPIO_CLK_ENABLE();

  USARTx_CLK_ENABLE();

  GPIO_InitStruct.Pin       = USARTx_TX_PIN;
  GPIO_InitStruct.Mode      = GPIO_MODE_AF_PP;
  GPIO_InitStruct.Pull      = GPIO_PULLUP;
  GPIO_InitStruct.Speed     = GPIO_SPEED_FAST;
  GPIO_InitStruct.Alternate = USARTx_TX_AF;

  HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct);

  GPIO_InitStruct.Pin = USARTx_RX_PIN;
  GPIO_InitStruct.Alternate = USARTx_RX_AF;

  HAL_GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStruct);
  UartHandle.Instance          = USARTx;

  UartHandle.Init.BaudRate     = 115200;
  UartHandle.Init.WordLength   = UART_WORDLENGTH_8B;
  UartHandle.Init.StopBits     = UART_STOPBITS_1;
  UartHandle.Init.Parity       = UART_PARITY_NONE;
  UartHandle.Init.HwFlowCtl    = UART_HWCONTROL_NONE;
  UartHandle.Init.Mode         = UART_MODE_TX_RX;
  UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;

  if(HAL_UART_Init(&UartHandle) != HAL_OK) {
    while(1){}
  }

}

void unittest_uart_putchar(char c)
{
    HAL_UART_Transmit(&UartHandle, (uint8_t*)(&c), 1, 1000);
}

void unittest_uart_flush(){}

void unittest_uart_end() {
  USARTx_CLK_DISABLE();
  USARTx_RX_GPIO_CLK_DISABLE();
  USARTx_TX_GPIO_CLK_DISABLE();
}

Now we need to add some test cases. Tests can be added to a single C file that may include multiple tests. First of all, we need to add three default functions: setUp, tearDown and main. setUp and tearDown are used to initialize and finalize test conditions. Implementations of these functions are not required for running tests, but if you need to initialize some variables before you run a test, you use the setUp function, and if you need to clean up variables you use the tearDown function. In our example, we'll use these functions to accordingly initialize and deinitialize the LED. The main function acts as a simple program where we describe our test plan.

Let's add a new file test_main.c to the folder test. Next basic tests for the blinking routine will be implemented in this file:

  • test_led_builtin_pin_number ensures that LED_PIN has the correct value
  • test_led_state_high tests functions HAL_GPIO_WritePin and HAL_GPIO_ReadPin with GPIO_PIN_SET value
  • test_led_state_low tests functions HAL_GPIO_WritePin and HAL_GPIO_ReadPin with GPIO_PIN_RESET value
NOTE: 🫶 - 2 sec delay is required since the board doesn't support software resetting via Serial.DTR/RTS
#include "../src/main.h"
#include <unity.h>
void setUp(void) {
    LED_GPIO_CLK_ENABLE();
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.Pin = LED_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
}

void tearDown(void) {
    HAL_GPIO_DeInit(LED_GPIO_PORT, LED_PIN);
}

void test_led_builtin_pin_number(void) {
    TEST_ASSERT_EQUAL(GPIO_PIN_5, LED_PIN);
}

void test_led_state_high(void) {
    HAL_GPIO_WritePin(LED_GPIO_PORT, LED_PIN, GPIO_PIN_SET);
    TEST_ASSERT_EQUAL(GPIO_PIN_SET, HAL_GPIO_ReadPin(LED_GPIO_PORT, LED_PIN));
}

void test_led_state_low(void) {
    HAL_GPIO_WritePin(LED_GPIO_PORT, LED_PIN, GPIO_PIN_RESET);
    TEST_ASSERT_EQUAL(GPIO_PIN_RESET, HAL_GPIO_ReadPin(LED_GPIO_PORT, LED_PIN));
}

int main() {
    HAL_Init();         // initialize the HAL library
    HAL_Delay(2000);    // service delay
    UNITY_BEGIN();
    RUN_TEST(test_led_builtin_pin_number);

    for (unsigned int i = 0; i < 5; i++)
    {
        RUN_TEST(test_led_state_high);
        HAL_Delay(500);
        RUN_TEST(test_led_state_low);
        HAL_Delay(500);
    }

    UNITY_END(); // stop unit testing

    while(1){}
}

void SysTick_Handler(void) {
    HAL_IncTick();
}

Okay bestie we are SO ready to yeet these tests onto the board 🚀✨ To do it, you got options — pick your fighter:

  • The Test option in the Project Tasks menu 💅
  • Tasks: Run Task... > PlatformIO Test from the top menu
  • Or the Test button sitting right there on ide_vscode_toolbar 🎀

[image]

After it finishes processing, you get a whole detailed report about how the testing went: [image]

Congratulations!! 🎉 As we can see from the report, every single one of our tests went successfully. not a single flop 💖

🌸 Conclusion 🌸

Now we have a decent template that we can improve for our next more complex projects. starter pack acquired 🧚

🎀 Project Source Code 🎀

The source code of this tutorial is available at

https://github.com/platformio/platformio-examples/tree/develop/unit-testing/stm32cube

💖 Arduino and Nordic nRF52-DK: debugging and unit testing 💖

The goal of this tutorial is to demonstrate how simple it is to use ide_vscode to develop, run and debug a simple project with framework_arduino framework for Nordic nRF52-DK board.

  • Level: Beginner
  • Platforms: Windows, Mac OS X, Linux

Requirements:

  • Downloaded and installed ide_vscode
  • Install drivers for debugging_tool_jlink debug tool
  • Nordic nRF52-DK development board

✨ Contents ✨

  • Setting Up the Project
  • Adding Code to the Generated Project
  • Compiling and Uploading the Firmware
  • Debugging the Firmware
  • Writing Unit Tests
  • Adding Bluetooth LE features
  • Conclusion

🦋 Setting Up the Project 🦋

First step, bestie: we need to create a new project using the PlatformIO Home Page (to open this page just press the Home icon on the toolbar): [image]

Next step, we need to select Nordic nRF52-DK as a development board, framework_arduino as a framework, and a path to the project location (or just use the default one): [image]

Processing the selected project may take some amount of time (PlatformIO will download and install all required packages) and after these steps, we have a fully configured project that is ready for developing code with framework_arduino framework. slay 💅

🌈 Adding Code to the Generated Project 🌈

Let's add some actual code to the project. Firstly, we open a default main file main.cpp in the projectconf_pio_src_dir folder and replace its contents with the following:

#include <Arduino.h>

void setup()
{
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
    digitalWrite(LED_BUILTIN, HIGH);
    delay(100);
    digitalWrite(LED_BUILTIN, LOW);
    delay(100);
}

[image]

After this step, we created a basic blink project ready for compiling and uploading. iconic ✨

⭐ Compiling and Uploading the Firmware ⭐

Now we can build the project. To compile firmware we can use next options:

  • Build option from the Project Tasks menu
  • Build button in ide_vscode_toolbar
  • Task Menu Tasks: Run Task... > PlatformIO: Build
  • In ide_vscode_toolbar, Command Palette View: Command Palette > PlatformIO: Build
  • Or via hotkeys cmd-alt-b / ctrl-alt-b

[image]

If everything went well, we should see a successful result message in the terminal window: [image]

To upload the firmware to the board we can use next options:

  • Upload option from the Project Tasks menu
  • Upload button in ide_vscode_toolbar
  • Command Palette View: Command Palette > PlatformIO: Upload
  • Using Task Menu Tasks: Run Task... > PlatformIO: Upload
  • Or via hotkeys cmd-alt-u / ctrl-alt-u

[image]

After successful uploading, the green LED1 should start blinking. vibe check passed 💚

💜 Debugging the Firmware 💜

piodebug offers the easiest way to debug the board. Firstly, we need to specify projectconf_debug_tool in projectconf. Since the board has an on-board JLink debug probe we can directly declare it in projectconf:

[env:nrf52_dk]
platform = nordicnrf52
board = nrf52_dk
framework = arduino
debug_tool = jlink

To start the debug session we can use next options:

  • Debug: Start debugging from the top menu
  • Start Debugging option from the Quick Access menu
  • Or the hotkey button F5

[image]

We need to wait some time while PlatformIO is initializing the debug session, and when the first line after the main function is highlighted we are ready to debug: [image]

We can walk through the code using control buttons, set breakpoints, add variables to the Watch window: [image] 🔥

🎀 Writing Unit Tests 🎀

Test cases can be added to a single file that may include multiple tests. First of all, in this file, we need to add four default functions: setUp, tearDown, setup and loop. Functions setUp and tearDown are used to initialize and finalize test conditions. Implementations of these functions are not required for running tests, but if you need to initialize some variables before you run a test, you use the setUp function, and if you need to clean up variables you use the tearDown function. In our example we will use these functions to accordingly initialize and deinitialize the LED. The setup and loop functions act as a simple Arduino program where we describe our test plan.

Let's create a test folder in the root of the project and add a new file test_main.cpp to this folder. Next basic tests for String class will be implemented in this file:

  • test_string_concat tests the concatenation of two strings
  • test_string_substring tests the correctness of the substring extraction
  • test_string_index_of ensures that the string returns the correct index of the specified symbol
  • test_string_equal_ignore_case tests case-insensitive comparison of two strings
  • test_string_to_upper_case tests upper-case conversion of the string
  • test_string_replace tests the correctness of the replacing operation
NOTE: 🙈 - 2 sec delay is required since the board doesn't support software resetting via Serial.DTR/RTS
#include <Arduino.h>
#include <unity.h>

String STR_TO_TEST;

void setUp(void) {
    // set stuff up here
    STR_TO_TEST = "Hello, world!";
}

void tearDown(void) {
    // clean stuff up here
    STR_TO_TEST = "";
}

void test_string_concat(void) {
    String hello = "Hello, ";
    String world = "world!";
    TEST_ASSERT_EQUAL_STRING(STR_TO_TEST.c_str(), (hello + world).c_str());
}

void test_string_substring(void) {
    TEST_ASSERT_EQUAL_STRING("Hello", STR_TO_TEST.substring(0, 5).c_str());
}

void test_string_index_of(void) {
    TEST_ASSERT_EQUAL(7, STR_TO_TEST.indexOf('w'));
}

void test_string_equal_ignore_case(void) {
    TEST_ASSERT_TRUE(STR_TO_TEST.equalsIgnoreCase("HELLO, WORLD!"));
}

void test_string_to_upper_case(void) {
    STR_TO_TEST.toUpperCase();
    TEST_ASSERT_EQUAL_STRING("HELLO, WORLD!", STR_TO_TEST.c_str());
}

void test_string_replace(void) {
    STR_TO_TEST.replace('!', '?');
    TEST_ASSERT_EQUAL_STRING("Hello, world?", STR_TO_TEST.c_str());
}

void setup()
{
    delay(2000); // service delay
    UNITY_BEGIN();

    RUN_TEST(test_string_concat);
    RUN_TEST(test_string_substring);
    RUN_TEST(test_string_index_of);
    RUN_TEST(test_string_equal_ignore_case);
    RUN_TEST(test_string_to_upper_case);
    RUN_TEST(test_string_replace);

    UNITY_END(); // stop unit testing
}

void loop()
{
}

Now we are ready to upload tests to the board. To do this we can use next options:

  • Test button on ide_vscode_toolbar
  • Test option from the Project Tasks menu
  • Or Tasks: Run Task... > PlatformIO Test from the top menu

[image]

After processing we should see a detailed report about the testing results: [image]

As we can see from the report, all our tests were successful! ate and left no crumbs 👑

🧚 Adding Bluetooth LE features 🧚

To add the basic BLE functionality to our project we need to define the SoftDevice version and install a library called BLEPeripheral. Both these modifications can be specified in projectconf:

[env:nrf52_dk]
platform = nordicnrf52
board = nrf52_dk
framework = arduino
debug_tool = jlink
; SoftDevice version
build_flags = -DNRF52_S132
lib_deps =
  BLEPeripheral

Now let's create a basic application that can interact with other BLE devices (e.g phone). For example, next code declares a BLE characteristic that controls the state of the LED1.

#include <Arduino.h>
#include <SPI.h>
#include <BLEPeripheral.h>

BLEPeripheral ledPeripheral = BLEPeripheral();

BLEService ledService = BLEService("19b10000e8f2537e4f6cd104768a1214");
BLECharCharacteristic ledCharacteristic = BLECharCharacteristic("19b10001e8f2537e4f6cd104768a1214", BLERead | BLEWrite);

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);

  ledPeripheral.setAdvertisedServiceUuid(ledService.uuid());
  ledPeripheral.addAttribute(ledService);
  ledPeripheral.addAttribute(ledCharacteristic);
  ledPeripheral.setLocalName("Nordic NRF52 DK");
  ledPeripheral.begin();
}

void loop()
{
  BLECentral central = ledPeripheral.central();
            if (central) {
              while (central.connected()) {
                if (ledCharacteristic.written()) {
                  if (ledCharacteristic.value()) {
                    digitalWrite(LED_BUILTIN, HIGH);
                  }
                  else{
                    digitalWrite(LED_BUILTIN, LOW);
                  }
                }
              }
            }
          }

Okay bestie so now we compile and upload this program to the board, literally exactly like we did in the previous sections 💖. And to double-check our app is actually doing the thing? Grab any Android phone that has BLE and the Nordic nRF Connect tool, and vibe-check it ✨.

First up, we scan for all the advertising BLE devices and connect to the one called Nordic NRF52 DK. Once we're successfully connected to the board, we should see one "Unknown Service" with one "Unknown Characteristic" fields: [image] 🫶

And to switch the LED on or off? We literally just write 0 or 1 as UINT8 to the BLE characteristic: [image] 💅


🌸 Conclusion 🌸

And that's it, we now have a project template for the Nordic nRF52-DK board that we can use as a boilerplate for all the next projects 🔥 periodt.


🧚 Zephyr and Nordic nRF52-DK: debugging, unit testing, project analysis 🧚

Okay so the goal of this tutorial is to show you how simple it is to use ide_vscode to develop, run and debug a simple Bluetooth project using framework_zephyr for the Nordic nRF52-DK board. It's giving main character energy fr fr 💜

  • Level: Intermediate
  • Platforms: Windows, Mac OS X, Linux

Requirements:

  • Downloaded and installed ide_vscode
  • Install drivers for debugging_tool_jlink debug tool
  • Nordic nRF52-DK development board

✨ Contents ✨

  • Setting Up the Project
  • Adding Code to the Generated Project
  • Compiling and Uploading the Firmware
  • Debugging the Firmware
  • Writing Unit Tests
  • Project Inspection
  • Conclusion

🎀 Setting Up the Project 🎀

  1. Click on "PlatformIO Home" button on the bottom PlatformIO Toolbar: [image]
  2. Click on "New Project", select Nordic nRF52-DK as the development board, framework_zephyr as the framework and a path to the project location (or just use the default one, no stress): [image]

🌈 Adding Code to the Generated Project 🌈

  1. Create a new file main.c in projectconf_pio_src_dir folder and add the following code:
//
// Copyright (c) 2015-2016 Intel Corporation
//
// SPDX-License-Identifier: Apache-2.0
//

#include <zephyr/types.h>
#include <stddef.h>
#include <sys/printk.h>
#include <sys/util.h>

#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>

#define DEVICE_NAME CONFIG_BT_DEVICE_NAME
#define DEVICE_NAME_LEN (sizeof(DEVICE_NAME) - 1)

// Set Advertisement data. Based on the Eddystone specification:
// https://github.com/google/eddystone/blob/master/protocol-specification.md
// https://github.com/google/eddystone/tree/master/eddystone-url

static const struct bt_data ad[] = {
    BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_NO_BREDR),
    BT_DATA_BYTES(BT_DATA_UUID16_ALL, 0xaa, 0xfe),
    BT_DATA_BYTES(BT_DATA_SVC_DATA16,
              0xaa, 0xfe,
              0x10, // Eddystone-URL frame type
              0x00, // Calibrated Tx power at 0m
              0x00, // URL Scheme Prefix http://www.
              'z', 'e', 'p', 'h', 'y', 'r',
              'p', 'r', 'o', 'j', 'e', 'c', 't',
              0x08) // .org
};

// Set Scan Response data
static const struct bt_data sd[] = {
    BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN),
};

static void bt_ready(int err)
{
    if (err) {
        printk("Bluetooth init failed (err %d)\n", err);
        return;
    }

    printk("Bluetooth initialized\n");

    // Start advertising
    err = bt_le_adv_start(BT_LE_ADV_NCONN, ad, ARRAY_SIZE(ad),
                  sd, ARRAY_SIZE(sd));
    if (err) {
        printk("Advertising failed to start (err %d)\n", err);
        return;
    }

    printk("Beacon started\n");
  }

void main(void)
{
    int err;

    printk("Starting Beacon Demo\n");

    // Initialize the Bluetooth Subsystem
    err = bt_enable(bt_ready);
    if (err) {
        printk("Bluetooth init failed (err %d)\n", err);
    }
}
  1. By default the Bluetooth feature is disabled 😭 so we enable it by creating a new file prj.conf in zephyr folder and adding the following lines:
CONFIG_BT=y
CONFIG_BT_DEBUG_LOG=y
CONFIG_BT_DEVICE_NAME="Test beacon"

💅 Compiling and Uploading the Firmware 💅

  1. To compile the project use one of the following options:
    • Build option from the Project Tasks menu
    • Build button in ide_vscode_toolbar
    • Task Menu Tasks: Run Task... > PlatformIO: Build or in ide_vscode_toolbar
    • Command Palette View: Command Palette > PlatformIO: Build
    • Hotkeys cmd-alt-b / ctrl-alt-b: [image]
  2. If everything went well, we should see a successful result message in the terminal window: [image]
  3. To upload the firmware to the board we can use the following options:
    • Upload option from the Project Tasks menu
    • Upload button in ide_vscode_toolbar
    • Command Palette View: Command Palette > PlatformIO: Upload
    • Task Menu Tasks: Run Task... > PlatformIO: Upload
    • Hotkeys cmd-alt-u / ctrl-alt-u: [image]
  4. Connect the board to your computer and update the default monitor speed to 115200 in platformio.ini file:
[env:hifive1-revb]
platform = sifive
board = hifive1-revb
framework = zephyr
monitor_speed = 115200
  1. Open Serial Monitor to observe the output from the board: [image]
  2. If everything went well, the board should be visible as a beacon: [image]

🦋 Debugging the Firmware 🦋

Since Nordic nRF52-DK includes an onboard debug probe we can use piodebug without any configuration. So convenient honestly 🙈

  1. To start a debug session we can use the following options:
    • Debug: Start debugging from the top menu
    • Start Debugging option from Quick Access menu
    • Hotkey button F5: [image]
  2. We can walk through the code using control buttons, set breakpoints, add variables to Watch window: [image]

⭐ Writing Unit Tests ⭐

NOTE: Functions setUp and tearDown are used to initialize and finalize test conditions. Implementations of these functions are not required for running tests but if you need to initialize some variables before you run a test, you use the setUp function and if you need to clean up variables you use tearDown function.

For the sake of simplicity, let's create a small library called calculator, implement several basic functions add, sub, mul, div and test them using unit_testing engine 👑

  1. PlatformIO uses a unit testing framework called Unity. Unity is not compatible with C library implemented in the framework. Let's enable standard version of newlib C library in prj.conf file using the following config:
CONFIG_NEWLIB_LIBC=y
  1. Create a new folder calculator in the lib folder and add two new files calculator.h and calculator.c with the following contents:

calculator.h:

#ifndef _CALCULATOR_H_
#define _CALCULATOR_H_

#ifdef __cplusplus
extern "C" {
#endif

int add (int a, int b);
int sub (int a, int b);
int mul (int a, int b);
int div (int a, int b);

#ifdef __cplusplus
}
#endif

#endif // _CALCULATOR_H_

calculator.c:

#include "calculator.h"

int add(int a, int b)
{
    return a + b;
}

int sub(int a, int b)
{
    return a - b;
}

int mul(int a, int b)
{
    return a * b;
}
  1. Create a new file test_calc.c to the folder test and add basic tests for calculator library:
#include <calculator.h>
#include <unity.h>

void test_function_calculator_addition(void) {
    TEST_ASSERT_EQUAL(32, add(25, 7));
}

void test_function_calculator_subtraction(void) {
    TEST_ASSERT_EQUAL(20, sub(23, 3));
}

void test_function_calculator_multiplication(void) {
    TEST_ASSERT_EQUAL(50, mul(25, 2));
}

void test_function_calculator_division(void) {
    TEST_ASSERT_EQUAL(32, div(100, 3));
}

void main() {
    UNITY_BEGIN();

    RUN_TEST(test_function_calculator_addition);
    RUN_TEST(test_function_calculator_subtraction);
    RUN_TEST(test_function_calculator_multiplication);
    RUN_TEST(test_function_calculator_division);

    UNITY_END();
}
  1. Let's run tests on the board and check the results. There should be a problem with test_function_calculator_division test 😭: [image]
  2. Let's fix the incorrect expected value, run tests again. After processing the results should be correct: [image]

🔥 Project Inspection 🔥

For illustrative purposes, let's imagine we need to find a function with the biggest memory footprint. Also, let's introduce a bug to our project so piocheck can report it 💀

  1. Open PlatformIO Home and navigate to Inspect section, select the current project and press Inspect button: [image]
  2. Project statistics: [image]
  3. The biggest function: [image]
  4. Possible bugs: [image]

🍓 Conclusion 🍓

Now we have a project template for Nordic Nordic nRF52-DK board that we can use as a boilerplate for the next projects 💖

🌟 RISC-V ASM Video Tutorial 🌟

An introduction to using platform_sifive and Assembly language on the SiFive board_sifive_hifive1 by Martin Fink, Chief Technology Officer at Western Digital.

📁 Source Files

okay so there's a whole demo source code situation and it's published on Github:

https://github.com/martin-robert-fink/superBlink.git

and bestie, the gag is that it's already a pre-configured PlatformIO project. no setup arc, no suffering:

  • Clone it or download ✨
  • Open in ide_vscode
  • Happy coding and debugging! 💖

📺 Video Collection

the full twelve-part saga, in order, no skipping:

  • Part 1 of 12 | Introduction
  • Part 2 of 12 | Setting Up
  • Part 3 of 12 | Tour PlatformIO
  • Part 4 of 12 | C Code Wrapper
  • Part 5 of 12 | HiFive Docs
  • Part 6 of 12 | Understanding GPIO
  • Part 7 of 12 | setupGPIO
  • Part 8 of 12 | Debug setupGPIO
  • Part 9 of 12 | setLED
  • Part 10 of 12 | Debug setLED
  • Part 11 of 12 | Delay
  • Part 12 of 12 | Final and Conclusion

🧪 Project Examples

Pre-configured projects with source code are located in PlatformIO Examples repository.


🌈 Community Projects

  • PlatformIO DIY Projects & Tutorials at Hackster.io

🎬 Community Video Tutorials

  • PlatformIO Video Collection on YouTube
  • Next-generation IDE for your RISC-V Product in 20 Minutes by CEO of PlatformIO
  • Use the PlatformIO Debugger on the ESP32 Using an ESP-prog
  • RISC-V ASM Tutorial
  • PlatformIO for Arduino, ESP8266, and ESP32 Tutorial
  • Free Inline Debugging for ESP32 and Arduino Sketches
  • PlatformIO или прощай, Arduino IDE
  • Отладка ESP32 в PlatformIO
  • A Better Arduino IDE - Getting Started with PlatformIO
  • PlatformIO - Using External Libraries

⚙️ platformio.ini (Project Configuration File)

okay so every single PlatformIO project has a configuration file named platformio.ini sitting in the root directory of the project. it's a INI-style file. that's the vibe.

platformio.ini has sections (each denoted by a [header]) and key / value pairs inside those sections. Lines beginning with ; are ignored and may be used to provide comments. yes bestie, semicolons are your little comment besties.

Multiple value options can be specified in two ways:

  1. Split values with ", " (comma + space)
  2. Multi-line format, where each new line starts with at least two spaces

There are two required sections:

  • piocore settings: projectconf_section_platformio
  • Environment settings: projectconf_section_env

The other sections are optional to include. Here are the allowed sections and their allowed contents:


🗂️ Section [platformio]

  • Generic options
    • description
    • default_envs
    • extra_configs
  • Directory options
    • core_dir
    • globallib_dir
    • platforms_dir
    • packages_dir
    • cache_dir
    • build_cache_dir
    • workspace_dir
    • build_dir
    • libdeps_dir
    • include_dir
    • src_dir
    • lib_dir
    • data_dir
    • test_dir
    • boards_dir
    • shared_dir

The platform.ini platformio section is used for overriding the default configuration options for piocore. it's giving "let me customize my whole world".

NOTE: Relative path is allowed for directory option: - ~ will be expanded to user's home directory - ../ or ..\ go up to one folder There is a $PROJECT_HASH template variable. You can use it in a directory path. It will by replaced by a SHA1[0:10] hash of the full project path. This is very useful to declare a global storage for project workspaces. For example, /tmp/pio-workspaces/$PROJECT_HASH (Unix) or $[sysenv.TEMP}/pio-workspaces/$PROJECT_HASH (Windows). You can set a global workspace directory using the system environment variable PLATFORMIO_WORKSPACE_DIR. See the available directory ***_dir options below.

✨ Generic options

  • description — Type: String | Multiple: No
    • Short description of the project. PlatformIO uses it for piohome in the multiple places.
  • default_envs — Type: String | Multiple: Yes
    • The cmd_run command processes all environments [env:***] by default if the platformio run --environment option is not specified. default_envs allows one to define which environments that should be processed by default.
    • Also, piodebug checks this option when looking for debug environment.
    • This option can also be configured by the global environment variable PLATFORMIO_DEFAULT_ENVS.
    • Example:
[platformio]
default_envs = uno, nodemcu

[env:uno]
platform = atmelavr
framework = arduino
board = uno

[env:nodemcu]
platform = espressif8266
framework = arduino
board = nodemcu

[env:teensy31]
platform = teensy
framework = arduino
board = teensy31

[env:lpmsp430g2553]
platform = timsp430
framework = arduino
board = lpmsp430g2553
build_flags = -D LED_BUILTIN=RED_LED
  • extra_configs — New in version 4.0. Type: String (Pattern) | Multiple: Yes
    • This option allows extending a base projectconf with extra configuration files. The format and rules are the same as for the projectconf. A name of the configuration file can be any.
    • extra_configs can be a single path to an extra configuration file or a list of them. Please note that you can use Unix shell-style wildcards:
      • * — matches everything
      • ? — matches any single character
      • [seq] — matches any character in seq
      • [!seq] — matches any character not in seq
    • NOTE: If you declare the same pair of "group" + "option" in an extra configuration file which was previously declared in a base projectconf, it will be overwritten with a value from extra configuration.

Example

Base "platformio.ini":

[platformio]
extra_configs =
  extra_envs.ini
  extra_debug.ini

; Global data for all [env:***]
[env]
platform = espressif32
framework = espidf

; Custom data group
; can be use in [env:***] via ${common.***}
[common]
debug_flags = -D RELEASE
lib_flags = -lc -lm

[env:esp-wrover-kit]
board = esp-wrover-kit
build_flags = ${common.debug_flags}

"extra_envs.ini":

[env:esp32dev]
board = esp32dev
build_flags = ${common.lib_flags} ${common.debug_flags}

[env:lolin32]
platform = espressif32
framework = espidf
board = lolin32
build_flags = ${common.debug_flags}

"extra_debug.ini":

# Override base "common.debug_flags"
[common]
debug_flags = -D DEBUG=1

[env:lolin32]
build_flags = -Og

After a parsing process, configuration state will be the next:

[common]
debug_flags = -D DEBUG=1
lib_flags = -lc -lm

[env:esp-wrover-kit]
platform = espressif32
framework = espidf
board = esp-wrover-kit
build_flags = ${common.debug_flags}

[env:esp32dev]
platform = espressif32
framework = espidf
board = esp32dev
build_flags = ${common.lib_flags} ${common.debug_flags}

[env:lolin32]
platform = espressif32
framework = espidf
board = lolin32
build_flags = -Og

📂 Directory options

  • core_dir — New in version 4.0. Type: DirPath | Multiple: No
    • The core_dir variable points out the directory used for all development platform packages (toolchains, frameworks, SDKs, upload and debug tools), global libraries for ldf, and other PlatformIO Core service data. The size of this folder will depend on the number of installed development platforms.
    • The default value is the user's home directory:
      • Unix ~/.platformio
      • Windows %HOMEPATH%\.platformio
    • This option can also be configured by the global environment variable PLATFORMIO_CORE_DIR.
    • Example:
[platformio]
core_dir = /path/to/custom/pio-core/storage
  • globallib_dir — New in version 4.0. Type: DirPath | Multiple: No | Default: "core_dir/lib"
    • Global library storage for PlatformIO projects and librarymanager where ldf looks for dependencies.
    • This option can also be configured by the global environment variable PLATFORMIO_GLOBALLIB_DIR.
  • platforms_dir — New in version 4.0. Type: DirPath | Multiple: No | Default: "core_dir/platforms"
    • Global storage where PlatformIO Package Manager installs platforms.
    • This option can also be configured by the global environment variable PLATFORMIO_PLATFORMS_DIR.
  • packages_dir — New in version 4.0. Type: DirPath | Multiple: No | Default: "core_dir/packages"
    • Global storage where PlatformIO Package Manager installs platforms dependencies (toolchains, frameworks, SDKs, upload and debug tools).
    • This option can also be configured by the global environment variable PLATFORMIO_PACKAGES_DIR.
  • cache_dir — New in version 4.0. Type: DirPath | Multiple: No | Default: "core_dir/cache"
    • piocore uses this folder to store caching information (requests to PlatformIO Registry, downloaded packages and other service information).
    • To reset a cache, please run cmd_update command.
    • This option can also be configured by the global environment variable PLATFORMIO_CACHE_DIR.
  • build_cache_dir — New in version 4.0. Type: DirPath | Multiple: No | Default: None (Disabled)
    • piocore uses this folder to store derived files from a build system (objects, firmwares, ELFs). These files are shared between all build environments. To speed up a build process, you can use the same cache folder between different projects if they depend on the same development platform and framework.
    • This option can also be configured by the global environment variable PLATFORMIO_BUILD_CACHE_DIR.

So like, here's the vibe: this projectconf example tells the PlatformIO Build System to go peek in build_cache_dir for stuff that's already compiled, for framework_stm32cube and your project source files. And bestie, if you touched the original source file? Or your build environment is set up differently (new build flags, whatever)? Yeah, that cached object is getting ghosted. Not used. Periodt.

[platformio]
; Set a path to a cache folder
build_cache_dir =

; Examples:
; (Unix) build_cache_dir = /path/to/cache/folder
; (Windows) build_cache_dir = C:/path/to/cache/folder

[env:bluepill_f103c6]
platform = ststm32
framework = stm32cube
board = bluepill_f103c6

[env:nucleo_f411re]
platform = ststm32
framework = stm32cube
board = nucleo_f411re

workspace_dir ✨

New in version 4.0. 💖

Type: DirPath | Multiple: No | Default: "Project/.pio"

This is the path to your project workspace directory, and it's where PlatformIO keeps — by default — compiled objects, static libraries, firmwares, and external library dependencies. She's the main character, lowkey. It's used by these options:

  • build_dir
  • libdeps_dir

The default value is .pio, which literally just means that folder lives right in the root of your project. 🫶

You can also set this one up with the global environment variable PLATFORMIO_WORKSPACE_DIR.

build_dir 🏗️

WARNING: PLEASE DO NOT EDIT FILES IN THIS FOLDER. PlatformIO will overwrite your changes on the next build. THIS IS A CACHE DIRECTORY.

Type: DirPath | Multiple: No | Default: "workspace_dir/build"

The PlatformIO Build System uses this folder, per project environment, to store compiled object files, static libraries, firmwares and other cached info. It's the reason PlatformIO builds your source code extremely fast. Ate, honestly. 🔥

And the way that you can just delete this whole folder with zero risk?? Iconic. If you modify projectconf, PlatformIO will remove this folder automatically anyway, and it'll get recreated on the next build operation. No cap.

You can also configure it with the global environment variable PLATFORMIO_BUILD_DIR.

NOTE: If you're having any problems building your project environments that are defined in projectconf, then TRY TO DELETE this folder. In this situation you'll remove all cached files without any risk. Also, you can use the "clean" target for the platformio run --target command.

libdeps_dir 📚

Type: DirPath | Multiple: No | Default: "workspace_dir/libdeps"

The internal storage spot where librarymanager installs your project dependencies (projectconf_lib_deps). She keeps the books, bestie.

You can also configure it with the global environment variable PLATFORMIO_LIBDEPS_DIR.

include_dir 🎀

Type: DirPath | Multiple: No | Default: "Project/include"

The path to your project's default header files. PlatformIO uses this for the cmd_run command. The default value is include, meaning an include directory sitting under the root directory of the project. This path gets added to CPPPATH of the build environment. ✨

If you need to add extra include directories to the CPPPATH scope, please use projectconf_build_flags with the -I /path/to/extra/dir option. That's the move.

You can also configure it with the global environment variable PLATFORMIO_INCLUDE_DIR.

src_dir 💅

Type: DirPath | Multiple: No | Default: "Project/src"

The path to your project's directory with source code. PlatformIO uses it for the cmd_run command. The default value is src, meaning a src directory sitting in the root directory of the project.

You can also configure it with the global environment variable PLATFORMIO_SRC_DIR.

NOTE: This option is so useful for people who migrate from Arduino IDE, where the source directory has to have the same name as the main source file. See example project with own source directory. 🦋

lib_dir 🍓

Type: DirPath | Multiple: No | Default: "Project/lib"

This is where you drop your own/private libraries! The source code of each library should be placed in a separate directory, like lib/private_lib/[here are source files]. And this directory has the highest priority for ldf. She goes first, always. 👑

The default value is lib, meaning a lib directory located in the root of the project.

You can also configure it with the global environment variable PLATFORMIO_LIB_DIR.

For example, check out how the Foo and Bar libraries are organized:

|--lib
|  |--Bar
|  |  |--docs
|  |  |--examples
|  |  |--src
|  |     |- Bar.c
|  |     |- Bar.h
|  |--Foo
|  |  |- Foo.c
|  |  |- Foo.h
|- platformio.ini
|--src
   |- main.c

Then in src/main.c you should use:

#include <Foo.h>
#include <Bar.h>

// rest of H/C/CPP code

PlatformIO will find your libraries automatically, configure the preprocessor's include paths and build them. It's giving effortless. 😭💖

data_dir 🗂️

Type: DirPath | Multiple: No | Default: "Project/data"

The data directory, for storing contents and platform_espressif_uploadfs. The default value is data, meaning that folder is located in the root of the project.

You can also configure it with the global environment variable PLATFORMIO_DATA_DIR.

test_dir 🧪

Type: DirPath | Multiple: No | Default: "Project/test"

The directory where the unit_testing engine goes looking for your tests. The default value is test, meaning a test directory located in the root of the project.

You can also configure it with the global environment variable PLATFORMIO_TEST_DIR.

boards_dir 🌈

Type: DirPath | Multiple: No | Default: "Project/boards"

The location of your project-specific board definitions. Each project can pick whatever directory name it wants, honestly. The default value is boards, meaning a "boards" directory located in the root of the project.

By default, PlatformIO looks for boards in this order:

  1. Project boards_dir (as defined by this setting)
  2. Global core_dir/boards
  3. Development platform core_dir/platforms/*/boards.

You can also configure it with the global environment variable PLATFORMIO_BOARDS_DIR.

shared_dir 🤝

New in version 4.0. 💜

Type: DirPath | Multiple: No | Default: "Project/shared"

pioremote uses this folder to synchronize extra files between remote machines. Like, for example, you can share projectconf_extra_scripts. Sharing is caring, bestie.

Please note that these folders are automatically shared between the remote machine with the platformio remote run --force-remote or platformio remote test --force-remote commands:

  • lib_dir
  • include_dir
  • src_dir
  • boards_dir
  • data_dir
  • test_dir

The default value is shared, meaning a directory named "shared" located in the root of the project.

You can also configure it with the global environment variable PLATFORMIO_SHARED_DIR.


Section [env] 👑

  • Common [env]
  • Environment [env:NAME]
  • Options

Each project may have multiple configuration environments defining the available project tasks for building, programming, debugging, unit testing, device monitoring, library dependencies, etc. The configuration environments are declared using [env] sections in projectconf. Yep, that's the whole system. Slay.

The allowed options are listed under Options.

Common [env] 💫

New in version 4.0.

An optional configuration environment with common options that will be shared between all [env:NAME] environments in the platform.ini file. It is very useful if the configuration file has a lot of environments [env:NAME] and they share common settings. Group-chat energy, but for config. 🫶

For example:

[env]
platform = ststm32
framework = stm32cube
board = nucleo_l152re
lib_deps = Dep1, Dep2

[env:release]
build_flags = -D RELEASE
lib_deps =
    ${env.lib_deps}
    Dep3

[env:debug]
build_type = debug
build_flags = -D DEBUG
lib_deps = DepCustom

In this example we have two configuration environments, release and debug. This is equivalent to duplicating all the options as shown below:

[env:release]
platform = ststm32
framework = stm32cube
board = nucleo_l152re
build_flags = -D RELEASE
lib_deps = Dep1, Dep2, Dep3

[env:debug]
platform = ststm32
framework = stm32cube
board = nucleo_l152re
build_type = debug
build_flags = -D DEBUG
lib_deps = DepCustom

Environment [env:NAME] 🌸

A section with an env: prefix defines a working environment for cmd_run, cmd_test, cmd_check, cmd_debug and other commands. Multiple [env:NAME] environments with different NAME are allowed. Every project must define at least one working environment. Non-negotiable, bestie.

Each environment must have a unique NAME. The valid chars for NAME are letters a-z, numbers 0-9, and the special char _ (underscore). For example, [env:hello_world]. 🎀

If you have multiple working environments and you only need to process a few of them, the commands mentioned above accept the -e, --environment option to select a subset of the working environments to process. The [platformio] projectconf_pio_default_envs option can be used to define a default set of working environments for the commands to process.

Options ⚙️

Platform options

  • platform
  • platform_packages
  • framework
  • board
  • board_build.mcu
  • board_build.f_cpu
  • board_build.ldscript
  • More options

platform 🛠️

Type: String | Multiple: No

The platforms name.

PlatformIO lets you use a specific version of a platform using Semantic Versioning (X.Y.Z=MAJOR.MINOR.PATCH) or VCS (Git, Mercurial and Subversion). So many options, honestly.

Version specifications can take any of the following forms:

  • 1.2.3: an exact version number. Use only this exact version
  • ^1.2.3: any compatible version (exact version for 1.x.x versions)
  • ~1.2.3: any version with the same major and minor versions, and an equal or greater patch version
  • >1.2.3: any version greater than 1.2.3. >=, <, and <= are also possible
  • >0.1.0,!=0.2.0,<0.3.0: any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0

Other forms are the same as for the cmd_platform_install command.

Examples:

[env:the_latest_version]
platform = atmelavr

[env:exact_version]
platform = atmelavr@1.2.3

[env:specific_major_version]
platform = atmelavr@^1.2.3

[env:specific_major_and_minor_version]
platform = atmelavr@~1.2.3

[env:development_verion_by_git]
platform = https://github.com/platformio/platform-ststm32.git

[env:custom_git_branch]
platform = https://github.com/platformio/platform-espressif8266.git#feature/stage

[env:specific_git_commit]
platform = https://github.com/platformio/platform-espressif8266.git#921855a9c530082efddb5d48b44c3f4be0e2dfa2

platform_packages 📦

New in version 4.0.

Type: String | Multiple: Yes

Configure custom packages per a build environment, bestie. You can also override default packages by platforms using the same name. And where do these little guys get installed? Into projectconf_pio_packages_dir. That's the address, no cap. 💖

Examples, because we love a demo:

[env:override_default_toolchain]
platform = atmelavr
platform_packages =
  ; use GCC AVR 5.0+
  toolchain-gccarmnoneeabi@>1.50000.0

[env:override_framework]
platform = espressif8266
platform_packages =
  ; use upstream Git version
  framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git

[env:external_package]
platform = ststm32
platform_packages =
  ; latest openOCD from PlatformIO Package Registry
  tool-openocd

  ; source code of ST-Link
  tool-stlink-source @ https://github.com/texane/stlink.git

✨ framework ✨

Type: String | Multiple: Yes 🫶

It's the frameworks name, periodt. That's the whole vibe.

🎀 board 🎀

Type: String (ID) | Multiple: No

PlatformIO already has pre-configured settings for the most popular boards, and they are chef's kiss:

  • build configuration
  • upload configuration
  • debugging configuration
  • connectivity information, etc.

You can find a valid board ID in the boards catalog, the Boards Explorer, or via the cmd_boards command. Go get your board's ID, bestie, it's out there. 💅

🦋 board_build.mcu 🦋

Type: String | Multiple: No

board_build.mcu is the microcontroller (MCU) type that the compiler uses to recognize the MCU architecture. The correct value of board_build.mcu depends on your platform library — so don't just guess, okay? For example, the list of board_build.mcu for "megaAVR Devices" is described here.

The full list of board_build.mcu for the popular embedded platforms lives in the Boards section of platforms. Look at the "Microcontroller" column. 👑

🌸 board_build.f_cpu 🌸

Type: Integer | Multiple: No

The board_build.f_cpu option defines the MCU frequency (Hertz, Clock). The format is a C-like long integer value with the L suffix — so 1 Hertz is equal to 1L, and 16 MHz (Mega Hertz) is equal to 16000000L. Math but make it cute. 🧮

The full list of board_build.f_cpu for the popular embedded platforms is in the Boards section of platforms, under the "Frequency" column. And yes, you can overclock a board by specifying a board_build.f_cpu value other than the default. Living dangerously, I respect it. 🔥

💜 board_build.ldscript 💜

Type: String | Multiple: No

Path to the linker script to be used instead of the one defined by a framework. This is useful for specifying a modified linker script — for example, when an application requires a special memory section for a bootloader. Very specific, very iconic. ✨


🫶 More options 🫶

You can override any board option declared in the manifest file using the next format: board_{OBJECT.PATH}, where {OBJECT.PATH} is an object path in the JSON manifest. Please navigate to the "boards" folder of PlatfomIO development platforms and open the JSON file to list all available options. Go snooping, it's encouraged here. 🙈

For example, Manifest: Espressif ESP32 Dev Module:

[env:custom_board_options]
; Custom CPU Frequency
board_build.f_cpu = 160000000L

; Custom FLASH Frequency
board_build.f_flash = 80000000L

; Custom FLASH Mode
board_build.flash_mode = qio

; Custom linker script
board_build.ldscript = /path/to/ldscript.ld

; Custom maximum program size
board_upload.maximum_size = 1310720

🌈 Build options 🌈

  • build_type
  • build_flags
    • Built-in Variables
    • Dynamic build flags
  • src_build_flags
  • build_unflags
  • src_filter
  • targets

⭐ build_type ⭐

New in version 4.0.

Type: String | Multiple: No | Default: release

See the extended documentation for build_configurations. Go read it, it's giving very informed. 💅

🍓 build_flags 🍓

Type: String | Multiple: Yes

These flags/options affect the preprocessing, compilation, assembly and linking processes for C and C++ code. All compiler and linker flags can be used — the whole menu, no restrictions. Here is a list of some common options. 👇

In spite of the name, CPPDEFINES rows also applies to the C compiler. Like, the C compiler said "same energy" and joined the party 💅

Here's the whole roster, bestie — format, which build variable it hits, and what it actually does:

  • -D name — hits build variable CPPDEFINES — Predefine name as a macro, with definition 1.
  • -D name=definition — hits build variable CPPDEFINES — The contents of definition are tokenized and processed as if they appeared during translation phase three in a #define directive.
  • -U name — hits build variable CPPDEFINES — Cancel any previous definition of name, either built in or provided with a -D option. yeet it into the void 🫥
  • -Wp,option — hits build variable CPPFLAGS — Bypass the compiler driver and pass option directly through to the preprocessor.
  • -Wall — hits build variable CCFLAGS — Turn on all optional warnings which are desirable for normal code.
  • -Werror — hits build variable CCFLAGS — Make all warnings into hard errors. With this option, if any source code triggers warnings, the compilation will be aborted. no warnings allowed, we are not doing casual today 😤
  • -w — hits build variable CCFLAGS — Suppress all warnings, including those which GNU CPP issues by default. living in denial era, iconic honestly 🙈
  • -include file — hits build variable CCFLAGS — Process file as if #include "file" appeared as the first line of the primary source file.
  • -Idir — hits build variable CPPPATH — Add the directory dir to the list of directories to be searched for header files.
  • -Wa,option — hits build variables ASFLAGS, CCFLAGS — Pass option as an option to the assembler. If option contains commas, it is split into multiple options at the commas.
  • -Wl,option — hits build variable LINKFLAGS — Pass option as an option to the linker. If option contains commas, it is split into multiple options at the commas.
  • -llibrary — hits build variable LIBS — Search the library named library when linking.
  • -Ldir — hits build variable LIBPATH — Add directory dir to the list of directories to be searched for -l.

This option can also be set by global environment variable PLATFORMIO_BUILD_FLAGS. global glow-up, no cap ✨

For more detailed information about available flags/options go to:

  • Options to Request or Suppress Warnings
  • Options for Debugging Your Program
  • Options That Control Optimization
  • Options Controlling the Preprocessor
  • Passing Options to the Assembler
  • Options for Linking
  • Options for Directory Search

Examples:

[env:specific_defines]
build_flags =
  -DFOO -DBAR=1
  -D BUILD_ENV_NAME=$PIOENV
  -D CURRENT_TIME=$UNIX_TIME
  -DFLOAT_VALUE=1.23457e+07

[env:string_defines]
build_flags =
  -DHELLO="World!"
  '-DWIFI_PASS="My password"'
  ; Password with special chars: My pass'word
  -DWIFI_PASS=\"My\ pass\'word\"

[env:specific_inclibs]
build_flags =
  -I/opt/include
  -L/opt/lib
  -lfoo

[env:ignore_incremental_builds]
; We dynamically change the value of "LAST_BUILD_TIME" macro,
; PlatformIO will not cache objects
build_flags = -DLAST_BUILD_TIME=$UNIX_TIME
NOTE: If you need to control build flags that are specific for debug configuration please refer to projectconf_debug_build_flags. different flags for different vibes, we contain multitudes 🎀

✨ Built-in Variables ✨

You can inject the built-in variables into your build flags, such as:

  • $PYTHONEXE, full path to current Python interpreter
  • $UNIX_TIME, current time in Unix format
  • $PIOENV, name of build environment from projectconf
  • $PIOPLATFORM, name of development platform
  • $PIOFRAMEWORK, a list of frameworks
  • $PROJECT_DIR, project directory
  • $PROJECT_CORE_DIR, PlatformIO Core directory, see projectconf_pio_core_dir
  • $PROJECT_BUILD_DIR, project build directory per all environments
  • $BUILD_DIR, build directory per current environment

See the full list of PlatformIO variables.

Please use target envdump for the platformio run --target command to see ALL variable values for a build environment. ALL of them, bestie, the full tea ☕👑


💫 Dynamic build flags 💫

PlatformIO allows users to run an external command/script which outputs build flags into STDOUT by prepending the shell command with a ! character. PlatformIO will automatically replace commands with their output when appending flags to build environments.

You can use any shell or programming language. no gatekeeping here 🦋

This external command will be called on each cmd_run command before building/uploading process.

Use cases:

  • Macro with the latest VCS revision/tag "on-the-fly"
  • Generate dynamic headers (*.h)
  • Process media content before generating SPIFFS image
  • Make some changes to source code or related libraries
NOTE 💡 — bestie, if you want more advanced control and you're tryna apply changes to a PlatformIO Build System environment, go read projectconf_advanced_scripting first. iykyk 💅

Example ✨

[env:generate_flags_with_external_command]
build_flags = !cmd_or_path_to_script

; Unix only, get output from internal command
build_flags = !echo "-DSOME_MACRO="$(some_cmd arg1 --option1)

🎀 Use Case: Create a "PIO_SRC_REV" macro with the latest Git revision

This one's iconic, okay? It pulls in a separate file called git_rev_macro.py, and you gotta put that file in the same directory as platformio.ini. 🫶

platformio.ini:

[env:git_revision_macro]
build_flags = !python git_rev_macro.py

git_rev_macro.py:

import subprocess

revision = subprocess.check_output(["git", "rev-parse", "HEAD"]).strip()
print("-DPIO_SRC_REV=%s" % revision)

💖 src_build_flags

Type: String | Multiple: Yes

So src_build_flags is literally the same vibe as build_flags, except it only hits project source files living in the projectconf_pio_src_dir directory. same energy, smaller radius. 💅

You can also set this one through the global environment variable PLATFORMIO_SRC_BUILD_FLAGS.


🌸 build_unflags

Type: String | Multiple: Yes

This one is the selective remover — it takes out the base/initial flags that were set by the development platform. bye bye default flags, not me being extra 🔥

[env:unflags]
build_unflags = -Os -std=gnu++11
build_flags = -O2

🦋 src_filter

Type: String (Templates) | Multiple: Yes

Okay so this option lets you pick exactly which source files get included or excluded from projectconf_pio_src_dir when a build happens. The filter supports two templates:

  • +<PATH> — the include template ✨
  • -<PATH> — the exclude template 🙈

PATH is relative to projectconf_pio_src_dir. Every pattern gets applied in the order you defined it. And yes, GLOB Patterns are allowed. periodt.

By default, src_filter is predefined as +<*> -<.git/> -<.svn/> -<example/> -<examples/> -<test/> -<tests/>, which means "include ALL the files, then exclude the .git and svn repository folders and the example ... folder."

You can also set this through the global environment variable PLATFORMIO_SRC_FILTER.


⭐ targets

Type: String | Multiple: Yes

A list of targets that the cmd_run command will process by default. You can put in more than one target, just separate them with a comma plus a space — ", ". 💫

The list with all the available targets lives in platformio run --target.

Examples 👑

  1. Build a project using Release Configuration, upload the firmware, and start Serial Monitor automatically:
[env:upload_and_monitor]
targets = upload, monitor
  1. Build a project using Debug Configuration.

Tip! You can use these targets like an option to the platformio run --target command. For example:

# clean project
platformio run -t clean

# dump current build environment
platformio run --target envdump

And when no targets are defined, PlatformIO will build only sources by default. no notes. 💅


🎀 Library options

SEE ALSO: bestie please make sure you read the ldf guide first, fr fr. 🫶
  • lib_deps
  • lib_ignore
  • lib_extra_dirs
  • lib_ldf_mode
  • lib_compat_mode
  • lib_archive

💜 lib_deps

SEE ALSO: okay but seriously, read the ldf guide first. 😭

Type: String | Multiple: Yes

This is where you list the project dependencies that should get installed automatically into projectconf_pio_libdeps_dir before environment processing. it's giving auto-pilot 🦋

And if you've got multiple build environments that all depend on the same libraries, you can use projectconf_dynamic_vars to share one common configuration. slay.

Valid forms ✨

; one line definition (comma + space)
[env:myenv]
lib_deps = LIBRARY_1, LIBRARY_2, LIBRARY_N

; multi-line definition
[env:myenv2]
lib_deps =
  LIBRARY_1
  LIBRARY_2
  LIBRARY_N

Each line with LIBRARY_1... LIBRARY_N gets passed automatically to the cmd_lib_install command. Head over to cmd_lib_install for the detailed docs about all the possible values. 👑

Example:

[env:myenv]
lib_deps =
  13
  PubSubClient
  ArduinoJson@~5.6,!=5.4
  https://github.com/gioblu/PJON.git#v2.0
  me-no-dev/ESPAsyncTCP
  IRremoteESP8266=https://github.com/markszabo/IRremoteESP8266/archive/master.zip

🌈 lib_ignore

SEE ALSO: pls read the ldf guide first, i'm begging 🥺

Type: String | Multiple: Yes

Tell the Library Dependency Finder which libraries to ignore. 🙅‍♀️

The correct value here is a library name (NOT a folder name!). You'll see these names in the "Library Dependency Graph" when you build a project — they're the ones sitting between the < and > symbols. ✨

Example:

Build output

...
Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain+) COMPATIBILITY(soft)
Collected 54 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Hash> v1.0
|-- <AsyncMqttClient> v0.8.2
|   |-- <ESPAsyncTCP> v1.1.3
|-- <ESP8266WiFi> v1.0
|-- <ESP Async WebServer> v1.1.1
|   |-- <ESPAsyncTCP> v1.1.3
|   |-- <ESP8266WiFi> v1.0
|   |-- <Hash> v1.0
|   |-- <ArduinoJson> v5.13.1
|-- <ArduinoJson> v5.13.1
|-- <DNSServer> v1.1.0
|   |-- <ESP8266WiFi> v1.0
|-- <Ticker> v1.0
....

platformio.ini

[env:myenv]
; Single line
lib_ignore = AsyncMqttClient, DNSServer

; Multi-line
lib_ignore =
  AsyncMqttClient
  ESP Async WebServer

🧚 lib_extra_dirs

SEE ALSO: the ldf guide. read it. bestie. 💅

Type: DirPath | Multiple: Yes

A list of extra directories/storages where ldf will go looking for dependencies. 🔍

You can also set this through the global environment variable PLATFORMIO_LIB_EXTRA_DIRS.

WARNING 🚨 — this is NOT a direct path to a library with source code. It has to be a path to a storage that contains libraries grouped by folders. So like D:\PlatformIO\extra\libraries, but not D:\PlatformIO\extra\libraries\FooLibrary. don't do the second one, i'm serious 😭

Example:

[env:myenv]
lib_extra_dirs =
    /common/libraries
    /iot/libraries

💫 lib_ldf_mode

SEE ALSO: ldf guide first, always 💖

Type: String | Multiple: No | Default: chain

This option decides how the Library Dependency Finder should analyze dependencies (aka the #include directives). See ldf_mode for the details and all the available options. 🎀

Example:

[env:myenv]
; evaluate C/C++ Preprocessor conditional syntax
lib_ldf_mode = chain+

🍓 lib_compat_mode

SEE ALSO: ok you already know — ldf guide first. 🫶

Type: String | Multiple: No | Default: soft

Library compatibility mode lets you control how strict the Library Dependency Finder is. See ldf_compat_mode for the details and the available options.. 👑

By default this value is set to lib_compat_mode = soft, which means LDF will check only for framework compatibility.

Example:

[env:myenv]
; Checks for the compatibility with frameworks and dev/platforms
lib_compat_mode = strict

👑 lib_archive

Type: Bool (yes or no) | Multiple: No | Default: yes

This creates an archive (*.a, static library) out of the object files and links it into a firmware (program). And that's literally the default behavior of the PlatformIO Build System (lib_archive = yes). ✨

Setting lib_archive = no tells the PIO Build System to link object files directly (in-line). This can be useful if you need to override weak symbols defined in a framework or in other libraries. 🔥

You can also disable library archiving per a custom library using the libjson_archive field in the library_config manifest. 💅

Example:

[env:myenv]
lib_archive = no

🌸 Upload options

  • upload_port
  • upload_protocol
  • upload_speed
  • upload_flags
  • upload_resetmethod
  • upload_command

🦋 upload_port

Type: String (Pattern) | Multiple: No

This option is what the "uploader" tool uses when it's sending firmware to the board. For example:

  • /dev/ttyUSB0 — Serial port (Unix-based OS)
  • COM3 — Serial port (Windows OS)
  • 192.168.0.13 — IP address when using OTA
  • /media/disk — physical path to media disk/flash drive (framework_mbed enabled boards)
  • D: — physical path to media disk/flash drive (Windows OS).

If upload_port isn't specified, then PlatformIO will try to detect it automatically. main character energy, honestly. 💅

To print all available serial ports, use the cmd_device_list command.

You can also set this through the global environment variable PLATFORMIO_UPLOAD_PORT.

And pls note you can use Unix shell-style wildcards: 🌈

  • * — matches everything
  • ? — matches any single character
  • [seq] — matches any character in seq
  • [!seq] — matches any character not in seq

Example

[env:uno]
platform = atmelavr
framework = arduino
; any port that starts with /dev/ttyUSB
upload_port = /dev/ttyUSB*

; COM1 or COM3
upload_port = COM[13]

🎀 upload_protocol

Type: String | Multiple: No

The protocol that the "uploader" tool uses to talk to a board. Go check boards for the uploading protocols your board supports. iykyk 💖


⭐ upload_speed

Type: Integer | Multiple: No

The connection speed (baud rate) that the "uploader" tool uses when it's sending firmware to the board. go fast bestie 🔥


💜 upload_flags

Type: String | Multiple: Yes

Extra flags for the uploader. These get added to the end of the uploader command. And if you need to override the uploader command or the base flags, please use projectconf_extra_scripts. 🫶

You can also set this through the global environment variable PLATFORMIO_UPLOAD_FLAGS.

Example

Please specify each flag/option in a new line starting with minimum 2 spaces. Yes bestie, that's the whole rule, no cap:

[env:atmega328pb]
platform = atmelavr
board = atmega328pb
framework = arduino
upload_flags =
  -P$UPLOAD_PORT
  -b$UPLOAD_SPEED
  -u
  -Ulock:w:0xCF:m
  -Uhfuse:w:0xD7:m
  -Uefuse:w:0xF6:m
  -Ulfuse:w:0xE2:m

✨ upload_resetmethod ✨

  • Type: String | Multiple: No

Specify the reset method for the "uploader" tool 🫶. Heads up though: this option isn't available for all development platforms. The only platform_espressif8266 supports it. Just the one. The it-girl of reset methods 💅.


✨ upload_command ✨

New in version 4.0.

  • Type: String | Multiple: No

Override the default platform's upload command with a custom one 🎀. You can pass a full upload command with arguments and options, or mix it with upload_flags. Both vibes are valid.

Default upload commands are declared in build/main.py script file of platforms. Wanna see a whole list of open source platforms? Go here: https://github.com/topics/platformio-platform 🌈

NOTE: Please note that you can use build variables in upload_command, such as PlatformIO project folders and other runtime configuration. A list with build variables are available by running platformio run --target envdump command. Run it, it's literally right there 🦋

Examples

  1. Override default upload command but handle pre-uploading actions (looking for serial port, extra image preparation, etc.). Normally, the pre-configured upload options will be stored in $UPLOADERFLAGS build variable. A classic default upload command for platforms may look as some-flash-bin-tool $UPLOADERFLAGS $SOURCE, where $SOURCE will be replaced by a real program/firmware binary.

$PROJECT_PACKAGES_DIR build variable points to projectconf_pio_packages_dir.

[env:program_via_AVR_ISP]
platform = atmelavr
framework = arduino
board = uno
upload_flags =
    -C
    $PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf
    -p
    atmega328p
    -P
    $UPLOAD_PORT
    -b
    115200
    -c
    stk500v1
upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i
  1. Override default upload command and skip pre-uploading actions.
[env:program_via_usbasp]
platform = atmelavr
framework = arduino
board = uno
upload_flags =
    -C
    $PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf
    -p
    atmega328p
    -Pusb
    -c
    stk500v1
upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i

; Use ST-util for flashing
; https://github.com/texane/stlink

[env:custom_st_flash]
platform = ststm32
framework = stm32cube
board = bluepill_f103c6
upload_command = $PROJECT_PACKAGES_DIR/tool-stlink/st-flash write $SOURCE 0x8000000

🌸 Monitor options 🌸

Custom options for cmd_device_monitor command 👑

  • monitor_port
  • monitor_speed
  • monitor_filters
  • monitor_rts
  • monitor_dtr
  • monitor_flags

✨ monitor_port ✨

  • Type: String | Multiple: No

Port, a number or a device name, or valid URL Handlers 💖. See platformio device monitor --port. To print all available serial ports please use cmd_device_list command.

Please note that you can use Unix shell-style wildcards 🧚:

  • * — matches everything
  • ? — matches any single character
  • [seq] — matches any character in seq
  • [!seq] — matches any character not in seq

Example:

[env:custom_monitor_port]
...
; Unix
monitor_port = /dev/ttyUSB1

; Windows, COM1 or COM3
monitor_port = COM[13]

; Socket
monitor_port = socket://localhost:4444

✨ monitor_speed ✨

  • Type: Integer | Multiple: No | Default: 9600

A monitor speed (baud rate) ⚡. See platformio device monitor --baud.

Example:

[env:custom_monitor_speedrate]
...
monitor_speed = 115200

✨ monitor_filters ✨

New in version 4.3.

  • Type: String | Multiple: Yes

Apply filters and text transformation for device output 🔥. See available filters at cmd_device_monitor_filters.

Example:

[env:log_output_to_file_with_timestamp]
...
platform = ...
monitor_filters = log2file, time, default

✨ monitor_rts ✨

  • Type: Integer (0 or 1) | Multiple: No

A monitor initial RTS line state 💜. See platformio device monitor --rts.


✨ monitor_dtr ✨

  • Type: Integer (0 or 1) | Multiple: No

A monitor initial DTR line state 💜. See platformio device monitor --dtr.


✨ monitor_flags ✨

New in version 4.0.

  • Type: String | Multiple: Yes

Pass extra flags and options to cmd_device_monitor command 🌟. Please note that each flag, option or its value should be passed in a new line. See example below.

Available flags and options are the same which are documented for cmd_device_monitor command.

Example:

[env:extra_monitor_flags]
platform = ...
board = ...
monitor_flags=
    --parity
    N
    --encoding
    hexlify

🎀 Check options 🎀

SEE ALSO: Please make sure to read piocheck guide first. Fr fr, read it 🙈
  • check_tool
  • check_patterns
  • check_flags
  • check_severity

✨ check_tool ✨

  • Type: String | Multiple: Yes | Default: cppcheck

A name of the check tool used for analysis 🔍. This option is useful when you want to check source code with two or more tools. Because why settle for one queen when you can have a whole squad?

See available tools in check_tools.

Example

[env:myenv]
platform = ...
board = ...
check_tool = cppcheck, clangtidy

✨ check_patterns ✨

  • Type: String (Pattern) | Multiple: Yes

This option allows specifying which source files or folders should be included/excluded from the check process 🦋. GLOB Patterns are allowed. projectconf_pio_src_dir and projectconf_pio_include_dir folders are checked by default.

Another option for filtering source files is platformio check --pattern command.

Example

[env:custom_check_patterns]
platform = ...
board = ...
check_tool = clangtidy
check_patterns =
  app/sources
  tests/hardware/*.c

✨ check_flags ✨

  • Type: String | Multiple: Yes

Additional flags to be passed to the tool command line 🚩. This option is useful when you want to adjust the check process to fit your project requirements. By default, the flags are passed to all tools specified in check_tool section. To set individual flags, define tool name at the beginning of the line.

Another option for adding flags is platformio check --flags command.

Example

[env:extra_check_flags]
platform = ...
board = ...
check_tool = cppcheck, clangtidy
check_flags =
  --common-flag
  cppcheck: --enable=performance --inline-suppr
  clangtidy: -fix-errors -format-style=mozilla

✨ check_severity ✨

  • Type: String | Multiple: Yes | Default: low, medium, high

This option allows specifying the check_severity types which will be reported by the check_tools 💅.

Another option for filtering source files is platformio check --severity command.

Example

[env:detect_only_medium_or_high_defects]
platform = ...
board = ...
check_severity = medium, high

💖 Test options 💖

SEE ALSO: Please make sure to read unit_testing guide first. Yes bestie, it's mandatory reading 📖
  • test_filter
  • test_ignore
  • test_port
  • test_speed
  • test_transport
  • test_build_project_src

✨ test_filter ✨

  • Type: String (Pattern) | Multiple: Yes

Process only the unit_testing tests where the name matches specified patterns 🎯.

Also, you can filter some tests using platformio test --filter command.

  • * — matches everything
  • ? — matches any single character
  • [seq] — matches any character in seq
  • [!seq] — matches any character not in seq

Example

[env:myenv]
test_filter = footest, bartest_*, test[13]

✨ test_ignore ✨

  • Type: String (Pattern) | Multiple: Yes

Ignore unit_testing tests where the name matches specified patterns 🙅‍♀️. Sometimes the move is just not running the thing, and that's valid.

Also, you can ignore some tests using the platformio test --ignore command. 💅

Here's the tea on the pattern matching, bestie:

  • * — matches everything ✨
  • ? — matches any single character
  • [seq] — matches any character in seq
  • [!seq] — matches any character not in seq

Example:

[env:myenv]
test_ignore =
  footest
  bartest_*
  test[13]

test_port 🎀

Type: String (Pattern) | Multiple: No

This option specifies the communication interface (Serial/UART) between the PlatformIO unit_testing Engine and the target device. For example:

  • /dev/ttyUSB0 — Unix-based OS
  • COM3 — Windows OS

If test_port isn't specified, then PlatformIO will try to detect it automatically. 👑

To print all available serial ports use the cmd_device_list command.


test_speed ⚡

Type: Integer | Multiple: No | Default: 115200

A connection speed (baud rate) to communicate with a target device.


test_transport 🦋

Type: String | Multiple: No

A transport type which will be used to read test results from a target device. See more details at unit_testing_transport.


test_build_project_src 🌸

Type: Bool (yes or no) | Multiple: No | Default: no

Force the unit_testing engine to build project source code from the projectconf_pio_src_dir setting by setting test_build_project_src to yes. More detail about unit_testing_shared_code.

Example:

[env:myenv]
platform = ...
test_build_project_src = yes

Debugging options 🐛💖

SEE ALSO: Please make sure to read the piodebug guide first, fr fr.

  • debug_tool
  • debug_build_flags
  • debug_init_break
  • debug_init_cmds
  • debug_extra_cmds
  • debug_load_cmds
  • debug_load_mode
  • debug_server
  • debug_port
  • debug_svd_path

debug_tool 🔧

Type: String | Multiple: No

A name of the debugging tool. This option is useful when a board supports more than one debugging tool (adapter, probe), or when you want to create a debugging_tool_custom debugging configuration.

See available tools in debugging_tools.

Example:

[env:debug]
platform = ...
board = ...
debug_tool = custom

debug_build_flags 🛠️

New in version 4.2.0.

Type: String | Multiple: Yes | Default: -Og -g2 -ggdb2

These flags/options affect the preprocessing, compilation, assembly and linking processes for C and C++ code.

NOTE: This option might be helpful to adjust the optimization level if firmware with debug information is too big to be uploaded to a target.

Example:

[env:debug]
platform = ...
board = ...

; Set optimization level and amount of debug information generated by the compiler
debug_build_flags = -O0 -ggdb3 -g3

Other possible flags that might be useful for debugging your application. ✨


debug_init_break 🎯

Type: String | Multiple: No | Default: tbreak main

An initial breakpoint that makes your program stop whenever a certain point in the program is reached. The default value is set to tbreak main, which means creating a temporary breakpoint at the int main(...) function and automatically deleting it after the first time the program stops there. So iconic of it. 👑

  • GDB Setting Breakpoints
  • GDB Breakpoint Locations
NOTE: Please note that each debugging tool (adapter, probe) has a limited number of hardware breakpoints. If you need more Project Initial Breakpoints, please place them in debug_extra_cmds.

Examples:

[env:debug]
platform = ...
board = ...

; Examples 1: disable initial breakpoint
debug_init_break =

; Examples 2: temporary stop at ``void loop()`` function
debug_init_break = tbreak loop

; Examples 3: stop in main.cpp at line 13
debug_init_break = break main.cpp:13

; Examples 4: temporary stop at ``void Reset_Handler(void)``
debug_init_break = tbreak Reset_Handler

debug_init_cmds 🧚

Type: String | Multiple: Yes | Default: See details...

Initial commands that will be passed to the back-end debugger.

PlatformIO dynamically configures the back-end debugger depending on a debug environment. Here is a list with default initial commands for the popular debugging_tools.

For example, the custom initial commands for GDB:

[env:debug]
platform = ...
board = ...
debug_init_cmds =
  target extended-remote $DEBUG_PORT
  $INIT_BREAK
  monitor reset halt
  $LOAD_CMDS
  monitor init
  monitor reset halt

debug_extra_cmds 💜

Type: String | Multiple: Yes

Extra commands that will be passed to the back-end debugger after debug_init_cmds. For example, add a custom breakpoint and load .gdbinit from a project directory for GDB:

[env:debug]
platform = ...
board = ...
debug_extra_cmds =
  break main.cpp:13
  break foo.cpp:100
  source .gdbinit
NOTE: Initial Project Breakpoints: Use break path/to/file:LINE_NUMBER to define initial breakpoints for the debug environment. Multiple breakpoints are allowed. To save session breakpoints, please use the save breakpoints [filename] command in the Debug Console. For example, save breakpoints .gdbinit. Later, this file could be loaded via the source [filename] command. See above. 🫶

debug_load_cmds 📥

New in version 4.0.

Type: String | Multiple: Yes | Default: load

Specify a command which will be used to load program/firmware to a target device. Possible options:

  • load — default option
  • load [address] — load program at specified address, where "[address]" should be a valid number
  • preload — some embedded devices have locked Flash Memory (a few Freescale Kinetis and NXP LPC boards). In this case, firmware loading using the debugging client is disabled. The preload command instructs piocore to load program/firmware using the development platform "upload" method (via bootloader, media disk, etc)
  • (empty value, debug_load_cmds =), disables program loading at all. 💀
  • custom commands — pass any debugging client command (GDB, etc.)

Sometimes you need to run extra monitor commands (on the debug server side) before program/firmware loading, such as flash unlocking or erasing. In this case we can combine service commands with loading and run them before. See example:

[env:debug]
platform = ...
board = ...
debug_load_cmds =
  monitor flash erase_sector 0 0 11
  load

debug_load_mode 🎮

Type: String | Multiple: No | Default: always

Allows one to control when PlatformIO should load debugging firmware to the end target. Possible options:

  • always — load for each debugging session, default
  • modified — load only when firmware was modified
  • manual — do not load firmware automatically. You are responsible to pre-flash the target with debugging firmware in this case. 🙈

debug_server 🖥️

Type: String | Multiple: Yes

Allows one to setup a custom debugging server. By default, boards are pre-configured with a debugging server that is compatible with the "on-board" debugging tool (adapter, probe). Also, this option is useful for a debugging_tool_custom debugging tool.

Option format (multi-line):

  • First line is an executable path of the debugging server
  • 2-nd and the next lines are arguments for the executable file

Example:

[env:debug]
platform = ...
board = ...
debug_server =
  /path/to/debugging/server
  arg1
  arg2
  ...
  argN

debug_port 🔌

Type: String | Multiple: No

A debugging port of a remote target. Could be a serial device or network address. PlatformIO detects it automatically if it is not specified.

For example:

  • /dev/ttyUSB0 — Unix-based OS
  • COM3 — Windows OS
  • localhost:3333

debug_svd_path 🗺️

Type: FilePath | Multiple: No

A custom path to an SVD file which contains information about device peripherals.


Advanced options 🌈

extends 🧬

New in version 4.1.

Type: String | Multiple: Yes

This option allows one to inherit configuration from other sections or build environments in projectconf. Multiple items are allowed — split them with , or with a new line.

If you need to extend only a few options from some section, please take a look at projectconf_dynamic_vars.

Example:

[strict_ldf]
lib_ldf_mode = chain+
lib_compat_mode = strict

[espressi32_base]
platform = espressif32
framework = arduino

[env:release]
extends = espressi32_base, strict_ldf
board = esp32dev
build_flags = -D RELEASE

[env:debug]
extends = env:release
build_type = debug
build_flags = -D DEBUG

extra_scripts 📜

Type: FilePath | Multiple: Yes

A list of PRE and POST extra scripts.

See details and examples in the projectconf_advanced_scripting section.

If you plan to share these scripts with a pioremote machine, please put them to projectconf_pio_shared_dir.


Build Configurations 🏗️✨

New in version 4.0.0.

There are 2 types (projectconf_build_type) of build configuration in PlatformIO:

  • release — Default configuration. A "release" configuration of your firmware/program does not contain symbolic debug information and is optimized for the firmware size or speed (depending on platforms)
  • debug — A "debug" configuration of your firmware/program is compiled with full symbolic debug information and no optimization. Optimization complicates debugging, because the relationship between source code and generated instructions is more complex.
iykyk, debug is the vibe when you're actually trying to see what's going on in there. 🫶
NOTE: if you need to control build flags that are specific for debug configuration, pls go look at projectconf_debug_build_flags. bestie it's right there.

If you need to build a project in debug configuration, use one of these options, ok? pick ur fighter:

  • Add projectconf_build_type with debug value to projectconf
  • Use target debug for the platformio run --target command.
NOTE: piodebug automatically switches to debug configuration when you do project debugging from pioide or use the cmd_debug command. it just knows. ✨

To avoid having piodebug rebuild the project, please create a separate build environment that defines build_type = debug. See the example below where the mydebug build environment will be used automatically by piodebug:

[env]
platform = ...
board = ...
framework = ...
... other common configuration

[env:myrelease]
some_extra_options = ...

[env:mydebug]
build_type = debug
some_extra_options = ...

Please note that you can set a default build environment per a project using the projectconf_pio_default_envs option in projectconf_section_platformio. 💅


💫 Dynamic variables 💫

Dynamic variables (interpolations) are so useful when you have custom configuration data shared between build environments. Like, for example, extra projectconf_build_flags or project dependencies projectconf_lib_deps. iconic behaviour honestly.

Each variable should have a next format: ${<section>.<option>}, where <section> is a value from [<section>] group, and <option> is a first item from pair <option> = value.

You can inject a system environment variable using sysenv as a section. For example, ${sysenv.HOME}. 🫶

  • Variable can be applied only for the option's value
  • Multiple variables are allowed
  • The projectconf_section_platformio and projectconf_section_env sections are reserved and could not be used as a custom section. Some good section names might be extra or custom.
NOTE: if you need to share common configuration options between build environments, please take a look at "Global scope" in projectconf_section_env or the projectconf_env_extends option which allows extending of other sections. no cap.

Example:

[env]
; Unix
lib_extra_dirs = ${sysenv.HOME}/Documents/Arduino/libraries
; Windows
lib_extra_dirs = ${sysenv.HOMEDRIVE}${sysenv.HOMEPATH}\Documents\Arduino\libraries

; You MUST inject these options into [env:] section
; using ${extra.***} (see below)
[extra]
build_flags = -D VERSION=1.2.3 -D DEBUG=1
lib_deps_builtin =
  SPI
  Wire
lib_deps_external = ArduinoJson@>5.6.0

[env:uno]
platform = atmelavr
framework = arduino
board = uno
build_flags = ${extra.build_flags}
lib_deps =
  ${extra.lib_deps_builtin}
  ${extra.lib_deps_external}

[env:nodemcuv2]
platform = espressif8266
framework = arduino
board = nodemcuv2
build_flags = ${extra.build_flags} -Wall
lib_deps =
  ${extra.lib_deps_builtin}
  ${extra.lib_deps_external}
  PubSubClient@2.6
  OneWire

; Keep sensitive data in environment variables
;
; Unix
; export WIFI_SSID='\"my\ ssid\ name\"'
; export WIFI_PASS='\"my\ password\"'
;
; Windows
; set WIFI_SSID='"my ssid name"'
; set WIFI_PASS='"my password"'

[env:esp32dev]
extends = env:nodemcuv2
platform = espressif32
board = esp32dev
build_flags =
  -DWIFI_SSID=${sysenv.WIFI_SSID}
  -DWIFI_PASS=${sysenv.WIFI_PASS}
WARNING: be careful with special characters in system environment variables on Unix systems, especially when they are used as the value for preprocessor directives. Symbols like $, &, ~, etc must be explicitly escaped, for example:
export WIFI_PASS='\"my\~p\&a\\\$\$\$\$word\"'

🌈 Examples 🌈

NOTE: a full list with project examples can be found in PlatformIO Repository.

Community project examples with platformio.ini:

  • MarlinFirmware/Marlin
  • xoseperez/espurna
  • esphome/esphome
  • cyberman54/ESP32-Paxcounter

Example

For more examples, see projectconf_examples. 🦋

[platformio]
default_envs = nodemcuv2

; You MUST inject these options into [env:] section
; using ${common_env_data.***} (see below)
[common_env_data]
build_flags =
    -D VERSION=1.2.3
    -D DEBUG=1
lib_deps_builtin =
    SPI
    Wire
lib_deps_external =
    ArduinoJson@~5.6,!=5.4
    https://github.com/gioblu/PJON.git#v2.0
    IRremoteESP8266=https://github.com/markszabo/IRremoteESP8266/archive/master.zip

[env:nodemcuv2]
platform = espressif8266
framework = arduino
board = nodemcuv2

; Build options
build_flags =
    ${common_env_data.build_flags}
    -DSSID_NAME=HELLO
    -DSSID_PASWORD=WORLD

; Library options
lib_deps =
    ${common_env_data.lib_deps_builtin}
    ${common_env_data.lib_deps_external}
    https://github.com/me-no-dev/ESPAsyncTCP.git
    PubSubClient@2.6
    OneWire

; Serial Monitor options
monitor_speed = 115200
monitor_flags =
    --encoding
    hexlify

; Unit Testing options
test_ignore = test_desktop

[env:bluepill_f103c8]
platform = ststm32
framework = arduino
board = bluepill_f103c8

; Build options
build_flags = ${common_env_data.build_flags}

; Library options
lib_deps =
    ${common_env_data.lib_deps_external}

; Debug options
debug_tool = custom
debug_server =
    JLinkGDBServer
    -singlerun
    -if
    SWD
    -select
    USB
    -port
    2331
    -device
    STM32F103C8

; Unit Testing options
test_ignore = test_desktop

🎀 Environment variables 🎀

Environment variables are a set of dynamic named values that can affect the way running processes will behave on a computer. PlatformIO handles variables which start with PLATFORMIO_ prefix. 💜

How to set environment variable?

# Windows
set VARIABLE_NAME=VALUE

# Windows GUI -> https://www.youtube.com/watch?v=bEroNNzqlF4

# Unix (bash, zsh)
export VARIABLE_NAME=VALUE

# Unix (fish)
set -x VARIABLE_NAME VALUE

✨ Contents ✨

  • General
  • Directories
  • Building
  • Uploading
  • Settings

👑 General 👑

PlatformIO uses General environment variables for the common operations/commands.

CI

PlatformIO handles CI variable which is setup by Continuous Integration (Travis, Circle and etc.) systems. PlatformIO uses it to disable prompts and progress bars. In other words, CI=true automatically setup PLATFORMIO_DISABLE_PROGRESSBAR to true.

PLATFORMIO_AUTH_TOKEN

Allows one to specify Personal Authentication Token that could be used for automatic login in to pioaccount. It is very useful for ci systems and pioremote operations where you are not able manually authorize.

You can get own Personal Authentication Token using cmd_account_token command.

PLATFORMIO_FORCE_ANSI

Force to output ANSI control character even if the output is a pipe (not a tty). The possible values are true and false. Default is PLATFORMIO_FORCE_ANSI=false.

PLATFORMIO_NO_ANSI

Do not print ANSI control characters. The possible values are true and false. Default is PLATFORMIO_NO_ANSI=false.

You can also use platformio --no-ansi flag for piocore.

PLATFORMIO_DISABLE_PROGRESSBAR

Disable progress bar for package/library downloader and uploader. This is useful when calling PlatformIO from subprocess and output is a pipe (not a tty). The possible values are true and false. Default is PLATFORMIO_DISABLE_PROGRESSBAR=false.

🍓 Directories 🍓

PLATFORMIO_CORE_DIR

Allows one to override projectconf option projectconf_pio_core_dir.

PLATFORMIO_GLOBALLIB_DIR

Allows one to override projectconf option projectconf_pio_globallib_dir.

PLATFORMIO_PLATFORMS_DIR

Allows one to override projectconf option projectconf_pio_platforms_dir.

PLATFORMIO_PACKAGES_DIR

Allows one to override projectconf option projectconf_pio_packages_dir.

PLATFORMIO_CACHE_DIR

Allows one to override projectconf option projectconf_pio_cache_dir.

PLATFORMIO_BUILD_CACHE_DIR

Allows one to override projectconf option projectconf_pio_build_cache_dir.

PLATFORMIO_WORKSPACE_DIR

Allows one to override projectconf option projectconf_pio_workspace_dir.

PLATFORMIO_INCLUDE_DIR

Allows one to override projectconf option projectconf_pio_include_dir.

PLATFORMIO_SRC_DIR

Allows one to override projectconf option projectconf_pio_src_dir.

PLATFORMIO_LIB_DIR

Allows one to override projectconf option projectconf_pio_lib_dir.

PLATFORMIO_LIBDEPS_DIR

Allows one to override projectconf option projectconf_pio_libdeps_dir.

PLATFORMIO_BUILD_DIR

Allows one to override projectconf option projectconf_pio_build_dir.

PLATFORMIO_DATA_DIR

Allows one to override projectconf option projectconf_pio_data_dir.

PLATFORMIO_TEST_DIR

Allows one to override projectconf option projectconf_pio_test_dir.

PLATFORMIO_BOARDS_DIR

Allows one to override projectconf option projectconf_pio_boards_dir.

PLATFORMIO_SHARED_DIR

Allows one to override projectconf option projectconf_pio_shared_dir.

PLATFORMIO_REMOTE_AGENT_DIR

Allows one to override platformio remote agent start --working-dir.

PLATFORMIO_LIB_EXTRA_DIRS

Allows one to set projectconf option projectconf_lib_extra_dirs.

🔥 Building 🔥

PLATFORMIO_BUILD_FLAGS

Allows one to set projectconf option projectconf_build_flags.

Examples:

# Unix:
export PLATFORMIO_BUILD_FLAGS=-DFOO
export PLATFORMIO_BUILD_FLAGS=-DFOO -DBAR=1 -Wall

# Windows:
SET PLATFORMIO_BUILD_FLAGS=-DFOO
SET PLATFORMIO_BUILD_FLAGS=-DFOO -DBAR=1 -Wall
WARNING: consider using projectconf_dynamic_vars instead of the PLATFORMIO_BUILD_FLAGS environment variable if additional build flags contain preprocessor directive with special characters ($, &, ~, etc) in its value. fr fr, save urself the pain.

PLATFORMIO_SRC_BUILD_FLAGS

Allows one to set projectconf option projectconf_src_build_flags.

PLATFORMIO_SRC_FILTER

Allows one to set projectconf option projectconf_src_filter.

PLATFORMIO_EXTRA_SCRIPTS

Allows one to set projectconf option projectconf_extra_scripts.

PLATFORMIO_DEFAULT_ENVS

Allows one to set projectconf option projectconf_pio_default_envs.

💾 Uploading

Uploading has its own lil env var corner, and honestly? Convenient.

  • PLATFORMIO_UPLOAD_PORT — lets you set the projectconf option projectconf_upload_port.
  • PLATFORMIO_UPLOAD_FLAGS — lets you set the projectconf option projectconf_upload_flags.

⚙️ Settings

This whole crew lets you override PlatformIO settings, bestie. You can manage them with the cmd_settings command. Slay. 💅

  • PLATFORMIO_SETTING_AUTO_UPDATE_LIBRARIES — lets you override the setting setting_auto_update_libraries.
  • PLATFORMIO_SETTING_AUTO_UPDATE_PLATFORMS — lets you override the setting setting_auto_update_platforms.
  • PLATFORMIO_SETTING_CHECK_LIBRARIES_INTERVAL — lets you override the setting setting_check_libraries_interval.
  • PLATFORMIO_SETTING_CHECK_PLATFORMIO_INTERVAL — lets you override the setting setting_check_platformio_interval.
  • PLATFORMIO_SETTING_CHECK_PLATFORMS_INTERVAL — lets you override the setting setting_check_platforms_interval.
  • PLATFORMIO_SETTING_ENABLE_CACHE — lets you override the setting setting_enable_cache.
  • PLATFORMIO_SETTING_STRICT_SSL — lets you override the setting setting_strict_ssl.
  • PLATFORMIO_SETTING_ENABLE_TELEMETRY — lets you override the setting setting_enable_telemetry.
  • PLATFORMIO_SETTING_FORCE_VERBOSE — lets you override the setting setting_force_verbose.
  • PLATFORMIO_SETTING_PROJECTS_DIR — lets you override the setting setting_projects_dir.

🐍 Advanced Scripting

⚠️ WARNING: Advanced Scripting is recommended for Advanced Users and requires knowledge of the Python language. No skipping the Python arc, babe, it's literally load-bearing.
⚠️ WARNING: projectconf_dynamic_build_flags is a highly recommended alternative to advanced scripting, where you can use any programming language. Also, that option is useful if you need to apply changes to the project before the building/uploading process, such as: - Macro with the latest VCS revision/tag "on-the-fly" - Generate dynamic headers (*.h) - Process media content before generating SPIFFS image - Make some changes to source code or related libraries

📋 Contents

  • Advanced Scripting
    • Launch types
    • Construction Environments
    • Before/Pre and After/Post actions
    • Build Middlewares
    • Custom target
      • Command shortcut
      • Dependent target
      • Target with options
    • Examples
      • Custom options in platformio.ini
      • Split C/C++ build flags
      • Extra Linker Flags without -Wl, prefix
      • Custom upload tool
      • Upload to Cloud (OTA)
      • Custom firmware/program name
      • Override package files
      • Override Board Configuration
      • Custom debug flags

The PlatformIO Build System lets you extend the build process with custom scripts using the Python interpreter and the SCons construction tool. Build flags, upload flags, targets, toolchains data and other information are all available for modification as SCons Construction Environments. Custom scripts are included with projectconf_extra_scripts. 🎀

⚠️ WARNING: You can not run or debug these scripts manually with a Python interpreter. They will be loaded automatically when the cmd_run command processes the project environment. So don't try to be cute about it.

🚀 Launch types

There are two execution orders for extra scripts, and the order is the whole personality:

  1. PRE — executes before the main script of platforms
  2. POST — executes after the main script of platforms

Multiple extra scripts are allowed, bestie — go off. Just split them with ", " (comma + space) on the same line, or use multi-line values.

For example, in projectconf:

[env:my_env_1]
platform = ...
; Defaults to POST script since no prefix is used
extra_scripts = post_extra_script.py

[env:my_env_2]
platform = ...
extra_scripts =
  pre:pre_extra_script.py
  post:post_extra_script1.py
  post_extra_script2.py

This option can also be set by the global environment variable PLATFORMIO_EXTRA_SCRIPTS. ✨


🧱 Construction Environments

The PlatformIO Build System uses two built-in construction environments to process each project:

  • env, Import("env") — the global construction environment used for the platforms and frameworks build scripts, upload tools, ldf, and other internal operations
  • projenv, Import("projenv") — the isolated construction environment used for processing the project source code in projectconf_pio_src_dir. Please note that any projectconf_src_build_flags specified in projectconf will be passed to projenv and not to env.
⚠️ WARNING: 1. projenv is available only for POST-type scripts 2. Flags passed to env using PRE-type script will affect projenv too.

my_pre_extra_script.py:

Import("env")

# access to global construction environment
print(env)

# Dump construction environment (for debug purpose)
print(env.Dump())

# append extra flags to global build environment
# which later will be used to build:
# - project source code
# - frameworks
# - dependent libraries
env.Append(CPPDEFINES=[
  "MACRO_1_NAME",
  ("MACRO_2_NAME", "MACRO_2_VALUE")
])

my_post_extra_script.py:

Import("env", "projenv")

# access to global construction environment
print(env)

# access to project construction environment
print(projenv)

# Dump construction environments (for debug purpose)
print(env.Dump())
print(projenv.Dump())

# append extra flags to global build environment
# which later will be used to build:
# - frameworks
# - dependent libraries
env.Append(CPPDEFINES=[
  "MACRO_1_NAME",
  ("MACRO_2_NAME", "MACRO_2_VALUE")
])

# append extra flags to only project build environment
projenv.Append(CPPDEFINES=[
  "PROJECT_EXTRA_MACRO_1_NAME",
  ("ROJECT_EXTRA_MACRO_2_NAME", "ROJECT_EXTRA_MACRO_2_VALUE")
])

See examples below how to import construction environments and modify existing data or add new. 🌸


🪝 Before/Pre and After/Post actions

The PlatformIO Build System has a rich API that lets you attach different pre-/post actions (hooks) using env.AddPreAction(target, callback) or env.AddPreAction(target, [callback1, callback2, ...]). The first argument target can be:

  • the name of a target that is passed using the platformio run --target command,
  • the name of a built-in target (buildprog, size, upload, program, buildfs, uploadfs, uploadfsota),
  • or the path to a file which PlatformIO processes (ELF, HEX, BIN, OBJ, etc.).

✨ Examples

The extra_script.py file is located in the same directory as platformio.ini.

platformio.ini:

[env:pre_and_post_hooks]
extra_scripts = post:extra_script.py

extra_script.py:

Import("env", "projenv")

# access to global build environment
print(env)

# access to project build environment (is used source files in "src" folder)
print(projenv)

#
# Dump build environment (for debug purpose)
# print(env.Dump())
#

#
# Change build flags in runtime
#
env.ProcessUnFlags("-DVECT_TAB_ADDR")
env.Append(CPPDEFINES=("VECT_TAB_ADDR", 0x123456789))

#
# Upload actions
#

def before_upload(source, target, env):
    print("before_upload")
    # do some actions

    # call Node.JS or other script
    env.Execute("node --version")

def after_upload(source, target, env):
    print("after_upload")
    # do some actions

print("Current build targets", map(str, BUILD_TARGETS))

env.AddPreAction("upload", before_upload)
env.AddPostAction("upload", after_upload)

#
# Custom actions when building program/firmware
#

env.AddPreAction("buildprog", callback...)
env.AddPostAction("buildprog", callback...)

#
# Custom actions for specific files/objects
#

env.AddPreAction("$BUILD_DIR/${PROGNAME}.elf", [callback1, callback2,...])
env.AddPostAction("$BUILD_DIR/${PROGNAME}.hex", callback...)

# custom action before building SPIFFS image. For example, compress HTML, etc.
env.AddPreAction("$BUILD_DIR/spiffs.bin", callback...)

# custom action for project's main.cpp
env.AddPostAction("$BUILD_DIR/src/main.cpp.o", callback...)

# Custom HEX from ELF
env.AddPostAction(
    "$BUILD_DIR/${PROGNAME}.elf",
    env.VerboseAction(" ".join([
        "$OBJCOPY", "-O", "ihex", "-R", ".eeprom",
        "$BUILD_DIR/${PROGNAME}.elf", "$BUILD_DIR/${PROGNAME}.hex"
    ]), "Building $BUILD_DIR/${PROGNAME}.hex")
)

🧚 Build Middlewares

New in version 4.1.

PlatformIO Build System lets you add middleware functions that can be used for Build Node(Object) construction. This is very useful if you need to add custom flags for specific file nodes or exclude them from a build process. Main character energy for your build graph, fr fr.

There's an env.AddBuildMiddleware(callback, pattern) helper which instructs the PlatformIO Build System to call callback for each SCons File System Node whose path matches with Unix shell-style "pattern" (wildcards).

If a pattern is omitted, the callback will be called for each File System Node which is added for the build process.

You can add an unlimited number of build middlewares, and they will be called in order of registration. Heads up though: if the first middleware ignores some File Nodes, they will not be passed to the next middleware in the chain. 🫶

✨ Examples

platformio.ini:

[env:build_middleware]
extra_scripts = pre:extra_script.py

extra_script.py:

Import("env")

# --- Add custom macros for the ALL files which name contains "http"
def extra_http_configuration(node):
    """
    `node.name` - a name of File System Node
    `node.get_path()` - a relative path
    `node.get_abspath()` - an absolute path
    """

    # do not modify node if file name does not contain "http"
    if "http" not in node.name:
        return node

    # now, we can override ANY SCons variables (CPPDEFINES, CCFLAGS, etc.,) for the specific file
    # pass SCons variables as extra keyword arguments to `env.Object()` function
    # p.s: run `pio run -t envdump` to see a list with SCons variables

    return env.Object(
        node,
        CPPDEFINES=env["CPPDEFINES"]
        + [("HTTP_HOST", "device.local"), ("HTTP_PORT", 8080)],
        CCFLAGS=env["CCFLAGS"] + ["-fno-builtin-printf"]
    )

env.AddBuildMiddleware(extra_http_configuration)

# --- Replace some file from a build process with another

def replace_node_with_another(node):
    return env.File("path/to/patched/RtosTimer.cpp")
env.AddBuildMiddleware(
    replace_node_with_another,
    "framework-mbed/rtos/RtosTimer.cpp"
)

# --- Skip assembly *.S files from build process

def skip_asm_from_build(node):
    # to ignore file from a build process, just return None
    return None

env.AddBuildMiddleware(skip_asm_from_build, "*.S")

🎯 Custom target

Okay so boom 💥 there's a whole list of built-in targets you can run with platformio run --target, right? But the ICONIC part is you can make literally unlimited targets of your own and declare custom handlers for them. Main character energy fr.

We're gonna use SCons's Alias(alias, [targets, [action]]) and env.Alias(alias, [targets, [action]]) function to declare a custom target/alias. That's the whole vibe. ✨


⚡ Command shortcut

Let's make a custom node target (alias) that prints a NodeJS version. Obsessed with this one 🫶

platformio.ini:

[env:myenv]
platform = ...
...
extra_scripts = extra_script.py

extra_script.py:

Import("env")
env.AlwaysBuild(env.Alias("node", None, ["node --version"]))

Now, run pio run -t node. Slay. 💅


🔗 Dependent target

Sometimes you need to run a command that depends on another target (file, firmware, etc). So let's create an ota target and declare a command that depends on a project firmware. If the build process succeeds, the declared command gets run. No cap.

platformio.ini:

[env:myenv]
platform = ...
...
extra_scripts = extra_script.py

extra_script.py:

Import("env")
env.AlwaysBuild(env.Alias("ota",
    "$BUILD_DIR/${PROGNAME}.elf",
    ["ota_script --firmware-path $SOURCE"]))

Now, run pio run -t ota. Periodt. 🔥


🎀 Target with options

Let's create a simple ping target and process it with the platformio run --target ping command:

platformio.ini:

[env:env_custom_target]
platform = ...
...
extra_scripts = extra_script.py
custom_ping_host = google.com

extra_script.py:

try:
    import configparser
except ImportError:
    import ConfigParser as configparser

Import("env")

config = configparser.ConfigParser()
config.read("platformio.ini")
host = config.get("env_custom_target", "custom_ping_host")

def mytarget_callback(*args, **kwargs):
    print("Hello PlatformIO!")
    env.Execute("ping " + host)

env.AlwaysBuild(env.Alias("ping", None, mytarget_callback))

🌈 Examples

The best examples are PlatformIO development platforms 💖 Please check the builder folder for the main and framework scripts. iykyk.


🍓 Custom options in platformio.ini

platformio.ini:

[env:my_env]
platform = ...
extra_scripts = extra_script.py

custom_option1 = value1
custom_option2 = value2

extra_script.py:

try:
    import configparser
except ImportError:
    import ConfigParser as configparser

config = configparser.ConfigParser()
config.read("platformio.ini")

value1 = config.get("my_env", "custom_option1")
value2 = config.get("my_env", "custom_option2")

🦋 Split C/C++ build flags

platformio.ini:

[env:my_env]
platform = ...
extra_scripts = extra_script.py

extra_script.py (place it near platformio.ini):

Import("env")

# General options that are passed to the C and C++ compilers
env.Append(CCFLAGS=["flag1", "flag2"])

# General options that are passed to the C compiler (C only; not C++).
env.Append(CFLAGS=["flag1", "flag2"])

# General options that are passed to the C++ compiler
env.Append(CXXFLAGS=["flag1", "flag2"])

🧚 Extra Linker Flags without -Wl, prefix

Sometimes you need to pass extra flags to the GCC linker without Wl,. You could use the projectconf_build_flags option but bestie… it will not work 😭 PlatformIO will not parse these flags into the LINKFLAGS scope. In this case, a simple extra script will help:

platformio.ini:

[env:env_extra_link_flags]
platform = windows_x86
extra_scripts = extra_script.py

extra_script.py (place it near platformio.ini):

Import("env")

#
# Dump build environment (for debug)
# print(env.Dump())
#

env.Append(
  LINKFLAGS=[
      "-static",
      "-static-libgcc",
      "-static-libstdc++"
  ]
)

👑 Custom upload tool

You can override the default upload command of a development platform using an extra script ✨ There's this common environment variable UPLOADCMD which the PlatformIO Build System will handle when you run platformio run -t upload.

Heads up though 💀 some development platforms can have more than 1 upload command. For example, platform_atmelavr has UPLOADHEXCMD (firmware) and UPLOADEEPCMD (EEPROM data).

See examples below:

📦 Template

platformio.ini:

[env:my_custom_upload_tool]
platform = ...
; place it into the root of project or use full path
extra_scripts = extra_script.py
upload_protocol = custom
; each flag in a new line
upload_flags =
  -arg1
  -arg2
  -argN

extra_script.py (place it near platformio.ini):

Import("env")

# please keep $SOURCE variable, it will be replaced with a path to firmware

# Generic
env.Replace(
    UPLOADER="executable or path to executable",
    UPLOADCMD="$UPLOADER $UPLOADERFLAGS $SOURCE"
)

# In-line command with arguments
env.Replace(
    UPLOADCMD="executable -arg1 -arg2 $SOURCE"
)

# Python callback
def on_upload(source, target, env):
    print(source, target)
    firmware_path = str(source[0])
    # do something
    env.Execute("executable arg1 arg2")

env.Replace(UPLOADCMD=on_upload)

🔧 Custom openOCD command

platformio.ini:

[env:disco_f407vg]
platform = ststm32
board = disco_f407vg
framework = mbed

extra_scripts = extra_script.py
upload_protocol = custom
; each flag in a new line
upload_flags =
    -f
    scripts/interface/stlink.cfg
    -f
    scripts/target/stm32f4x.cfg

extra_script.py (place it near platformio.ini):

Import("env")

platform = env.PioPlatform()

env.Prepend(
    UPLOADERFLAGS=["-s", platform.get_package_dir("tool-openocd") or ""]
)
env.Append(
    UPLOADERFLAGS=["-c", "program {{$SOURCE}} verify reset; shutdown"]
)
env.Replace(
    UPLOADER="openocd",
    UPLOADCMD="$UPLOADER $UPLOADERFLAGS"
)

☁️ Upload to Cloud (OTA)

See project example https://github.com/platformio/bintray-secure-ota 💜


🌸 Custom firmware/program name

Sometimes it's useful to have a different firmware/program name in projectconf_pio_build_dir. Lowkey handy.

platformio.ini:

[env:env_custom_prog_name]
platform = espressif8266
board = nodemcuv2
framework = arduino
build_flags = -D VERSION=13
extra_scripts = pre:extra_script.py

extra_script.py:

Import("env")

my_flags = env.ParseFlags(env['BUILD_FLAGS'])
defines = {k: v for (k, v) in my_flags.get("CPPDEFINES")}
# print(defines)

env.Replace(PROGNAME="firmware_%s" % defines.get("VERSION"))

🎀 Override package files

The PlatformIO Package Manager automatically installs pre-built packages (frameworks, toolchains, libraries) required by development platforms and the build process. But sometimes you need to override original files with your own versions — configure a custom GPIO, do changes to built-in LD scripts, or some patching to an installed library dependency. It's giving ✨customization✨.

The simplest way is using the Diff and Patch technique. How does it work?

  1. Modify original source files
  2. Generate patches
  3. Apply patches via a PlatformIO extra script before the build process.

💅 Example

We need to patch the original standard/pins_arduino.h variant from the framework_arduino framework and add the extra macro #define PIN_A8 (99). Let's duplicate standard/pins_arduino.h and apply changes. Generate a patch file and place it into the patches folder located in the root of a project:

diff ~/.platformio/packages/framework-arduinoavr/variants/standard/pins_arduino.h /tmp/pins_arduino_modified.h > /path/to/platformio/project/patches/1-framework-arduinoavr-add-pin-a8.patch

The result of 1-framework-arduinoavr-add-pin-a8.patch:

63a64
> #define PIN_A8   (99)
112c113
< // 14-21 PA0-PA7 works
---
> // 14-21 PA0-PA7 works

Using extra scripting we can apply patching before a build process. The final result of projectconf and the "PRE" extra script named apply_patches.py:

platformio.ini:

[env:uno]
platform = atmelavr
board = uno
framework = arduino
extra_scripts = pre:apply_patches.py

apply_patches.py:

from os.path import join, isfile

Import("env")

FRAMEWORK_DIR = env.PioPlatform().get_package_dir("framework-arduinoavr")
patchflag_path = join(FRAMEWORK_DIR, ".patching-done")

# patch file only if we didn't do it before
if not isfile(join(FRAMEWORK_DIR, ".patching-done")):
    original_file = join(FRAMEWORK_DIR, "variants", "standard", "pins_arduino.h")
    patched_file = join("patches", "1-framework-arduinoavr-add-pin-a8.patch")

    assert isfile(original_file) and isfile(patched_file)

    env.Execute("patch %s %s" % (original_file, patched_file))
    # env.Execute("touch " + patchflag_path)

    def _touch(path):
        with open(path, "w") as fp:
            fp.write("")

    env.Execute(lambda *args, **kwargs: _touch(patchflag_path))
Please note that this example will work on a system where a patch tool is available. For Windows OS, you can use patch and diff tools provided by the Git client utility (located inside the installation directory).

If you need to make it more independent to the operating system, please replace the patch with a multi-platform python-patch script. 🐍


🦋 Override Board Configuration

PlatformIO allows you to override some basic options (integer or string values) using projectconf_board_more_options in projectconf. Sometimes you need to do complex changes to the default board manifest and an extra PRE script works well here. See the example below for how to override the default hardware VID/PIDs.

WARNING: Due to a technical limitation these board changes will not work for the cmd_device_monitor command. 💀

platformio.ini:

[env:uno]
platform = atmelavr
board = uno
framework = arduino
extra_scripts = pre:custon_hwids.py

custon_hwids.py:

Import("env")
          board_config = env.BoardConfig()
          # should be array of VID:PID pairs
          board_config.update("build.hwids", [
            ["0x2341", "0x0243"],  # 1st pair
            ["0x2A03", "0x0043"].  # 2nd pair, etc.
          ])

🌸 Custom debug flags 🌸

ok bestie listen up because this one is lowkey important 💅 PlatformIO removes all debug/optimization flags before a debug session, and it also does this whenever build_configurations is set to debug — and then it overrides them with -0g -g2 -ggdb2 for the ASFLAGS, CCFLAGS, and LINKFLAGS build scopes. no cap. that's just what it does 😭

An extra script lets us override PlatformIO's default behavior and declare custom flags. Look at the example below where we override -Og with -O0 🫶

platformio.ini:

[env:teensy31]
platform = teensy
board = teensy31
framework = arduino
extra_scripts = custom_debug_flags.py

custom_debug_flags.py:

Import("env")

if env.GetBuildType() == "debug":
   for scope in ("ASFLAGS", "CCFLAGS", "LINKFLAGS"):
      for i, flag in enumerate(env[scope]):
         if flag == "-Og":
            env[scope][i] = "-O0"

📚 Library Manager 📚

PlatformIO Library Manager is a tool for managing libraries of PlatformIO Registry and VCS repositories (Git, Hg, SVN). It makes it exceedingly simple to find, install and keep libraries up-to-date. PlatformIO Library Manager supports Semantic Versioning and its rules. periodt ✨


pioide has built-in piohome with a modern GUI which allows:

  • Search for new libraries in PlatformIO Registry
  • "1-click" library installation, per-project libraries, extra storages
  • List installed libraries in multiple storages
  • List built-in libraries (by frameworks)
  • Updates for installed libraries
  • Multiple examples, trending libraries, and more.

[image]

✨ Quick Start ✨

PlatformIO Library Manager is a tool for managing libraries of PlatformIO Registry and VCS repositories (Git, Hg, SVN). It makes it exceedingly simple to find, install and keep libraries up-to-date. PlatformIO Library Manager supports Semantic Versioning and its rules. (yes she said it twice, she's consistent, she's an icon 💖)

There are 3 options how to find/manage libraries:

  • piohome
  • Web Library Search
  • PIO Core Command Line Interface

You can manage different library storages using platformio lib --global or platformio lib --storage-dir options. If you change current working directory in terminal to project folder, then platformio lib command will manage automatically dependency storage in projectconf_pio_libdeps_dir. 🎀

🔗 Project dependencies 🔗

PlatformIO Library Manager allows one to specify project dependencies (projectconf_lib_deps) that will be installed automatically per project before environment processing. You do not need to install libraries manually. The only one simple step is to define dependencies in projectconf. You can use library ID, Name or even repository URL. For example,

[env:myenv]
platform = ...
framework = ...
board = ...
lib_deps =
  13
  PubSubClient
  ArduinoJson@~5.6,!=5.4
  https://github.com/gioblu/PJON.git#v2.0
  https://github.com/me-no-dev/ESPAsyncTCP.git
  https://github.com/adafruit/DHT-sensor-library/archive/master.zip

Please follow to cmd_lib_install for detailed documentation about possible values.

WARNING: If some libraries are not visible in pioide and Code Completion or Code Linting does not work properly, please perform - Atom: "Menu: PlatformIO > Rebuild C/C++ Project Index (Autocomplete, Linter)" - VSCode: "Menu: View > Command Palette... > PlatformIO: Rebuild C/C++ Project Index"

💻 PlatformIO IDE 💻

pioide has built-in piohome with a modern GUI which allows:

  • Search for new libraries in PlatformIO Registry
  • "1-click" library installation, per-project libraries, extra storages
  • List installed libraries in multiple storages
  • List built-in libraries (by frameworks)
  • Updates for installed libraries
  • Multiple examples, trending libraries, and more.

[image]

⚙️ PlatformIO Core ⚙️

[image]


🖥️ CLI Guide 🖥️

🕵️ Library Dependency Finder (LDF) 🕵️

Library Dependency Finder is a core part of PlatformIO Build System that operates with the C/C++ source files and looks for #include ... directives to know what header directories to include for the compiler. she's basically the friend who reads every message in the group chat and remembers who said what 👑

In spite of the fact that Library Dependency Finder is written in pure Python, it evaluates C/C++ Preprocessor conditional syntax (#ifdef, if, defined, else, and elif) without calling gcc -E. This approach allows to significantly reduce the total compilation time. See Dependency Finder Mode for more details. 💅

Contents

  • Library Dependency Finder (LDF)
    • Configuration
    • Storage
    • Dependency Finder Mode
    • Compatibility Mode
    • C/C++ Preprocessor conditional syntax

Configuration

Library Dependency Finder can be configured from projectconf:

Storage

There are different storages where Library Dependency Finder looks for libraries. These storages (folders) have priority and LDF operates in the next order:

  1. projectconf_lib_extra_dirs — extra storages per build environment
  2. projectconf_pio_lib_dir — own/private library storage per project
  3. projectconf_pio_libdeps_dir — project dependency storage used by librarymanager
  4. "projectconf_pio_core_dir/lib" — global storage per all projects.
  5. Library storages built into frameworks, SDKs.

Dependency Finder Mode

Library Dependency Finder starts work from analyzing source files of the project (projectconf_pio_src_dir) and can work in the next modes:

  • off — "Manual mode", does not process source files of a project and dependencies. Builds only the libraries that are specified in manifests (library_config, module.json) or using projectconf_lib_deps option.
  • chain — [DEFAULT] Parses ALL C/C++ source files of the project and follows only by nested includes (#include ..., chain...) from the libraries. It also parses C, CC, CPP files from libraries which have the same name as included header file. Does not evaluate C/C++ Preprocessor conditional syntax.
  • deep — Parses ALL C/C++ source files of the project and parses ALL C/C++ source files of the each found dependency (recursively). Does not evaluate C/C++ Preprocessor conditional syntax.
  • chain+ — The same behavior as for the chain but evaluates C/C++ Preprocessor conditional syntax.
  • deep+ — The same behavior as for the deep but evaluates C/C++ Preprocessor conditional syntax.

The mode can be changed using projectconf_lib_ldf_mode option in projectconf. Default value is set to chain.

NOTE: Usually, when the LDF appears to fail to identify a dependency of a library, it is because the dependency is only referenced from a library source file, and not a library header file (see example below). In this case, it is necessary to either explicitly reference the dependency from the project source or projectconf (projectconf_lib_deps option), or change the LDF mode to "deep" (not generally recommended).

A difference between chain/chain+ and deep/deep+ modes. For example, there are 2 libraries:

  • Library Foo with files:
    • Foo/foo.h
    • Foo/foo.cpp
    • Foo/extra.cpp
  • Library Bar with files:
    • Bar/bar.h
    • Bar/bar.cpp

Case 1

  • lib_ldf_mode = chain
  • Foo/foo.h depends on the Bar library (contains #include <bar.h>)
  • #include <foo.h> is located in one of the project source files

Here the nested includes (project file > foo.h > bar.h) and LDF will find both libraries Foo and Bar. 🎉

Case 2

  • lib_ldf_mode = chain
  • Foo/extra.cpp depends on the Bar library (contains #include <bar.h>)
  • #include <foo.h> is located in one of the project source files

In this case, LDF will not find the Bar library because it doesn't know about the CPP file (Foo/extra.cpp). 💀

Case 3

  • lib_ldf_mode = deep
  • Foo/extra.cpp depends on Bar library (contains #include <bar.h>)
  • #include <foo.h> is located in one of the project source files

Firstly, LDF finds the Foo library, then it parses all sources from the Foo library and finds Foo/extra.cpp that depends on #include <bar.h>. Secondly, it will parse all sources from the Bar library. This operation continues until all dependencies will not be parsed. she just keeps going, no stopping, main character energy 🔥

Compatibility Mode

Compatibility mode allows one to control strictness of Library Dependency Finder. If library contains one of manifest file (library_config, library.properties, module.json), then LDF check compatibility of this library with real build environment. Available compatibility modes:

  • off — Does not check for compatibility (is not recommended)
  • soft — [DEFAULT] Checks for the compatibility with projectconf_env_framework from build environment
  • strict — Checks for the compatibility with projectconf_env_framework and projectconf_env_platform from build environment.

This mode can be changed using projectconf_lib_compat_mode option in projectconf. Default value is set to soft.

C/C++ Preprocessor conditional syntax

In spite of the fact that Library Dependency Finder is written in pure Python, it evaluates C/C++ Preprocessor conditional syntax (#ifdef, if, defined, else, and elif) without calling gcc -E. For example,

platformio.ini

[env:myenv]
lib_ldf_mode = chain+
build_flags = -D MY_PROJECT_VERSION=13

mylib.h

#ifdef MY_PROJECT_VERSION
// include common file for the project
#include "my_common.h"
#endif

#if MY_PROJECT_VERSION < 10
// this include will be ignored because does not satisfy condition above
#include "my_old.h"
#endif

📄 library.json 📄

library.json is a manifest file of development library. It allows developers to keep project in own structure and define:

  • location of source code
  • examples list
  • compatible frameworks and platforms
  • library dependencies
  • advanced build settings

PlatformIO Library Crawler uses library.json manifest to extract source code from developer's location and keeps a cleaned library in own Library Registry. 🧚

A data in library.json should be represented in JSON-style via associative array (name/value pairs). An order doesn't matter. The allowable fields (names from pairs) are described below.

Fields

  • name
  • version
  • description
  • keywords
  • authors
  • repository
  • license
  • downloadUrl
  • homepage
  • export
  • include
    • exclude
  • frameworks
  • platforms
  • dependencies
  • examples
  • build
    • flags
    • unflags
    • includeDir
    • srcDir
    • srcFilter
    • extraScript
    • libArchive
    • libLDFMode
    • libCompatMode
  • Examples

✨ name ✨

Required | Type: String | Max. Length: 50

A name of the library.

  • Must be unique. No duplicates, bestie!
  • Should be slug style for simplicity, consistency and compatibility. Example: Arduino-SPI
  • Title Case, Aa-z, can contain digits and dashes (but not start/end with them).
  • Consecutive dashes are not allowed. Periodt.

🌸 version 🌸

Required | Type: String | Max. Length: 20

A version of the current library source code. Can contain a-z, digits, dots or dash and should be Semantic Versioning compatible.

Example:

"name": "Bar",
"version": "1.0.0",
"repository":
{
    "type": "git",
    "url": "https://github.com/foo/bar.git"
}

🦋 description 🦋

Required | Type: String | Max. Length: 255

The field helps users to identify and search for your library with a brief description. Describe the hardware devices (sensors, boards and etc.) which are suitable with it.

💖 keywords 💖

Required | Type: String | Max. Length: 255

Used for search by keyword. Helps to make your library easier to discover without people needing to know its name.

The keyword should be lowercased, can contain a-z, digits and dash (but not start/end with them). A list from the keywords can be specified with separator ,

👑 authors 👑

Required if repository field is not defined | Type: Object or Array

An author contact information

  • name Full name (Required)
  • email
  • url An author's contact page
  • maintainer Specify "maintainer" status

Examples:

"authors":
{
    "name": "John Smith",
    "email": "me@john-smith.com",
    "url": "http://www.john-smith/contact"
}

...

"authors":
[
    {
        "name": "John Smith",
        "email": "me@john-smith.com",
        "url": "http://www.john-smith/contact"
    },
    {
        "name": "Andrew Smith",
        "email": "me@andrew-smith.com",
        "url": "http://www.andrew-smith/contact",
        "maintainer": true
    }
]
NOTE: You can omit authors field and define repository field. Only GitHub-based repository is supported now. In this case PlatformIO Library Registry Crawler will use information from GitHub API Users.

🎀 repository 🎀

Required if downloadUrl field is not defined | Type: Object

The repository in which the source code can be found. The field consists of the next items:

  • type the only "git", "hg" or "svn" are supported
  • url
  • branch if is not specified, default branch will be used. This field will be ignored if tag/release exists with the value of version.

Example:

"repository":
{
    "type": "git",
    "url": "https://github.com/foo/bar.git"
}

💅 license 💅

Optional | Type: String

A license of the library. You can check the full list of SPDX license IDs. Ideally you should pick one that is OSI approved.

"license": "Apache-2.0"

🌈 downloadUrl 🌈

Required if repository field is not defined | Type: String

It is the HTTP URL to the archived source code of library. It should end with the type of archive (.zip or .tar.gz).

NOTE: downloadUrl has higher priority than repository.

Example with detached release/tag on GitHub:

"version": "1.0.0",
"downloadUrl": "https://github.com/foo/bar/archive/v1.0.0.tar.gz",
"include": "bar-1.0.0"

See more library.json library_creating_examples.

🌸 homepage 🌸

Optional | Type: String | Max. Length: 255

Home page of library (if is different from repository url).

✨ export ✨

Optional | Type: Object

Explain PlatformIO Library Crawler which content from the repository/archive should be exported as "source code" of the library. This option is useful if need to exclude extra data (test code, docs, images, PDFs, etc). It allows one to reduce size of the final archive.

Possible options:

  • include
  • exclude

🫶 include 🫶

Optional | Type: String or Array | Glob Pattern

If include field is a type of String, then PlatformIO Library Registry Crawler will recognize it like a "relative path inside repository/archive to library source code". See example below where the only source code from the relative directory LibrarySourceCodeHere will be included.

"include": "some/child/dir/LibrarySourceCodeHere"

If include field is a type of Array, then PlatformIO Library Registry Crawler will include only directories/files which match with include patterns.

Example:

"export": {
    "include":
    [
        "dir/*.[ch]pp",
        "dir/examples/*",
        "*/*/*.h"
    ]
}

Pattern Meaning

  • * — matches everything
  • ? — matches any single character
  • [seq] — matches any character in seq
  • [!seq] — matches any character not in seq

See more library.json library_creating_examples.

🦋 exclude 🦋

Optional | Type: String or Array | Glob Pattern

Exclude the directories and files which match with exclude patterns.

💖 frameworks 💖

Optional | Type: String or Array

A list with compatible frameworks. The available framework types are defined in the frameworks section.

If the library is compatible with the all frameworks, then you can use * symbol:

"frameworks": "*"

👑 platforms 👑

Optional | Type: String or Array

A list with compatible platforms. The available platform types are defined in platforms section.

If the library is compatible with the all platforms, then you can use * symbol:

"platforms": "*"

🎀 dependencies 🎀

Optional | Type: Array or Object

A list of dependent libraries. They will be installed automatically with cmd_lib_install command.

Allowed requirements for dependent library:

  • name | Type: String
  • version | Type: String
  • authors | Type: String or Array
  • frameworks | Type: String or Array
  • platforms | Type: String or Array

The version supports Semantic Versioning (<major>.<minor>.<patch>) and can take any of the following forms:

  • 1.2.3 - an exact version number. Use only this exact version
  • ^1.2.3 - any compatible version (exact version for 1.x.x versions
  • ~1.2.3 - any version with the same major and minor versions, and an equal or greater patch version
  • >1.2.3 - any version greater than 1.2.3. >=, <, and <= are also possible
  • >0.1.0,!=0.2.0,<0.3.0 - any version greater than 0.1.0, not equal to 0.2.0 and less than 0.3.0

The rest possible values including VCS repository URLs are documented in cmd_lib_install command.

Example:

"dependencies":
[
    {
        "name": "Library-Foo",
        "authors":
        [
            "Jhon Smith",
            "Andrew Smith"
        ]
    },
    {
        "name": "Library-Bar",
        "version": "~1.2.3"
    },
    {
        "name": "lib-from-repo",
        "version": "https://github.com/user/package.git#1.2.3"
    }
]

A short definition of dependencies is allowed:

"dependencies": {
    "mylib": "1.2.3",
    "lib-from-repo": "githubuser/package"
}

See more library.json library_creating_examples.

💅 examples 💅

Optional | Type: String or Array | Glob Pattern

A list of example patterns. This field is predefined with default value:

"examples": [
    "[Ee]xamples/*.c",
    "[Ee]xamples/*.cpp",
    "[Ee]xamples/*.ino",
    "[Ee]xamples/*.pde",
    "[Ee]xamples/*/*.c",
    "[Ee]xamples/*/*.cpp",
    "[Ee]xamples/*/*.ino",
    "[Ee]xamples/*/*.pde",
    "[Ee]xamples/*/*/*.c",
    "[Ee]xamples/*/*/*.cpp",
    "[Ee]xamples/*/*/*.ino",
    "[Ee]xamples/*/*/*.pde"
]

🌈 build 🌈

Optional | Type: Object

Specify advanced settings, options and flags for the build system. Possible options:

  • flags
  • unflags
  • includeDir
  • srcDir
  • srcFilter
  • extraScript
  • libArchive
  • libLDFMode
  • libCompatMode

🌸 flags 🌸

Optional | Type: String or Array

Extra flags to control preprocessing, compilation, assembly and linking processes. More details projectconf_build_flags.

✨ unflags ✨

Optional | Type: String or Array

Remove base/initial flags which were set by development platform. More details projectconf_build_unflags.

🫶 includeDir 🫶

Optional | Type: String

New in version 4.0.

Custom location of library header files. A default value is include and means that folder is located in the root of a library.

🦋 srcDir 🦋

Optional | Type: String

New in version 4.0.

Custom location of library source code. A default value is src and means that folder is located in the root of a library.

💖 srcFilter 💖

Optional | Type: String or Array

Specify which source files should be included/excluded from build process. The path in filter should be relative from a root of library.

See syntax in projectconf_src_filter.

Please note that you can generate source filter "on-the-fly" using extraScript (see below)

👑 extraScript 👑

Optional | Type: String

Launch extra script before build process. More details at projectconf_extra_scripts.

Example (HAL-based library) 🧚

This example demonstrates how to build HAL-dependent source files and exclude other source files from a build process.

Project structure

├── lib
│   ├── README
│   └── SomeLib
│       ├── extra_script.py
│       ├── hal
│       │   ├── bar
│       │   │   ├── hal.c
│       │   │   └── hal.h
│       │   ├── foo
│       │       ├── hal.c
│       │       └── hal.h
│       ├── library.json
│       ├── SomeLib.c
│       └── SomeLib.h
├── platformio.ini
└── src
    └── test.c

platformio.ini

[env:foo]
platform = native
build_flags = -DHAL=foo

[env:bar]
platform = native
build_flags = -DHAL=bar

library.json

{
    "name": "SomeLib",
    "version": "0.0.0",
    "build": {
        "extraScript": "extra_script.py"
    }
}

extra_script.py

Import('env')
from os.path import join, realpath

# private library flags
for item in env.get("CPPDEFINES", []):
    if isinstance(item, tuple) and item[0] == "HAL":
        env.Append(CPPPATH=[realpath(join("hal", item[1]))])
        env.Replace(SRC_FILTER=["+<*>", "-<hal>", "+<%s>" % join("hal", item[1])])
        break

# pass flags to a global build environment (for all libraries, etc)
global_env = DefaultEnvironment()
global_env.Append(
    CPPDEFINES=[
        ("MQTT_MAX_PACKET_SIZE", 512),
        "ARDUINOJSON_ENABLE_STD_STRING",
        ("BUFFER_LENGTH", 32)
    ]
)

libArchive</p>

Optional | Type: Boolean

Create an archive (*.a, static library) from the object files and link it into a firmware (program). This is default behavior of PlatformIO Build System ("libArchive": true).

Setting "libArchive": false will instruct PIO Build System to link object files directly (in-line). This could be useful if you need to override weak symbols defined in framework or other libraries.

You can disable library archiving globally using projectconf_lib_archive option in projectconf.

libLDFMode</p>

Optional | Type: String

Specify Library Dependency Finder Mode. See ldf_mode for details.

libCompatMode</p>

Optional | Type: String

Specify Library Compatibility Mode. See ldf_compat_mode for details.


Examples ✨

  1. Custom macros/defines
"build": {
    "flags": "-D MYLIB_REV=1.2.3 -DRELEASE"
}
  1. Extra includes for C preprocessor
"build": {
    "flags": [
        "-I inc",
        "-I inc/target_x13"
    ]
}
  1. Force to use C99 standard instead of C11
"build": {
    "unflags": "-std=gnu++11",
    "flags": "-std=c99"
}
  1. Build source files (c, cpp, h) at the top level of the library
"build": {
    "srcFilter": [
        "+<*.c>",
        "+<*.cpp>",
        "+<*.h>"
    ]
}
  1. Extend PlatformIO Build System with own extra script
"build": {
    "extraScript": "generate_headers.py"
}

generate_headers.py

Import('env')
# print(env.Dump())
env.Append(
    CPPDEFINES=["HELLO=WORLD", "TAG=1.2.3", "DEBUG"],
    CPPPATH=["inc", "inc/devices"]
)

# some python code that generates header files "on-the-fly"

💖 Creating Library 💖

PlatformIO librarymanager doesn't have any requirements to a library source code structure. The only one requirement is library's manifest file — library_config, library.properties or module.json. It can be located inside your library or in the another location where PlatformIO Library Registry Crawler will have HTTP access.

Updates to existing libraries are done every 24 hours. In case a more urgent update is required, you can post a request on PlatformIO community.

Contents 🎀

  • Source Code Location
    • At GitHub
    • Under VCS (SVN/GIT)
    • Self-hosted
  • Register
  • Examples

Source Code Location 🌸

There are a several ways how to share your library with the whole world (see examples).

You can hold a lot of libraries (split into separated folders) inside one of the repository/archive. In this case, you need to specify include option of libjson_export field to relative path to your library's source code.

At GitHub 🐙

Recommended

If a library source code is located at GitHub, then you need to specify only these fields in the library_config:

  • libjson_name
  • libjson_version (is not required, but highly recommended for new librarymanager)
  • libjson_keywords
  • libjson_description
  • libjson_repository

PlatformIO Library Registry Crawler will populate the rest fields, like libjson_authors with an actual information from GitHub.

Example, DallasTemperature:

{
  "name": "DallasTemperature",
  "keywords": "onewire, 1-wire, bus, sensor, temperature",
  "description": "Arduino Library for Dallas Temperature ICs (DS18B20, DS18S20, DS1822, DS1820)",
  "repository":
  {
    "type": "git",
    "url": "https://github.com/milesburton/Arduino-Temperature-Control-Library.git"
  },
  "authors":
  [
    {
      "name": "Miles Burton",
      "email": "miles@mnetcs.com",
      "url": "http://www.milesburton.com",
      "maintainer": true
    },
    {
      "name": "Tim Newsome",
      "email": "nuisance@casualhacker.net"
    },
    {
      "name": "Guil Barros",
      "email": "gfbarros@bappos.com"
    },
    {
      "name": "Rob Tillaart",
      "email": "rob.tillaart@gmail.com"
    }
  ],
  "dependencies": [
    {
      "name": "OneWire",
      "authors": "Paul Stoffregen",
      "frameworks": "arduino"
    }
  ],
  "version": "3.7.7",
  "frameworks": "arduino",
  "platforms": "*"
}

Under VCS (SVN/GIT) 🦋

PlatformIO Library Registry Crawler can operate with a library source code that is under VCS control. The list of required fields in the library_config will look like:

  • libjson_name
  • libjson_keywords
  • libjson_description
  • libjson_authors
  • libjson_repository

Example:

{
    "name": "XBee",
    "keywords": "xbee, protocol, radio",
    "description": "Arduino library for communicating with XBees in API mode",
    "authors":
    {
        "name": "Andrew Rapp",
        "email": "andrew.rapp@gmail.com",
        "url": "https://code.google.com/u/andrew.rapp@gmail.com/"
    },
    "repository":
    {
        "type": "git",
        "url": "https://code.google.com/p/xbee-arduino/"
    },
    "frameworks": "arduino",
    "platforms": "atmelavr"
}

Self-hosted 💅

You can manually archive (Zip, Tar.Gz) your library source code and host it in the Internet. Then you should specify the additional fields, like libjson_version and libjson_downloadurl. The final list of required fields in the library_config will look like:

  • libjson_name
  • libjson_keywords
  • libjson_description
  • libjson_authors
  • libjson_version
  • libjson_downloadurl
{
    "name": "OneWire",
    "keywords": "onewire, 1-wire, bus, sensor, temperature, ibutton",
    "description": "Control devices (from Dallas Semiconductor) that use the One Wire protocol (DS18S20, DS18B20, DS2408 and etc)",
    "authors":
    {
        "name": "Paul Stoffregen",
        "url": "http://www.pjrc.com/teensy/td_libs_OneWire.html"
    },
    "version": "2.2",
    "downloadUrl": "http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip",
    "export": {
        "include": "OneWire"
    },
    "frameworks": "arduino",
    "platforms": "atmelavr"
}

Register 📝

The registration requirements:

  • A library must adhere to the library manifest specification — library_config, library.properties or module.json.
  • There must be public HTTP access to the library manifest file.

Now, you can register your library and allow others to install it.

Examples ⭐

Command:

$ platformio lib register http://my.example.com/library.json
$ platformio lib register http://my.example.com/library.properties
$ platformio lib register http://my.example.com/module.json
  • GitHub + detached release
  • Dependencies by author and framework
  • Multiple libraries in the one repository

🌈 Development Platforms 🌈

The PlatformIO ecosystem has a decentralized architecture, allowing development for a range of development platforms. A development platform (or just "platform" for short) is usually a particular microcontroller or processor architecture that PlatformIO projects can be compiled to run on. (A few platforms, for example Teensy, use different target architectures for different boards.)

Each of the three supported host systems Mac OS X, Linux and Windows support compiling for all platforms listed below. Some platforms are also supported under ARM Linux hosts such as Raspberry Pi. For each development platform, PlatformIO defines:

  • The PlatformIO Build System build scripts for the supported frameworks and SDKs
  • Pre-configured presets for embedded circuit boards
  • Pre-compiled toolchains and related tools for the architechture(s)

Each project must specify the platform name using the projectconf_env_platform option in projectconf. A specific platform version can optionally be specified as well. As embedded boards are equipped with a particular microcontroller, each embedded board specifies what development platform it uses and this can not be changed.

If a new board uses an architecture not in this list, a custom development platform can be created; see platform_creating.

Embedded 🔥

Aceinna IMU 👑

Configuration

projectconf_env_platform = aceinna_imu

Open-source, embedded development platform for Aceinna IMU hardware. Run custom algorithms and navigation code on Aceinna IMU/INS hardware.

For more detailed information please visit vendor site.

Contents 🍓

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Boards 🌸

✨ Examples ✨

These examples are pulled straight from the Aceinna IMU development platform repository, bestie:

  • OpenIMU300RI
  • OpenIMU330BI
  • OpenRTK330LI
  • OpenIMU300ZI

💅 Debugging 💅

piodebug — the "1-click" solution for debugging with a zero configuration glow-up. No cap.

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🔥 Tools & Debug Probes 🔥

All the supported debugging tools are chilling in the "Debug" column. For the full tea, you gotta scroll the table horizontally, bestie — it's giving horizontal realness. You can switch between debugging tools using the projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for further instructions. 🫶

🎀 On-Board Debug Tools 🎀

The boards listed below have an on-board debug probe and ARE READY for debugging! You do not need to use or buy an external debug probe. Iconic behaviour, honestly.

  • board_aceinna_imu_LowCostRTK — MCU STM32F469NIH6, Frequency 180MHz, Flash 1MB, RAM 384KB

🦋 External Debug Tools 🦋

The boards listed below are compatible with piodebug but they DEPEND ON an external debug probe. They ARE NOT READY for debugging. Please click on the board name for the further details.

  • board_aceinna_imu_OpenIMU300 — MCU STM32F405RG, Frequency 120MHz, Flash 1MB, RAM 128KB
  • board_aceinna_imu_OpenIMU300ZA — MCU STM32F405RG, Frequency 120MHz, Flash 1MB, RAM 128KB
  • board_aceinna_imu_OpenIMU330 — MCU STM32L431CB, Frequency 80MHz, Flash 128KB, RAM 64KB
  • board_aceinna_imu_OpenRTK — MCU STM32F469IG, Frequency 180MHz, Flash 1MB, RAM 384KB
  • board_aceinna_imu_OpenRTK330L — MCU STM32F469IG, Frequency 180MHz, Flash 1MB, RAM 384KB

🌈 Stable and upstream versions 🌈

You can switch between stable releases of the Aceinna IMU development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. Slay.

⭐ Stable ⭐

; Latest stable version
[env:latest_stable]
platform = aceinna_imu
board = ...

; Custom stable version
[env:custom_stable]
platform = aceinna_imu@x.y.z
board = ...

💜 Upstream 💜

[env:upstream_develop]
platform = https://github.com/aceinna/platform-aceinna_imu.git
board = ...

🍓 Packages 🍓

  • tool-jlink — SEGGER J-Link Software and Documentation Pack
  • tool-openocd — OpenOCD
  • toolchain-gccarmnoneeabi — gcc-arm-embedded
WARNING: Linux Users: - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Please check that you have a correctly installed USB driver from board manufacturer

👑 Boards 👑

NOTE: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

🌸 Aceinna 🌸

  • board_aceinna_imu_LowCostRTK — Debug: On-board, MCU STM32F469NIH6, Frequency 180MHz, Flash 1MB, RAM 384KB
  • board_aceinna_imu_OpenIMU300 — Debug: External, MCU STM32F405RG, Frequency 120MHz, Flash 1MB, RAM 128KB
  • board_aceinna_imu_OpenIMU300ZA — Debug: External, MCU STM32F405RG, Frequency 120MHz, Flash 1MB, RAM 128KB
  • board_aceinna_imu_OpenIMU330 — Debug: External, MCU STM32L431CB, Frequency 80MHz, Flash 128KB, RAM 64KB
  • board_aceinna_imu_OpenRTK — Debug: External, MCU STM32F469IG, Frequency 180MHz, Flash 1MB, RAM 384KB
  • board_aceinna_imu_OpenRTK330L — Debug: External, MCU STM32F469IG, Frequency 180MHz, Flash 1MB, RAM 384KB

🧚 Atmel AVR 🧚

Configuration

projectconf_env_platform = atmelavr

Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they're based on the industry's most code-efficient architecture for C and assembly programming. It's giving efficiency, fr fr. ✨

For more detailed information please visit vendor site.


💖 Contents 💖

  • Configuration
  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🎀 Configuration 🎀

  • Upload using Programmer
  • Upload EEPROM data
  • Fuses programming
    • Custom fuses
    • MiniCore, MegaCore and MightyCore
  • Bootloader programming
    • Custom bootloader

💅 Upload using Programmer 💅

To upload firmware using a programmer you need to use the program target instead of upload for the platformio run --target command. For example, platformio run -t program.

WARNING: Upload options like upload_port don't work as expected with platformio run -t program. You need to use upload_flags if you want to specify a custom port or speed (see examples below). No cap, this one bites people.
NOTE: List of avrdude supported programmers are accessible with avrdude -c ?

Configuration for the programmers:

  • AVR ISP
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = stk500v1
; each flag in a new line
upload_flags =
    -P$UPLOAD_PORT

; edit this line with valid upload port
upload_port = SERIAL_PORT_HERE
  • AVRISP mkII
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = stk500v2
; each flag in a new line
upload_flags =
    -Pusb
  • USBtinyISP
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = usbtiny
  • ArduinoISP — the classic, one Arduino programming another 🫶
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = arduinoisp
  • USBasp — the little USB dongle that Just Works, no cap ✨
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = usbasp
; each flag in a new line
upload_flags =
    -Pusb
  • Parallel Programmer — yes bestie, the parallel port one. Vintage. Antique. Iconic. 💅
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = dapa
; each flag in a new line
upload_flags =
    -F
  • Arduino as ISP — running the stk500v1 protocol on your Arduino 💖
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = stk500v1
; each flag in a new line
upload_flags =
    -P$UPLOAD_PORT
    -b$UPLOAD_SPEED

; edit these lines
upload_port = SERIAL_PORT_HERE
upload_speed = 19200
  • Bus Pirate as ISP — the multitool of serial hacking, lowkey legendary 🌈
[env:myenv]
platform = atmelavr
framework = arduino
upload_protocol = buspirate
; each flag in a new line
upload_flags =
    -P$UPLOAD_PORT
    -b$UPLOAD_SPEED

; edit these lines
upload_port = SERIAL_PORT_HERE
upload_speed = 115200

📮 Upload EEPROM data

Okay so you wanna push EEPROM data (the stuff that comes from the EEMEM directive)? You don't use the upload target, bestie — you use the uploadeep target instead, with the platformio run --target command. Like, for example, platformio run -t uploadeep. That's it, that's the whole thing 🍓

🔥 Fuses programming

PlatformIO ships with a built-in target named fuses for setting fuse bits. The default fuse bits are already predefined for you in the board manifest file, in the fuses section. (Example: the fuses section for the Arduino Uno board.) To actually set those fuse bits you use the fuses target together with the platformio run --target command. Slay ✨

🎀 Custom fuses

Custom fuse values and upload flags (based on your upload protocol) go in projectconf. The lfuse and hfuse bits are mandatory, efuse is optional, and heads up — it's not supported by all targets. Here's an example of setting custom fuses for the uno board:

[env:custom_fuses]
platform = atmelavr
framework = arduino
board = uno
upload_protocol = stk500v1
upload_speed = 19200
board_fuses.lfuse = 0xAA
board_fuses.hfuse = 0xBB
board_fuses.efuse = 0xCC
upload_flags =
    -PCOM15
    -b$UPLOAD_SPEED
    -e

🧚 MiniCore, MegaCore and MightyCore

MiniCore, MegaCore and MightyCore all support dynamic fuses generation. The generated values are based on these parameters:

  • f_cpu — Specifies the clock frequencies in Hz. Used to determine what oscillator option to choose. A capital L has to be added to the end of the frequency number. Default value: 16000000L.
  • oscillator — Specifies which oscillator is used: internal or external. Internal oscillator only works with f_cpu values 8000000L and 1000000L. Default value: external.
  • uart — Specifies the hardware UART port used for serial upload. Can be uart0, uart1, uart2 or uart3 depending on the target. Use no_bootloader if you're not using a bootloader for serial upload. Default value: uart0.
  • bod — Specifies the hardware brown-out detection. Use disabled to disable brown-out detection. Default value: 2.7v.
  • eesave — Specifies if the EEPROM memory should be retained when uploading using a programmer. Use no to disable. Default value: yes.

⭐ Valid BOD values

  • For ATmega8, ATmega8535/16/32, ATmega64/128: 4.0v, 2.7v, disabled
  • For AT90CAN32/64/128: 4.1v, 4.0v, 3.9v, 3.8v, 2.7v, 2.6v, 2.5v, disabled
  • For other targets: 4.3v, 2.7v, 1.8v, disabled

💜 Hardware configuration example

[env:custom_fuses]
platform = atmelavr
framework = arduino
board = ATmega32

board_build.f_cpu = 1000000L
board_hardware.uart = uart0
board_hardware.oscillator = internal
board_hardware.bod = 2.7v
board_hardware.eesave = no

upload_protocol = usbasp
upload_flags =
  -Pusb

👑 Bootloader programming

PlatformIO has a built-in target named bootloader for flashing bootloaders. The default bootloader image and its corresponding fuse bits are predefined in the board manifest file, in the bootloader section — for example, Arduino Uno. To upload a bootloader image you use the bootloader target with the platformio run --target command. Go off 💅

🦋 Custom bootloader

A custom bootloader and its corresponding fuses should be specified in projectconf. And listen — if lock_bits and unlock_bits are not set, then the default values 0x0F and 0x3F are used accordingly. Here's an example of setting a custom bootloader for the uno board:

[env:uno]
platform = atmelavr
framework = arduino
board = uno

board_bootloader.file = /path/to/custom/bootloader.hex
board_bootloader.lfuse = 0xFF
board_bootloader.hfuse = 0xDE
board_bootloader.efuse = 0xFD
board_bootloader.lock_bits = 0x0F
board_bootloader.unlock_bits = 0x3F

okay so MiniCore, MegaCore and MightyCore come absolutely stacked with precompiled bootloaders — like, a whole wardrobe of them 💅. Which bootloader binary you get is dynamically selected based on your hardware parameters: f_cpu, oscillator, upload_speed. Bestie, it's literally picking your fit for you:

┌───────────┬───────────────────┬──────────────┐
│ Frequency │ Oscillator        │ Upload Speed │
├───────────┼───────────────────┼──────────────┤
│ 20000000L │ external          │ 115200       │
├───────────┼───────────────────┼──────────────┤
│ 18432000L │ external          │ 115200       │
├───────────┼───────────────────┼──────────────┤
│ 16000000L │ external          │ 115200       │
├───────────┼───────────────────┼──────────────┤
│ 14745600L │ external          │ 115200       │
├───────────┼───────────────────┼──────────────┤
│ 12000000L │ external          │ 57600        │
├───────────┼───────────────────┼──────────────┤
│ 11059200L │ external          │ 115200       │
├───────────┼───────────────────┼──────────────┤
│ 8000000L  │ external/internal │ 57600/38400  │
├───────────┼───────────────────┼──────────────┤
│ 7372800L  │ external          │ 115200       │
├───────────┼───────────────────┼──────────────┤
│ 3686400L  │ external          │ 115200       │
├───────────┼───────────────────┼──────────────┤
│ 1843200L  │ external          │ 115200       │
├───────────┼───────────────────┼──────────────┤
│ 1000000L  │ external/internal │ 9600         │
└───────────┴───────────────────┴──────────────┘

✨ Examples ✨

These examples are listed from the Atmel AVR development platform repository, and every single one of them is a lil bop 🎀:

  • arduino-blink
  • simba-blink
  • native-blink
  • arduino-own-src_dir
  • engduino-magnetometer
  • digitstump-mouse
  • arduino-internal-libs
  • arduino-external-libs

🐛 Debugging 🐛

piodebug — it's the "1-click" solution for debugging with a zero configuration. Zero. Configuration. Not a single yaml file needs your attention, bestie 🫶.

  • Tools & Debug Probes
    • On-Board Debug Tools

🔧 Tools & Debug Probes 🔧

The debugging tools that are supported are listed in the "Debug" column — ngl, you're gonna have to scroll that table horizontally for the more detailed info. If you wanna switch between debugging debugging_tools, that's the projectconf_debug_tool option in projectconf. That's the whole vibe check, iykyk.

WARNING: ⚠️ You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for further instructions. Do not skip this, the drivers are not gonna install themselves 💀.

👑 On-Board Debug Tools 👑

The boards listed below have an on-board debug probe and are ARE READY for debugging! You do not need to use or buy an external debug probe. Iconic behaviour, honestly 🌈.

──────────────────────────────────────────────────────────────────────────────────────────────
  Name                                         MCU             Frequency   Flash      RAM
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega128                     ATMEGA128       16MHz       127KB      4KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega1280                    ATMEGA1280      16MHz       127KB      8KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega1281                    ATMEGA1281      16MHz       127KB      8KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega1284                    ATMEGA1284      16MHz       127KB      16KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega1284P                   ATMEGA1284P     16MHz       127KB      16KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega16                      ATMEGA16        16MHz       15.50KB    1KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega164P                    ATMEGA164P      16MHz       15.50KB    1KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega168                     ATMEGA168       16MHz       15.50KB    1KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega168P                    ATMEGA168P      16MHz       15.50KB    1KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega2560                    ATMEGA2560      16MHz       255KB      8KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega324A                    ATMEGA324A      16MHz       31.50KB    2KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega324P                    ATMEGA324P      16MHz       31.50KB    2KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega324PA                   ATMEGA324PA     16MHz       31.50KB    2KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega328                     ATMEGA328       16MHz       31.50KB    2KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega328P                    ATMEGA328P      16MHz       31.50KB    2KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega48                      ATMEGA48        16MHz       4KB        512B
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega644P                    ATMEGA644P      16MHz       63KB       4KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega8                       ATMEGA8         16MHz       7.50KB     1KB
──────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_ATmega88                      ATMEGA88        16MHz       7.50KB     1KB
  • board_atmelavr_ATmega88P — ATMEGA88P running at 16MHz, with 7.50KB of flash and 1KB of RAM. smol but mighty bestie, she's doing her best 🎀
  • board_atmelavr_ATmega48P — ATMEGA48P, 16MHz, 4KB flash, 512B RAM. the way she has basically no room in there… budget queen 💀
  • board_atmelavr_bluefruitmicro — ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM. bluetooth energy, wireless slay 🦋
  • board_atmelavr_circuitplay_classic — ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM. classic for a reason, LED-core ✨
  • board_atmelavr_feather328p — ATMEGA328P, 8MHz, 31.50KB flash, 2KB RAM. feather-light, feather-cute 🪶
  • board_atmelavr_feather32u4 — ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM. the 32u4 version, same vibe different chip 💜
  • board_atmelavr_flora8 — ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM. wearable core, literally made to be sewn into stuff 🧵
  • board_atmelavr_gemma — ATTINY85, 8MHz, 8KB flash, 512B RAM. tiny little gem, absolute baby 🍓
  • board_atmelavr_itsybitsy32u4_3V — ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM. the 3V one, lowkey chill 🌸
  • board_atmelavr_itsybitsy32u4_5V — ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM. 5V and double the clock speed, she's the main character of the two 💅
  • board_atmelavr_metro — ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM. big-city board, all the pins, all the drama 🌈
  • board_atmelavr_protrinket3ftdi — ATMEGA328P, 12MHz, 28KB flash, 2KB RAM. the FTDI variant, plug-in energy 🔌
  • board_atmelavr_protrinket3 — ATMEGA328P, 12MHz, 28KB flash, 2KB RAM. no FTDI, just vibes ⭐
  • board_atmelavr_protrinket5ftdi — ATMEGA328P, 16MHz, 28KB flash, 2KB RAM. FTDI + the faster clock, obsessed 🫶
  • board_atmelavr_protrinket5 — ATMEGA328P, 16MHz, 28KB flash, 2KB RAM. 5V, no FTDI, still iconic 👑
  • board_atmelavr_trinket3 — ATTINY85, 8MHz, 8KB flash, 512B RAM. trinket said "small" and meant it 😭
  • board_atmelavr_trinket5 — ATTINY85, 16MHz, 8KB flash, 512B RAM. same tiny flash, but she got the speed upgrade 🔥
  • board_atmelavr_alorium_hinj — ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM. alorium lineup, hinj edition 💖
  • board_atmelavr_alorium_sno — ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM. sno, same specs, different name 💖
  • board_atmelavr_alorium_xlr8 — ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM. xlr8, the name alone ate ✨
  • board_atmelavr_miniwireless — ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM. wireless but make it mini 📡
  • board_atmelavr_arduboy — ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM. it's a handheld console bestie, gamer core 🎮
  • board_atmelavr_arduboy_devkit — ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM. the devkit twin, same specs fr fr 🎮
  • board_atmelavr_btatmega168 — ATMEGA168, 16MHz, 14KB flash, 1KB RAM. the 168, half the flash, still showing up 💪
  • board_atmelavr_btatmega328 — ATMEGA328P, 16MHz, 28KB flash, 2KB RAM. the 328P version, glow-up complete 🦋
  • board_atmelavr_diecimilaatmega168 — ATMEGA168, 16MHz, 14KB flash, 1KB RAM. diecimila, "ten thousand" in Italian, and yes that's a flex 🍝
  • board_atmelavr_diecimilaatmega328 — ATMEGA328P, 16MHz, 30KB flash, 2KB RAM. note the 30KB, bestie, not 31.50KB — read the numbers, don't assume 👀
  • board_atmelavr_esplora — ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM. joystick + sensors + sliders, the whole arcade 🕹️
  • board_atmelavr_ethernet — ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM. it has a network port, she's online 24/7 🌐
  • board_atmelavr_fio — ATMEGA328P, 8MHz, 30KB flash, 2KB RAM. 30KB again, watch it — and 8MHz, so she's taking it slow 🐢
  • board_atmelavr_chiwawa — ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM. chihuahua energy: tiny, loud, unbothered 🐕
  • board_atmelavr_leonardo — ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM. the icon, the moment, the original 32u4 bestie 👑
  • board_atmelavr_leonardoeth — ATMEGA32U4 @ 16MHz, 28KB of flash, 2.50KB of RAM 💖
  • board_atmelavr_lilypadatmega168 — ATMEGA168 @ 8MHz, 14KB flash, 1KB RAM 🎀
  • board_atmelavr_lilypadatmega328 — ATMEGA328P @ 8MHz, 30KB flash, 2KB RAM 🌸
  • board_atmelavr_LilyPadUSB — ATMEGA32U4 @ 8MHz, 28KB flash, 2.50KB RAM 🦋
  • board_atmelavr_megaADK — ATMEGA2560 @ 16MHz, 248KB flash, 8KB RAM 👑
  • board_atmelavr_megaatmega1280 — ATMEGA1280 @ 16MHz, 124KB flash, 8KB RAM ✨
  • board_atmelavr_megaatmega2560 — ATMEGA2560 @ 16MHz, 248KB flash, 8KB RAM 🔥
  • board_atmelavr_micro — ATMEGA32U4 @ 16MHz, 28KB flash, 2.50KB RAM 💅
  • board_atmelavr_miniatmega168 — ATMEGA168 @ 16MHz, 14KB flash, 1KB RAM 🍓
  • board_atmelavr_miniatmega328 — ATMEGA328P @ 16MHz, 28KB flash, 2KB RAM 🌈
  • board_atmelavr_atmegangatmega168 — ATMEGA168 @ 16MHz, 14KB flash, 1KB RAM 💜
  • board_atmelavr_atmegangatmega8 — ATMEGA8 @ 16MHz, 7KB flash, 1KB RAM 🧚
  • board_atmelavr_nanoatmega168 — ATMEGA168 @ 16MHz, 14KB flash, 1KB RAM ⭐
  • board_atmelavr_nanoatmega328 — ATMEGA328P @ 16MHz, 30KB flash, 2KB RAM 🫶
  • board_atmelavr_nanoatmega328new — ATMEGA328P @ 16MHz, 30KB flash, 2KB RAM 💀
  • board_atmelavr_pro8MHzatmega168 — ATMEGA168 @ 8MHz, 14KB flash, 1KB RAM 🙈
  • board_atmelavr_pro16MHzatmega168 — ATMEGA168 @ 16MHz, 14KB flash, 1KB RAM 💖
  • board_atmelavr_pro8MHzatmega328 — ATMEGA328P @ 8MHz, 30KB flash, 2KB RAM 🎀
  • board_atmelavr_pro16MHzatmega328 — ATMEGA328P @ 16MHz, 30KB flash, 2KB RAM 🌸
  • board_atmelavr_robotControl — ATMEGA32U4 @ 16MHz, 28KB flash, 2.50KB RAM 🦋
  • board_atmelavr_robotMotor — ATMEGA32U4 @ 16MHz, 28KB flash, 2.50KB RAM ✨
  • board_atmelavr_uno — ATMEGA328P @ 16MHz, 31.50KB flash, 2KB RAM 👑
  • board_atmelavr_yun — ATMEGA32U4 @ 16MHz, 28KB flash, 2.50KB RAM 🔥
  • board_atmelavr_yunmini — ATMEGA32U4 @ 16MHz, 28KB flash, 2.50KB RAM 💅
  • board_atmelavr_zumbt328 — ATMEGA328P @ 16MHz, 28KB flash, 2KB RAM 🍓
  • board_atmelavr_raspduino — ATMEGA328P @ 16MHz, 30KB flash, 2KB RAM 🌈
  • board_atmelavr_controllino_maxi — ATMEGA2560 @ 16MHz, 248KB flash, 8KB RAM 💜
  • board_atmelavr_controllino_maxi_automation — ATMEGA2560 @ 16MHz, 248KB flash, 8KB RAM 🧚
  • board_atmelavr_controllino_mega — ATMEGA2560 @ 16MHz, 248KB flash, 8KB RAM ⭐
  • board_atmelavr_controllino_mini — ATMEGA328P @ 16MHz, 31.50KB flash, 2KB RAM 🫶
  • board_atmelavr_digispark-tiny — ATTINY85 @ 16MHz, 5.87KB flash, 512B RAM 😭 (the tiny legend fr fr, look at that little guy)
  • board_atmelavr_engduinov3 — ATMEGA32U4 @ 8MHz, 28KB flash, 2.50KB RAM 🌸

Okay bestie, more boards, same energy — this list is long and we're still going, so buckle up. 🎀 Every line here is board ID → chip → clock speed → flash → RAM. Read it like a little passport for each board. 💅


  • board_atmelavr_mayfly — ATMEGA1284P, 8MHz, 127KB flash, 16KB RAM. Big brain energy fr fr 🧠
  • board_atmelavr_fysetc_f6_13 — ATMEGA2560, 16MHz, 252KB flash, 8KB RAM. That's the chunkiest flash on this whole page, no cap 👑
  • board_atmelavr_attiny13 — ATTINY13, 1MHz, 1KB flash, 64B RAM. Tiny baby. Precious. Do not ask her to do much 😭
  • board_atmelavr_attiny13a — ATTINY13A, 1MHz, 1KB flash, 64B RAM. Same tiny vibe, new letter 💖
  • board_atmelavr_attiny2313 — ATTINY2313, 8MHz, 2KB flash, 128B RAM.
  • board_atmelavr_attiny24 — ATTINY24, 8MHz, 2KB flash, 128B RAM.
  • board_atmelavr_attiny25 — ATTINY25, 8MHz, 2KB flash, 128B RAM.
  • board_atmelavr_attiny4313 — ATTINY4313, 8MHz, 4KB flash, 256B RAM.
  • board_atmelavr_attiny44 — ATTINY44, 8MHz, 4KB flash, 256B RAM.
  • board_atmelavr_attiny45 — ATTINY45, 8MHz, 4KB flash, 256B RAM.
  • board_atmelavr_attiny84 — ATTINY84, 8MHz, 8KB flash, 512B RAM.
  • board_atmelavr_attiny85 — ATTINY85, 8MHz, 8KB flash, 512B RAM. The attiny girlies are thriving ✨
  • board_atmelavr_lightblue-bean — ATMEGA328P, 8MHz, 31.50KB flash, 2KB RAM.
  • board_atmelavr_lightblue-beanplus — ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM. The plus is the speed, bestie, keep up 🏃‍♀️
  • board_atmelavr_lightup — ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM.
  • board_atmelavr_one — ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM. Main character board, literally named "one" 💅
  • board_atmelavr_smart7688 — ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM.
  • board_atmelavr_lora32u4II — ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM.
  • board_atmelavr_mightyhat — ATMEGA328P, 16MHz, 31KB flash, 2KB RAM. Note the flash says 31KB here, not 31.50KB — do not round it in your head, the manpage said what it said 🙈
  • board_atmelavr_moteino — ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM.
  • board_atmelavr_moteino8mhz — ATMEGA328P, 8MHz, 31.50KB flash, 2KB RAM.
  • board_atmelavr_moteinomega — ATMEGA1284P, 16MHz, 127KB flash, 16KB RAM.
  • board_atmelavr_168pa16m — ATMEGA168P, 16MHz, 15.50KB flash, 1KB RAM.
  • board_atmelavr_168pa8m — ATMEGA168P, 8MHz, 15.50KB flash, 1KB RAM.
  • board_atmelavr_328p16m — ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM.
  • board_atmelavr_328p8m — ATMEGA328P, 8MHz, 31.50KB flash, 2KB RAM.
  • board_atmelavr_32u416m — ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM.
  • board_atmelavr_1284p16m — ATMEGA1284P, 16MHz, 127KB flash, 16KB RAM.
  • board_atmelavr_1284p8m — ATMEGA1284P, 8MHz, 127KB flash, 16KB RAM.
  • board_atmelavr_644pa16m — ATMEGA644P, 16MHz, 63KB flash, 4KB RAM.

And then the formatting switches up on us mid-list, because of course it does — same info, now in table clothes:

  • board_atmelavr_644pa8m — ATMEGA644P, 8MHz, 63KB flash, 4KB RAM.
  • board_atmelavr_emonpi — ATMEGA328P, 16MHz, 30KB flash, 2KB RAM.

And we're still going, bestie — the board list does not end here. 🦋

okay bestie, more boards just dropped and this lineup is stacked 💅✨

lowkey every microcontroller ever is in here and i'm obsessed 🦋

├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_prusa_mm_control            │ ATMEGA32U4    │ 16MHz     │ 28KB     │ 2.50KB │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_panStampAVR                 │ ATMEGA328P    │ 8MHz      │ 31.50KB  │ 2KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_a-star32U4                  │ ATMEGA32U4    │ 16MHz     │ 28KB     │ 2.50KB │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_prusa_rambo                 │ ATMEGA2560    │ 16MHz     │ 252KB    │ 8KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_quirkbot                    │ ATMEGA32U4    │ 8MHz      │ 28KB     │ 2.50KB │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_blend                       │ ATMEGA32U4    │ 16MHz     │ 28KB     │ 2.50KB │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_blendmicro16                │ ATMEGA32U4    │ 16MHz     │ 28KB     │ 2.50KB │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_blendmicro8                 │ ATMEGA32U4    │ 8MHz      │ 28KB     │ 2.50KB │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_reprap_rambo                │ ATMEGA2560    │ 16MHz     │ 252KB    │ 8KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sodaq_galora                │ ATMEGA1284P   │ 8MHz      │ 127KB    │ 16KB   │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sodaq_mbili                 │ ATMEGA1284P   │ 8MHz      │ 127KB    │ 16KB   │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sodaq_moja                  │ ATMEGA328P    │ 8MHz      │ 31.50KB  │ 2KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sodaq_ndogo                 │ ATMEGA1284P   │ 8MHz      │ 127KB    │ 16KB   │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sodaq_tatu                  │ ATMEGA1284P   │ 8MHz      │ 127KB    │ 16KB   │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sanguino_atmega1284p        │ ATMEGA1284P   │ 16MHz     │ 127KB    │ 16KB   │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sanguino_atmega1284_8m      │ ATMEGA1284P   │ 8MHz      │ 127KB    │ 16KB   │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sanguino_atmega644          │ ATMEGA644     │ 16MHz     │ 63KB     │ 4KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sanguino_atmega644_8m       │ ATMEGA644     │ 8MHz      │ 63KB     │ 4KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sanguino_atmega644p         │ ATMEGA644P    │ 16MHz     │ 63KB     │ 4KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sanguino_atmega644p_8m      │ ATMEGA644P    │ 8MHz      │ 63KB     │ 4KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_seeeduino                   │ ATMEGA328P    │ 16MHz     │ 31.50KB  │ 2KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sparkfun_satmega128rfa1     │ ATMEGA128RFA1 │ 16MHz     │ 16KB     │ 124KB  │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sparkfun_digitalsandbox     │ ATMEGA328P    │ 8MHz      │ 31.50KB  │ 2KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sparkfun_fiov3              │ ATMEGA32U4    │ 8MHz      │ 28KB     │ 2.50KB │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sparkfun_makeymakey         │ ATMEGA32U4    │ 16MHz     │ 28KB     │ 2.50KB │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sparkfun_megapro8MHz        │ ATMEGA2560    │ 8MHz      │ 252KB    │ 8KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sparkfun_megapro16MHz       │ ATMEGA2560    │ 16MHz     │ 248KB    │ 8KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sparkfun_megamini           │ ATMEGA2560    │ 8MHz      │ 252KB    │ 8KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_uview                       │ ATMEGA328P    │ 16MHz     │ 31.50KB  │ 2KB    │
├────────────────────────────────────────────┼───────────────┼───────────┼──────────┼────────┤
│ board_atmelavr_sparkfun_promicro8          │ ATMEGA32U4    │ 8MHz      │ 28KB     │ 2.50KB │

the way this list just keeps going… iconic. periodt 💖 and there's literally more coming, so stay cozy 🫶

  • board_atmelavr_sparkfun_promicro16 — ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB. bestie this is the Pro Micro you keep seeing in every keyboard build ever 💅
  • board_atmelavr_sparkfun_qduinomini — ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB. same chip as above but running half-speed, lowkey chill vibes 🦋
  • board_atmelavr_sparkfun_redboard — ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB. the classic Uno energy, iconic fr 🎀
  • board_atmelavr_sparkfun_serial7seg — ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB
  • board_atmelavr_sleepypi — ATMEGA328P, 8MHz, flash 30KB, RAM 2KB. it's giving sleepy girl but the numbers are real 💤
  • board_atmelavr_whispernode — ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB
  • board_atmelavr_the_things_uno — ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB
  • board_atmelavr_tinyduino — ATMEGA328P, 8MHz, flash 30KB, RAM 2KB
  • board_atmelavr_tinylily — ATMEGA328P, 8MHz, flash 30KB, RAM 2KB
  • board_atmelavr_usbasp — ATMEGA8, 12MHz, flash 8KB, RAM 1KB. the OG programmer board, she's been through things 😭
  • board_atmelavr_wildfirev2 — ATMEGA1284P, 16MHz, flash 120.00KB, RAM 16KB. 16KB of RAM?? main character energy fr fr 🔥
  • board_atmelavr_wildfirev3 — ATMEGA1284P, 16MHz, flash 127KB, RAM 16KB
  • board_atmelavr_ftduino — ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB
  • board_atmelavr_bob3 — ATMEGA88, 8MHz, flash 8KB, RAM 1KB
  • board_atmelavr_nibo2 — ATMEGA128, 16MHz, flash 128KB, RAM 4KB
  • board_atmelavr_niboburger — ATMEGA16, 15MHz, flash 16KB, RAM 1KB. not the 15MHz, she's quirky like that 🍓
  • board_atmelavr_niboburger_1284 — ATMEGA1284P, 20MHz, flash 128KB, RAM 16KB
  • board_atmelavr_nibobee — ATMEGA16, 15MHz, flash 16KB, RAM 1KB
  • board_atmelavr_nibobee_1284 — ATMEGA1284P, 20MHz, flash 128KB, RAM 16KB
  • board_atmelavr_ardhat — ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB. it's a hat, it's an ardhat, it ate 🧚
└────────────────────────────────────────────┴───────────────┴───────────┴──────────┴────────┘

and that's a wrap on that table bestie, we're free 💅✨

✨ Stable and upstream versions ✨

okay so here's the tea 🫖 — if you wanna flip between the stable releases of the Atmel AVR development platform and the latest upstream version, it's literally one option doing all the work: projectconf_env_platform in projectconf, and it goes a lil something like this ⬇️

🌸 Stable 🌸

; Latest stable version
[env:latest_stable]
platform = atmelavr
board = ...

; Custom stable version
[env:custom_stable]
platform = atmelavr@x.y.z
board = ...

🦋 Upstream 🦋

[env:upstream_develop]
platform = https://github.com/platformio/platform-atmelavr.git
board = ...

📦 Packages 📦

here's every package this platform can pull in, no cap 🧚✨

┌───────────────────────────────────┬────────────────────────────┐
│ Name                              │ Description                │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr             │ Arduino Wiring-based       │
│                                   │ Framework (AVR Core)       │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-attiny      │ Arduino Wiring-based       │
│                                   │ Framework (ATTiny Core)    │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-bean        │ Arduino Wiring-based       │
│                                   │ Framework (Bean Core)      │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-core13      │ Arduino Wiring-based       │
│                                   │ Framework (Core13)         │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-digistump   │ Arduino Wiring-based       │
│                                   │ Framework (Digistump Core) │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-dwenguino   │ Arduino Wiring-based       │
│                                   │ Framework (Dwenguino Core) │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-majorcore   │ Arduino Wiring-based       │
│                                   │ Framework (Major Core)     │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-megacore    │ Arduino Wiring-based       │
│                                   │ Framework (MegaCore)       │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-mightycore  │ Arduino Wiring-based       │
│                                   │ Framework (MightyCore)     │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-minicore    │ Arduino Wiring-based       │
│                                   │ Framework (MiniCore)       │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-nicai       │ Arduino Wiring-based       │
│                                   │ Framework (Nicai Core)     │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-panstamp    │ Arduino Wiring-based       │
│                                   │ Framework (Panstamp Core)  │
├───────────────────────────────────┼────────────────────────────┤
│ framework-arduino-avr-prusa_rambo │ Arduino Wiring-based       │
│                                   │ Framework (Prusa Rambo     │
│                                   │ Core)                      │
├───────────────────────────────────┼────────────────────────────┤
│ framework-simba                   │ Simba Framework            │
├───────────────────────────────────┼────────────────────────────┤
│ tool-avrdude                      │ AVRDUDE                    │
├───────────────────────────────────┼────────────────────────────┤
│ tool-micronucleus                 │ Micronucleus               │
├───────────────────────────────────┼────────────────────────────┤
│ tool-simavr                       │ simavr is a lean, mean and │
│                                   │ hackable AVR simulator     │
├───────────────────────────────────┼────────────────────────────┤
│ toolchain-atmelavr                │ avr-gcc                    │
└───────────────────────────────────┴────────────────────────────┘
⚠️ WARNING ⚠️ Linux Users: - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Please check that you have a correctly installed USB driver from board manufacturer

🧩 Frameworks 🧩

the frameworks this platform plays nice with, periodt 💖

┌───────────────────┬────────────────────────────┐
│ Name              │ Description                │
├───────────────────┼────────────────────────────┤
│ framework_arduino │ Arduino Wiring-based       │
│                   │ Framework allows writing   │
│                   │ cross-platform software to │
│                   │ control devices attached   │
│                   │ to a wide range of Arduino │
│                   │ boards to create all kinds │
│                   │ of creative coding,        │
│                   │ interactive objects,       │
│                   │ spaces or physical         │
│                   │ experiences.               │
├───────────────────┼────────────────────────────┤
│ framework_simba   │ Simba is an RTOS and build │
│                   │ framework. It aims to make │
│                   │ embedded programming easy  │
│                   │ and portable.              │
└───────────────────┴────────────────────────────┘

👑 Boards 👑

📝 NOTE - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

💖 Adafruit 💖

┌────────────────────────────────────┬──────────┬────────────┬───────────┬─────────┬────────┐
│ Name                               │ Debug    │ MCU        │ Frequency │ Flash   │ RAM    │
├────────────────────────────────────┼──────────┼────────────┼───────────┼─────────┼────────┤
│ board_atmelavr_bluefruitmicro      │ On-board │ ATMEGA32U4 │ 8MHz      │ 28KB    │ 2.50KB │
├────────────────────────────────────┼──────────┼────────────┼───────────┼─────────┼────────┤
│ board_atmelavr_circuitplay_classic │ On-board │ ATMEGA32U4 │ 8MHz      │ 28KB    │ 2.50KB │
├────────────────────────────────────┼──────────┼────────────┼───────────┼─────────┼────────┤
│ board_atmelavr_feather328p         │ On-board │ ATMEGA328P │ 8MHz      │ 31.50KB │ 2KB    │

and the board list continues, bestie 💖 these next ones are all On-board debug, so you don't need any extra hardware, slay ✨

the columns are Name, Debug, MCU, Frequency, Flash, RAM — got it? good 💅

  • board_atmelavr_feather32u4 — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 8MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_flora8 — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 8MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_gemma — Debug: On-board · MCU: ATTINY85 · Frequency: 8MHz · Flash: 8KB · RAM: 512B
  • board_atmelavr_itsybitsy32u4_3V — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 8MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_itsybitsy32u4_5V — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_metro — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_protrinket3ftdi — Debug: On-board · MCU: ATMEGA328P · Frequency: 12MHz · Flash: 28KB · RAM: 2KB
  • board_atmelavr_protrinket3 — Debug: On-board · MCU: ATMEGA328P · Frequency: 12MHz · Flash: 28KB · RAM: 2KB
  • board_atmelavr_protrinket5ftdi — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 28KB · RAM: 2KB
  • board_atmelavr_protrinket5 — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 28KB · RAM: 2KB
  • board_atmelavr_trinket3 — Debug: On-board · MCU: ATTINY85 · Frequency: 8MHz · Flash: 8KB · RAM: 512B
  • board_atmelavr_trinket5 — Debug: On-board · MCU: ATTINY85 · Frequency: 16MHz · Flash: 8KB · RAM: 512B

Alorium Technology

omg these Alorium ones are so extra, but we love them ✨ same columns: Name, Debug, MCU, Frequency, Flash, RAM

  • board_atmelavr_alorium_hinj — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_alorium_sno — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_alorium_xlr8 — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB

Anarduino

just one board here, but it's iconic 🦋 same columns: Name, Debug, MCU, Frequency, Flash, RAM

  • board_atmelavr_miniwireless — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB

Arduboy

these are for gaming, bestie, no cap 🎮 same columns: Name, Debug, MCU, Frequency, Flash, RAM

  • board_atmelavr_arduboy — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_arduboy_devkit — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB

Arduino

and finally Arduino, the main character energy 👑 same columns: Name, Debug, MCU, Frequency, Flash, RAM

  • board_atmelavr_btatmega168 — Debug: On-board · MCU: ATMEGA168 · Frequency: 16MHz · Flash: 14KB · RAM: 1KB
  • board_atmelavr_btatmega328 — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 28KB · RAM: 2KB
  • board_atmelavr_diecimilaatmega168 — Debug: On-board · MCU: ATMEGA168 · Frequency: 16MHz · Flash: 14KB · RAM: 1KB
  • board_atmelavr_diecimilaatmega328 — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 30KB · RAM: 2KB
  • board_atmelavr_esplora — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_ethernet — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_fio — on-board, chip is ATMEGA328P, running at 8MHz, with 30KB of flash and 2KB of RAM 💖
  • board_atmelavr_chiwawa — on-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM ✨
  • board_atmelavr_leonardo — on-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM 🎀
  • board_atmelavr_leonardoeth — on-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM 🦋
  • board_atmelavr_lilypadatmega168 — on-board, ATMEGA168, 8MHz, 14KB flash, 1KB RAM 🌸
  • board_atmelavr_lilypadatmega328 — on-board, ATMEGA328P, 8MHz, 30KB flash, 2KB RAM 💅
  • board_atmelavr_LilyPadUSB — on-board, ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM 🫶
  • board_atmelavr_megaADK — on-board, ATMEGA2560, 16MHz, 248KB flash, 8KB RAM 😭
  • board_atmelavr_megaatmega1280 — on-board, ATMEGA1280, 16MHz, 124KB flash, 8KB RAM 🔥
  • board_atmelavr_megaatmega2560 — on-board, ATMEGA2560, 16MHz, 248KB flash, 8KB RAM 👑
  • board_atmelavr_micro — on-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM 🌈
  • board_atmelavr_miniatmega168 — on-board, ATMEGA168, 16MHz, 14KB flash, 1KB RAM ⭐
  • board_atmelavr_miniatmega328 — on-board, ATMEGA328P, 16MHz, 28KB flash, 2KB RAM 💀
  • board_atmelavr_atmegangatmega168 — on-board, ATMEGA168, 16MHz, 14KB flash, 1KB RAM 🙈
  • board_atmelavr_atmegangatmega8 — on-board, ATMEGA8, 16MHz, 7KB flash, 1KB RAM 🍓
  • board_atmelavr_nanoatmega168 — on-board, ATMEGA168, 16MHz, 14KB flash, 1KB RAM 🧚
  • board_atmelavr_nanoatmega328 — on-board, ATMEGA328P, 16MHz, 30KB flash, 2KB RAM 💜
  • board_atmelavr_nanoatmega328new — on-board, ATMEGA328P, 16MHz, 30KB flash, 2KB RAM 💖
  • board_atmelavr_pro8MHzatmega168 — on-board, ATMEGA168, 8MHz, 14KB flash, 1KB RAM ✨
  • board_atmelavr_pro16MHzatmega168 — on-board, ATMEGA168, 16MHz, 14KB flash, 1KB RAM 🎀
  • board_atmelavr_pro8MHzatmega328 — on-board, ATMEGA328P, 8MHz, 30KB flash, 2KB RAM 🦋
  • board_atmelavr_pro16MHzatmega328 — on-board, ATMEGA328P, 16MHz, 30KB flash, 2KB RAM 🌸
  • board_atmelavr_robotControl — on-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM 💅
  • board_atmelavr_robotMotor — on-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM 🫶
  • board_atmelavr_uno — on-board, ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM 😭
  • board_atmelavr_yun — on-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM 🔥
  • board_atmelavr_yunmini — on-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM 👑

Atmel 💖

okay so real quick, before the list gets going: every single row in these tables has the same six things, in the same order, every time — Name, Debug, MCU, Frequency, Flash, and RAM. That's the whole vibe. Let's go 🦋

  • board_atmelavr_attiny13 — debug: On-board · MCU: ATTINY13 · frequency: 1MHz · flash: 1KB · RAM: 64B
  • board_atmelavr_attiny13a — debug: On-board · MCU: ATTINY13A · frequency: 1MHz · flash: 1KB · RAM: 64B
  • board_atmelavr_attiny1634 — debug: No · MCU: ATTINY1634 · frequency: 8MHz · flash: 16KB · RAM: 1KB
  • board_atmelavr_attiny167 — debug: No · MCU: ATTINY167 · frequency: 8MHz · flash: 16KB · RAM: 512B
  • board_atmelavr_attiny2313 — debug: On-board · MCU: ATTINY2313 · frequency: 8MHz · flash: 2KB · RAM: 128B
  • board_atmelavr_attiny24 — debug: On-board · MCU: ATTINY24 · frequency: 8MHz · flash: 2KB · RAM: 128B
  • board_atmelavr_attiny25 — debug: On-board · MCU: ATTINY25 · frequency: 8MHz · flash: 2KB · RAM: 128B
  • board_atmelavr_attiny261 — debug: No · MCU: ATTINY261 · frequency: 8MHz · flash: 2KB · RAM: 128B
  • board_atmelavr_attiny4313 — debug: On-board · MCU: ATTINY4313 · frequency: 8MHz · flash: 4KB · RAM: 256B
  • board_atmelavr_attiny43 — debug: No · MCU: ATTINY43U · frequency: 8MHz · flash: 4KB · RAM: 256B
  • board_atmelavr_attiny44 — debug: On-board · MCU: ATTINY44 · frequency: 8MHz · flash: 4KB · RAM: 256B
  • board_atmelavr_attiny441 — debug: No · MCU: ATTINY441 · frequency: 8MHz · flash: 4KB · RAM: 256B
  • board_atmelavr_attiny45 — debug: On-board · MCU: ATTINY45 · frequency: 8MHz · flash: 4KB · RAM: 256B
  • board_atmelavr_attiny461 — debug: No · MCU: ATTINY461 · frequency: 8MHz · flash: 4KB · RAM: 256B
  • board_atmelavr_attiny48 — debug: No · MCU: ATTINY48 · frequency: 8MHz · flash: 4KB · RAM: 256B
  • board_atmelavr_attiny828 — debug: No · MCU: ATTINY828 · frequency: 8MHz · flash: 8KB · RAM: 512B
  • board_atmelavr_attiny84 — debug: On-board · MCU: ATTINY84 · frequency: 8MHz · flash: 8KB · RAM: 512B
  • board_atmelavr_attiny841 — debug: No · MCU: ATTINY841 · frequency: 8MHz · flash: 8KB · RAM: 512B
  • board_atmelavr_attiny85 — debug: On-board · MCU: ATTINY85 · frequency: 8MHz · flash: 8KB · RAM: 512B
  • board_atmelavr_attiny861 — debug: No · MCU: ATTINY861 · frequency: 8MHz · flash: 8KB · RAM: 512B
  • board_atmelavr_attiny87 — debug: No · MCU: ATTINY87 · frequency: 8MHz · flash: 8KB · RAM: 512B
  • board_atmelavr_attiny88 — debug: No · MCU: ATTINY88 · frequency: 8MHz · flash: 8KB · RAM: 512B
  • board_atmelavr_usbasp — debug: On-board · MCU: ATMEGA8 · frequency: 12MHz · flash: 8KB · RAM: 1KB

like, that is a lot of tiny chips and I am obsessed with every single one of them 🎀


BQ 🌸

  • board_atmelavr_zumbt328 — debug: On-board · MCU: ATMEGA328P · frequency: 16MHz · flash: 28KB · RAM: 2KB

one board, one icon, no notes 💅


BSFrance ✨

  • board_atmelavr_lora32u4II — debug: On-board · MCU: ATMEGA32U4 · frequency: 8MHz · flash: 28KB · RAM: 2.50KB

not the 2.50KB RAM, it's giving precision 💀


BitWizard 🧚

  • board_atmelavr_raspduino — debug: On-board · MCU: ATMEGA328P · frequency: 16MHz · flash: 30KB · RAM: 2KB

the way 30KB of flash just shows up out of nowhere… ate 💖


Controllino 👑

and here's where the next one starts, bestie — same six-column situation, Name, Debug, MCU, Frequency, Flash, RAM, and the rows are coming in hot right after this 💜

Slay, the Controllino fam is almost done — here's the last of them 💅

├────────────────────────────────────────────┼──────────┼────────────┼───────────┼─────────┼─────┤
│ board_atmelavr_controllino_maxi            │ On-board │ ATMEGA2560 │ 16MHz     │ 248KB   │ 8KB │
├────────────────────────────────────────────┼──────────┼────────────┼───────────┼─────────┼─────┤
│ board_atmelavr_controllino_maxi_automation │ On-board │ ATMEGA2560 │ 16MHz     │ 248KB   │ 8KB │
├────────────────────────────────────────────┼──────────┼────────────┼───────────┼─────────┼─────┤
│ board_atmelavr_controllino_mega            │ On-board │ ATMEGA2560 │ 16MHz     │ 248KB   │ 8KB │
├────────────────────────────────────────────┼──────────┼────────────┼───────────┼─────────┼─────┤
│ board_atmelavr_controllino_mini            │ On-board │ ATMEGA328P │ 16MHz     │ 31.50KB │ 2KB │
└────────────────────────────────────────────┴──────────┴────────────┴───────────┴─────────┴─────┘

okay so notice how board_atmelavr_controllino_mini is the baby of the group — ATMEGA328P, 16MHz, but only 31.50KB of flash and 2KB of RAM, while all three of the MAXI/MEGA girlies are out here with ATMEGA2560, 248KB flash and 8KB RAM, all of them rocking On-board debug. no cap 💖


Digistump ✨

ngl this section is giving "small but mighty" — every single one of these is Debug: No, so no on-board debugging for you bestie, sorry 🫶
──────────────────────────────────────────────────────────────────────────────────────
  Name                             Debug      MCU         Frequency   Flash     RAM
──────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_digispark-pro     No         ATTINY167   16MHz       14.50KB   512B
──────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_digispark-pro64   No         ATTINY167   16MHz       14.50KB   512B
──────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_digispark-pro32   No         ATTINY167   16MHz       14.50KB   512B
──────────────────────────────────────────────────────────────────────────────────────
  board_atmelavr_digispark-tiny    On-board   ATTINY85    16MHz       5.87KB    512B

wait wait wait — plot twist 💀 board_atmelavr_digispark-tiny is the only one here with On-board debug. and it's the tiny one! ATTINY85, 16MHz, 5.87KB flash, 512B RAM. the way the smallest one came through with the feature, iconic honestly 👑

meanwhile board_atmelavr_digispark-pro, board_atmelavr_digispark-pro64 and board_atmelavr_digispark-pro32 are all triplets fr fr — same ATTINY167, same 16MHz, same 14.50KB flash, same 512B RAM, same No debug. like okay copy-paste queens 💅


Dwengo, Elektor, Engduino, EnviroDIY, FYSETC 🌈

okay bestie buckle up because this part of the table is NESTED and it's giving fractal energy 😭 the borders literally have borders. it's giving main character energy in the worst possible way but we love her anyway 🎀

Dwengo 🦋

┌────────────────────────────────┬──────────┬───────────┬───────────┬─────────┬──────┐
│                                │          │           │           │         │      │
│  Dwengo                        │          │           │           │         │      │
│    ┌──────────────────────────┬┼──────┬───┼────────┬──┼────────┬──┼────┬────┼┐     │
│    │ Name                     ││Debug │ MCU        │ Frequency │ Flash │ RAM││     │
│    ├──────────────────────────┼┼──────┼───┼────────┼──┼────────┼──┼────┼────┼┤     │
│    │ board_atmelavr_dwenguino ││No    │ AT90USB646 │ 16MHz     │ 60KB  │ 2KB││     │
│    └──────────────────────────┴┼──────┴───┼────────┴──┼────────┴──┼────┴────┼┘     │
│                                │          │           │           │         │      │

so Dwengo has exactly one board, board_atmelavr_dwenguino, and she's lowkey a beefy one — AT90USB646 MCU, 16MHz, 60KB flash, 2KB RAM. debug? No. rip 💀

Elektor ⚡

│  Elektor                       │          │           │           │         │      │
│┌───────────────────────────────┼───────┬──┼──────────┬┼──────────┬┼────────┬┼────┐ │
││ Name                          │ Debug │ MCU         ││Frequency ││Flash   ││RAM │ │
│├───────────────────────────────┼───────┼──┼──────────┼┼──────────┼┼────────┼┼────┤ │
││ board_atmelavr_elektor_uno_r4 │ No    │ ATMEGA328PB ││16MHz     ││31.50KB ││2KB │ │
│└───────────────────────────────┼───────┴──┼──────────┴┼──────────┴┼────────┴┼────┘ │
│                                │          │           │           │         │      │

one board, one vibe: board_atmelavr_elektor_uno_r4 with ATMEGA328PB, 16MHz, 31.50KB flash, 2KB RAM, and No debug. short king energy but make it a microcontroller 👑✨

Engduino 🧚

│  Engduino                      │          │           │           │         │      │
│ ┌───────────────────────────┬──┼───────┬──┼─────────┬─┼─────────┬─┼─────┬───┼────┐ │
│ │ Name                      │ Debug    │ MCU        │ Frequency │ Flash │ RAM    │ │
│ ├───────────────────────────┼──┼───────┼──┼─────────┼─┼─────────┼─┼─────┼───┼────┤ │
│ │ board_atmelavr_engduinov3 │ On-board │ ATMEGA32U4 │ 8MHz      │ 28KB  │ 2.50KB │ │
│ └───────────────────────────┴──┼───────┴──┼─────────┴─┼─────────┴─┼─────┴───┼────┘ │
│                                │          │           │           │         │      │

okay board_atmelavr_engduinov3 — On-board debug yes bestie 💖 — ATMEGA32U4, running at 8MHz (slower than the rest of the girls, and that's fine, we don't judge), 28KB flash, 2.50KB RAM. she's doing her best and we're obsessed 🌸

EnviroDIY 🌱

│  EnviroDIY                     │          │           │           │         │      │
│   ┌───────────────────────┬────┼─────┬────┼────────┬──┼────────┬──┼────┬────┼─┐    │
│   │ Name                  │ Debug    │ MCU│        │ Frequency │ Flash │ RAM│ │    │
│   ├───────────────────────┼────┼─────┼────┼────────┼──┼────────┼──┼────┼────┼─┤    │
│   │ board_atmelavr_mayfly │ On-board │ ATMEGA1284P │ 8MHz      │ 127KB │ 16KB │    │
│   └───────────────────────┴────┼─────┴────┼────────┴──┼────────┴──┼────┴────┼─┘    │
│                                │          │           │           │         │      │

board_atmelavr_mayfly is serving On-board debug AND ATMEGA1284P with 8MHz, 127KB flash, 16KB RAM. 16KB of RAM?? that's a whole mansion in microcontroller terms, periodt 💅🔥

FYSETC ⭐

│  FYSETC                        │          │           │           │         │      │
│ ┌─────────────────────────────┬┼─────────┬┼───────────┼───────────┼───────┬─┼───┐  │
│ │ Name                        ││Debug    ││MCU        │ Frequency │ Flash │ RAM │  │
│ ├─────────────────────────────┼┼─────────┼┼───────────┼───────────┼───────┼─┼───┤  │
│ │ board_atmelavr_fysetc_f6_13 ││On-board ││ATMEGA2560 │ 16MHz     │ 252KB │ 8KB │  │

and we're landing on board_atmelavr_fysetc_f6_13 — On-board debug, ATMEGA2560, 16MHz, 252KB flash, 8KB RAM. she's a whole unit, and the table's still going, so don't go anywhere bestie 🙈

🌈 LightUp

One board, one vibe, she's little and she's perfect:

  • board_atmelavr_lightup — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 8MHz · Flash: 28KB · RAM: 2.50KB

🦋 Linino

Also just the one, and she's running the same chip at double the clock, okay slay:

  • board_atmelavr_one — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB

💅 LowPowerLab

Four boards, low power, high drama. The 8mhz one is literally just the moteino on a chill setting:

  • board_atmelavr_mightyhat — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31KB · RAM: 2KB
  • board_atmelavr_moteino — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_moteino8mhz — Debug: On-board · MCU: ATMEGA328P · Frequency: 8MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_moteinomega — Debug: On-board · MCU: ATMEGA1284P · Frequency: 16MHz · Flash: 127KB · RAM: 16KB

🎀 MediaTek Labs

One entry, and she's giving exactly what board_atmelavr_lightup was giving but with a different name, no cap:

  • board_atmelavr_smart7688 — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 8MHz · Flash: 28KB · RAM: 2.50KB

👑 Microchip

Okay bestie, this is the big one — the whole Microchip lineup, alphabetical-ish, and yes we're going through every single one. Note the AT90CAN* girlies are the only ones up top saying No to on-board debug, iykyk:

  • board_atmelavr_AT90CAN128 — Debug: No · MCU: AT90CAN128 · Frequency: 16MHz · Flash: 127KB · RAM: 4KB
  • board_atmelavr_AT90CAN32 — Debug: No · MCU: AT90CAN32 · Frequency: 16MHz · Flash: 31KB · RAM: 2KB
  • board_atmelavr_AT90CAN64 — Debug: No · MCU: AT90CAN64 · Frequency: 16MHz · Flash: 63KB · RAM: 4KB
  • board_atmelavr_ATmega128 — Debug: On-board · MCU: ATMEGA128 · Frequency: 16MHz · Flash: 127KB · RAM: 4KB
  • board_atmelavr_ATmega1280 — Debug: On-board · MCU: ATMEGA1280 · Frequency: 16MHz · Flash: 127KB · RAM: 8KB
  • board_atmelavr_ATmega1281 — Debug: On-board · MCU: ATMEGA1281 · Frequency: 16MHz · Flash: 127KB · RAM: 8KB
  • board_atmelavr_ATmega1284 — Debug: On-board · MCU: ATMEGA1284 · Frequency: 16MHz · Flash: 127KB · RAM: 16KB
  • board_atmelavr_ATmega1284P — Debug: On-board · MCU: ATMEGA1284P · Frequency: 16MHz · Flash: 127KB · RAM: 16KB
  • board_atmelavr_ATmega16 — Debug: On-board · MCU: ATMEGA16 · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
  • board_atmelavr_ATmega162 — Debug: No · MCU: ATMEGA162 · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
  • board_atmelavr_ATmega164A — Debug: No · MCU: ATMEGA164A · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
  • board_atmelavr_ATmega164P — Debug: On-board · MCU: ATMEGA164P · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
  • board_atmelavr_ATmega168 — Debug: On-board · MCU: ATMEGA168 · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
  • board_atmelavr_ATmega168P — Debug: On-board · MCU: ATMEGA168P · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
Notice the pattern? Every single one of these is 16MHz, and the AT90CAN* trio plus ATmega162 and ATmega164A are the only ones in this Microchip block rocking No for debug. The rest are all On-board. 🌸

And bestie, we are so not done — this Microchip table literally gets cut off mid-border right after board_atmelavr_ATmega168P, so keep scrolling, the list continues 💖

  • board_atmelavr_ATmega168PB — Debug: No · MCU: ATMEGA168PB · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
  • board_atmelavr_ATmega2560 — Debug: On-board · MCU: ATMEGA2560 · Frequency: 16MHz · Flash: 255KB · RAM: 8KB (the big one, the absolute unit 💪)
  • board_atmelavr_ATmega2561 — Debug: No · MCU: ATMEGA2561 · Frequency: 16MHz · Flash: 255KB · RAM: 8KB
  • board_atmelavr_ATmega32 — Debug: No · MCU: ATMEGA32 · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_ATmega324A — Debug: On-board · MCU: ATMEGA324A · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_ATmega324P — Debug: On-board · MCU: ATMEGA324P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_ATmega324PA — Debug: On-board · MCU: ATMEGA324PA · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_ATmega324PB — Debug: No · MCU: ATMEGA324PB · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_ATmega328 — Debug: On-board · MCU: ATMEGA328 · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_ATmega328P — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB (the blueprint, the moment, the blueprint moment ✨)
  • board_atmelavr_ATmega328PB — Debug: No · MCU: ATMEGA328PB · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_ATmega48 — Debug: On-board · MCU: ATMEGA48 · Frequency: 16MHz · Flash: 4KB · RAM: 512B
  • board_atmelavr_ATmega48PB — Debug: No · MCU: ATMEGA48PB · Frequency: 16MHz · Flash: 4KB · RAM: 512B
  • board_atmelavr_ATmega64 — Debug: No · MCU: ATMEGA64 · Frequency: 16MHz · Flash: 63KB · RAM: 4KB
  • board_atmelavr_ATmega640 — Debug: No · MCU: ATMEGA640 · Frequency: 16MHz · Flash: 63KB · RAM: 8KB
  • board_atmelavr_ATmega644A — Debug: No · MCU: ATMEGA644A · Frequency: 16MHz · Flash: 63KB · RAM: 4KB
  • board_atmelavr_ATmega644P — Debug: On-board · MCU: ATMEGA644P · Frequency: 16MHz · Flash: 63KB · RAM: 4KB
  • board_atmelavr_ATmega8 — Debug: On-board · MCU: ATMEGA8 · Frequency: 16MHz · Flash: 7.50KB · RAM: 1KB
  • board_atmelavr_ATmega8515 — Debug: No · MCU: ATMEGA8515 · Frequency: 16MHz · Flash: 7.50KB · RAM: 512B
  • board_atmelavr_ATmega8535 — Debug: No · MCU: ATMEGA8535 · Frequency: 16MHz · Flash: 7.50KB · RAM: 512B
  • board_atmelavr_ATmega88 — Debug: On-board · MCU: ATMEGA88 · Frequency: 16MHz · Flash: 7.50KB · RAM: 1KB
  • board_atmelavr_ATmega88P — Debug: On-board · MCU: ATMEGA88P · Frequency: 16MHz · Flash: 7.50KB · RAM: 1KB
  • board_atmelavr_ATmega88PB — Debug: No · MCU: ATMEGA88PB · Frequency: 16MHz · Flash: 7.50KB · RAM: 1KB
  • board_atmelavr_ATmega48P — Debug: On-board · MCU: ATMEGA48P · Frequency: 16MHz · Flash: 4KB · RAM: 512B
  • board_atmelavr_at90pwm216 — Debug: No · MCU: AT90PWM216 · Frequency: 16MHz · Flash: 16KB · RAM: 1KB
  • board_atmelavr_at90pwm316 — Debug: No · MCU: AT90PWM316 · Frequency: 16MHz · Flash: 16KB · RAM: 1KB

🦋 Microduino 🦋

okay bestie we're entering a whole new little zone — say hi to the Microduino fam. Same column energy: Name, Debug, MCU, Frequency, Flash, RAM. 💖

  • board_atmelavr_168pa16m — Debug: On-board · MCU: ATMEGA168P · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
  • board_atmelavr_168pa8m — Debug: On-board · MCU: ATMEGA168P · Frequency: 8MHz · Flash: 15.50KB · RAM: 1KB (same chip, chiller clock, we love a slow queen 👑)
  • board_atmelavr_328p16m — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_328p8m — Debug: On-board · MCU: ATMEGA328P · Frequency: 8MHz · Flash: 31.50KB · RAM: 2KB

…and the rest of the Atmel AVR lineup finishes out like this, bestie:

  • board_atmelavr_32u416m — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_1284p16m — Debug: On-board · MCU: ATMEGA1284P · Frequency: 16MHz · Flash: 127KB · RAM: 16KB
  • board_atmelavr_1284p8m — Debug: On-board · MCU: ATMEGA1284P · Frequency: 8MHz · Flash: 127KB · RAM: 16KB
  • board_atmelavr_644pa16m — Debug: On-board · MCU: ATMEGA644P · Frequency: 16MHz · Flash: 63KB · RAM: 4KB
  • board_atmelavr_644pa8m — Debug: On-board · MCU: ATMEGA644P · Frequency: 8MHz · Flash: 63KB · RAM: 4KB

🌸 OpenEnergyMonitor

  • board_atmelavr_emonpi — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 30KB · RAM: 2KB

🦋 PanStamp

  • board_atmelavr_panStampAVR — Debug: On-board · MCU: ATMEGA328P · Frequency: 8MHz · Flash: 31.50KB · RAM: 2KB

🎀 Pinoccio

  • board_atmelavr_pinoccio — Debug: No · MCU: ATMEGA256RFR2 · Frequency: 16MHz · Flash: 248KB · RAM: 32KB
not me noticing this is the only one in the whole batch that says No for debug 💀 like okay icon, doing your own thing

👑 Pololu Corporation

  • board_atmelavr_a-star32U4 — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB

🍓 Prusa 3D

  • board_atmelavr_prusa_mm_control — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_prusa_rambo — Debug: On-board · MCU: ATMEGA2560 · Frequency: 16MHz · Flash: 252KB · RAM: 8KB

🧚 Punch Through

  • board_atmelavr_lightblue-bean — Debug: On-board · MCU: ATMEGA328P · Frequency: 8MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_lightblue-beanplus — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB

lowkey the Bean and the Bean+ are giving matching-bestie energy 🫶 same flash, same RAM, same MCU, only the clock speed said "I'm the upgraded one". periodt.

🦋 Quirkbot 🦋

okay bestie, first up in this batch is Quirkbot — exactly one board, but she's cute so it's fine:

  • board_atmelavr_quirkbot — Debug: On-board, MCU: ATMEGA32U4, Frequency: 8MHz, Flash: 28KB, RAM: 2.50KB

🎀 RedBearLab 🎀

then RedBearLab pulls up with three boards, all riding the same ATMEGA32U4, all matching on flash and RAM, and the only drama is clock speed:

  • board_atmelavr_blend — Debug: On-board, MCU: ATMEGA32U4, Frequency: 16MHz, Flash: 28KB, RAM: 2.50KB
  • board_atmelavr_blendmicro16 — Debug: On-board, MCU: ATMEGA32U4, Frequency: 16MHz, Flash: 28KB, RAM: 2.50KB
  • board_atmelavr_blendmicro8 — Debug: On-board, MCU: ATMEGA32U4, Frequency: 8MHz, Flash: 28KB, RAM: 2.50KB

like yes, the blendmicro8 is the chill one at 8MHz while her sisters are sprinting at 16MHz, and we respect all three 💅


🔧 RepRap 🔧

RepRap shows up with a single board and she is not subtle about it — look at that flash, bestie:

  • board_atmelavr_reprap_rambo — Debug: On-board, MCU: ATMEGA2560, Frequency: 16MHz, Flash: 252KB, RAM: 8KB

252KB of flash?? okay ATMEGA2560, we see you, main character energy fr fr 👑


🌸 SODAQ 🌸

then SODAQ rolls in with a whole little squad of five:

  • board_atmelavr_sodaq_galora — Debug: On-board, MCU: ATMEGA1284P, Frequency: 8MHz, Flash: 127KB, RAM: 16KB
  • board_atmelavr_sodaq_mbili — Debug: On-board, MCU: ATMEGA1284P, Frequency: 8MHz, Flash: 127KB, RAM: 16KB
  • board_atmelavr_sodaq_moja — Debug: On-board, MCU: ATMEGA328P, Frequency: 8MHz, Flash: 31.50KB, RAM: 2KB
  • board_atmelavr_sodaq_ndogo — Debug: On-board, MCU: ATMEGA1284P, Frequency: 8MHz, Flash: 127KB, RAM: 16KB
  • board_atmelavr_sodaq_tatu — Debug: On-board, MCU: ATMEGA1284P, Frequency: 8MHz, Flash: 127KB, RAM: 16KB

not the moja being the tiny one of the group with her ATMEGA328P and 31.50KB / 2KB situation while the other four are all ATMEGA1284P at 127KB / 16KB — she's doing her best and honestly? iconic 🫶


✨ Sanguino ✨

and then Sanguino arrives with SIX boards, the whole family reunion, all of them On-board debug:

  • board_atmelavr_sanguino_atmega1284p — Debug: On-board, MCU: ATMEGA1284P, Frequency: 16MHz, Flash: 127KB, RAM: 16KB
  • board_atmelavr_sanguino_atmega1284_8m — Debug: On-board, MCU: ATMEGA1284P, Frequency: 8MHz, Flash: 127KB, RAM: 16KB
  • board_atmelavr_sanguino_atmega644 — Debug: On-board, MCU: ATMEGA644, Frequency: 16MHz, Flash: 63KB, RAM: 4KB
  • board_atmelavr_sanguino_atmega644_8m — Debug: On-board, MCU: ATMEGA644, Frequency: 8MHz, Flash: 63KB, RAM: 4KB
  • board_atmelavr_sanguino_atmega644p — Debug: On-board, MCU: ATMEGA644P, Frequency: 16MHz, Flash: 63KB, RAM: 4KB
  • board_atmelavr_sanguino_atmega644p_8m — Debug: On-board, MCU: ATMEGA644P, Frequency: 8MHz, Flash: 63KB, RAM: 4KB

see the pattern? the 1284P girlies get 127KB flash + 16KB RAM, and the 644 / 644P girlies get 63KB + 4KB. the _8m suffix is literally just "this one runs at 8MHz instead of 16MHz", no mystery, no cap 💀


🍓 SeeedStudio 🍓

SeeedStudio keeps it to one, and she's a classic:

  • board_atmelavr_seeeduino — Debug: On-board, MCU: ATMEGA328P, Frequency: 16MHz, Flash: 31.50KB, RAM: 2KB

🌈 SparkFun 🌈

and now SparkFun is stepping into the frame, and the table she brings is set up with the exact same columns we've been reading this whole time:

  • Name
  • Debug
  • MCU
  • Frequency
  • Flash
  • RAM

and that's right where this part runs out, so don't go anywhere — the SparkFun rows are literally next 💖

okay so we are literally mid-table right now, no big deal 💅 the columns are Name, Debug, MCU, Frequency, Flash, RAM — and we're still deep in the SparkFun roster, so let's keep it rolling bestie ✨

  • board_atmelavr_sparkfun_satmega128rfa1 — Debug: On-board · MCU: ATMEGA128RFA1 · Frequency: 16MHz · Flash: 16KB · RAM: 124KB
  • board_atmelavr_sparkfun_digitalsandbox — Debug: On-board · MCU: ATMEGA328P · Frequency: 8MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_sparkfun_fiov3 — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 8MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_sparkfun_makeymakey — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_sparkfun_megapro8MHz — Debug: On-board · MCU: ATMEGA2560 · Frequency: 8MHz · Flash: 252KB · RAM: 8KB
  • board_atmelavr_sparkfun_megapro16MHz — Debug: On-board · MCU: ATMEGA2560 · Frequency: 16MHz · Flash: 248KB · RAM: 8KB
  • board_atmelavr_sparkfun_megamini — Debug: On-board · MCU: ATMEGA2560 · Frequency: 8MHz · Flash: 252KB · RAM: 8KB
  • board_atmelavr_uview — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB (her row in the table has a lil blank cell in it, we don't ask questions 🙈)
  • board_atmelavr_sparkfun_promicro8 — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 8MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_sparkfun_promicro16 — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_sparkfun_qduinomini — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 8MHz · Flash: 28KB · RAM: 2.50KB
  • board_atmelavr_sparkfun_redboard — Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB
  • board_atmelavr_sparkfun_serial7seg — Debug: On-board · MCU: ATMEGA328P · Frequency: 8MHz · Flash: 31.50KB · RAM: 2KB
the way the megapro8MHz and the megamini are serving the exact same ATMEGA2560 / 8MHz / 252KB / 8KB stat line… siblings fr fr 🫶

SpellFoundry 🦋

and now we slide into a whole new group, and she's a solo act, main character energy only:

  • board_atmelavr_sleepypi — Debug: On-board · MCU: ATMEGA328P · Frequency: 8MHz · Flash: 30KB · RAM: 2KB
30KB flash instead of the usual 31.50KB — she's built different, and that's on purpose ✨

The Things Network 🌈

last group of this stretch, and it's a party of one:

  • board_atmelavr_the_things_uno — Debug: On-board · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 28KB · RAM: 2.50KB

so yeah, that's the whole run: 13 SparkFun-family boards, one lonely SpellFoundry baddie, and one The Things Network icon, all of them On-board debug, all values exactly as they came 👑 and we are not done yet — the table keeps going, so hold onto your ATMEGA 💖

👑 the board roll-call continues, bestie 👑

okay so we are STILL in the vendor tables and honestly the vibe is immaculate. every single row below is a real board definition, and i am not skipping a single one, periodt. 💅


Till Harbaum

  • board_atmelavr_ftduino — Debug: On-board, MCU: ATMEGA32U4, Frequency: 16MHz, Flash: 28KB, RAM: 2.50KB

TinyCircuits — tiny boards, tiny name, huge energy 🦋

  • board_atmelavr_tinyduino — Debug: On-board, MCU: ATMEGA328P, Frequency: 8MHz, Flash: 30KB, RAM: 2KB
  • board_atmelavr_tinylily — Debug: On-board, MCU: ATMEGA328P, Frequency: 8MHz, Flash: 30KB, RAM: 2KB

like… they're twins, fr fr, same stats and everything 😭 iconic of them tbh.


Wicked Device — the name goes HARD and so does the flash size 🔥

  • board_atmelavr_wildfirev2 — Debug: On-board, MCU: ATMEGA1284P, Frequency: 16MHz, Flash: 120.00KB, RAM: 16KB
  • board_atmelavr_wildfirev3 — Debug: On-board, MCU: ATMEGA1284P, Frequency: 16MHz, Flash: 127KB, RAM: 16KB

note that 120.00KB versus 127KB — the formatting is literally different between these two rows and we are NOT "fixing" it, we are respecting it 💀


Wisen — whisper quiet, whispernode 🫶

  • board_atmelavr_whispernode — Debug: On-board, MCU: ATMEGA328P, Frequency: 16MHz, Flash: 31.50KB, RAM: 2KB

makerlab.mx

  • board_atmelavr_altair — Debug: No, MCU: ATMEGA256RFR2, Frequency: 16MHz, Flash: 248KB, RAM: 32KB

okay the debug being No here? that's the whole tea. no on-board debugger on this one, bestie, so don't come for me when the debug flow looks different. also 248KB flash and 32KB RAM — she is EATING. 💅✨


nicai-systems — a whole squad, we love a family of boards 🎀

  • board_atmelavr_bob3 — Debug: On-board, MCU: ATMEGA88, Frequency: 8MHz, Flash: 8KB, RAM: 1KB
  • board_atmelavr_nibo2 — Debug: On-board, MCU: ATMEGA128, Frequency: 16MHz, Flash: 128KB, RAM: 4KB
  • board_atmelavr_niboburger — Debug: On-board, MCU: ATMEGA16, Frequency: 15MHz, Flash: 16KB, RAM: 1KB
  • board_atmelavr_niboburger_1284 — Debug: On-board, MCU: ATMEGA1284P, Frequency: 20MHz, Flash: 128KB, RAM: 16KB
  • board_atmelavr_nibobee — Debug: On-board, MCU: ATMEGA16, Frequency: 15MHz, Flash: 16KB, RAM: 1KB
  • board_atmelavr_nibobee_1284 — Debug: On-board, MCU: ATMEGA1284P, Frequency: 20MHz, Flash: 128KB, RAM: 16KB

a little pattern-check for u since i know u love a pattern: the _1284 variants are the glow-ups 🌸 — same board family, but MCU ATMEGA1284P, Frequency 20MHz, Flash 128KB, RAM 16KB. the niboburger and the nibobee both get that treatment, and honestly? slay.

and yes — niboburger is spelled exactly like that, 15MHz is exactly 15MHz (not 16, do not round it, do not touch it), and every Debug cell here is On-board. 🫡


└──┼─────────────────────────┼───┴──────┼───┴────────┼────┴──────┼────┴──┼────┴───┼──┘
   │                         │          │            │           │       │        │
   ubIQio                    │          │            │           │       │        │
   │┌───────────────────────┬┼─────────┬┼───────────┬┼──────────┬┼───────┼┬─────┐ │
   ││ Name                  ││Debug    ││MCU        ││Frequency ││Flash  ││ RAM │ │
   │├───────────────────────┼┼─────────┼┼───────────┼┼──────────┼┼───────┼┼─────┤ │
   ││ board_atmelavr_ardhat ││On-board ││ATMEGA328P ││16MHz     ││31.50KB││ 2KB │ │
   │└───────────────────────┴┼─────────┴┼───────────┴┼──────────┴┼───────┼┴─────┘ │
   │                         │          │            │           │       │        │

okay so the very last row of that vendor block is board_atmelavr_ardhat, brought to you by ubIQio 🫶 and it's giving: on-board debug, ATMEGA328P brain, 16MHz heartbeat, 31.50KB of flash and 2KB of RAM. small but mighty fr fr 💅


✨ Atmel megaAVR ✨

⚙️ Configuration ⚙️

The platform id, and yes it's literally just this:

projectconf_env_platform = atmelmegaavr

that's it, that's the whole vibe check 💖


the description, bestie, is a whole mood:

8-bit MCUs Built for Real-time Control with Core Independent Peripherals

combining intelligent hardware peripherals along with the low-power capability of an AVR core, megaAVR microcontrollers (MCUs) broaden the effectiveness of your real-time control systems. 🔥

For more detailed information please visit vendor site.


📋 Contents 📋

  • Examples
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🍓 Examples 🍓

Examples are listed from Atmel megaAVR development platform repository:

  • arduino-blink
  • native-blink
  • arduino-internal-libs
  • arduino-external-libs

literally four little starters to copy-paste and pretend you wrote yourself 🙈 iconic behaviour


🔀 Stable and upstream versions 🔀

You can switch between stable releases of Atmel megaAVR development platform and the latest upstream version using projectconf_env_platform option in projectconf as described below. yes, same option, two totally different energies 💅

Stable 💖

; Latest stable version
[env:latest_stable]
platform = atmelmegaavr
board = ...

; Custom stable version
[env:custom_stable]
platform = atmelmegaavr@x.y.z
board = ...

Upstream 🌈

[env:upstream_develop]
platform = https://github.com/platformio/platform-atmelmegaavr.git
board = ...
note the https://github.com/platformio/platform-atmelmegaavr.git — that's the live-from-the-source version, main character energy, absolutely not for the faint of heart 🧚

📦 Packages 📦

   │          ───────────────┼──────────┼────────────┼───────────┼────   │        │
   │            Name         │          │   Description          │       │        │
   │          ───────────────┼──────────┼────────────┼───────────┼────   │        │
   │            framework-arduino-megaavr   Arduino Wiring-based │       │        │
   │                         │          │   Framework│(megaAVR Core)     │        │
   │          ───────────────┴──────────┴────────────┴───────────┴────   │        │
                tool-avrdude-megaavr        AVRDUDE for megaAVR
              ────────────────────────────────────────────────────────
                toolchain-atmelavr          avr-gcc
              ┌───────────────────────────┬──────────────────────────┐
              │                           │                          │

so, breaking that down for my girls:

  • framework-arduino-megaavr — Arduino Wiring-based Framework (megaAVR Core) 🎀
  • tool-avrdude-megaavr — AVRDUDE for megaAVR 👑
  • toolchain-atmelavr — avr-gcc ⭐

🚨 WARNING 🚨

Linux Users:

  • Install "udev" rules faq_udev_rules
  • Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.

Windows Users:

Please check that you have a correctly installed USB driver from board manufacturer

bestie if your board is not showing up, it's like 99% this. not me ignoring the udev rules for three hours and blaming the cable 😭

🧰 Frameworks 🧰

              │  ┌───────────────────┬────┼───────────────────────┐  │
              │  │ Name              │ Description                │  │
              │  ├───────────────────┼────┼───────────────────────┤  │
              │  │ framework_arduino │ Arduino Wiring-based       │  │
              │  │                   │ Framework allows writing   │  │
              │  │                   │ cross-platform software to │  │
              │  │                   │ control devices attached   │  │
              │  │                   │ to a wide range of Arduino │  │
              │  │                   │ boards to create all kinds │  │
              │  │                   │ of creative coding,        │  │
              │  │                   │ interactive objects,       │  │
              │  │                   │ spaces or physical         │  │
              │  │                   │ experiences.               │  │
              │  └───────────────────┴────┼───────────────────────┘  │

one framework, one icon:

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

👑 Boards 👑

NOTE:

  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally.
scroll sideways bestie, the tables are wide, that's not a bug that's just the fit 💀

🌸 Arduino 🌸

┌─────────────┼────────────────────┬──────┼┬────────────┬───────────┬┼────────┬─────┐
│ Name        │                    │ Debug││ MCU        │ Frequency ││Flash   │ RAM │

and the board rows are right up next, so don't touch that dial 💜

├─────────────┼────────────────────┼──────┼┼────────────┼───────────┼┼────────┼─────┤
│ board_atmelmegaavr_nano_every    │ No   ││ ATMEGA4809 │ 16MHz     ││47.50KB │ 6KB │
├─────────────┼────────────────────┼──────┼┼────────────┼───────────┼┼────────┼─────┤
│ board_atmelmegaavr_uno_wifi_rev2 │ No   ││ ATMEGA4809 │ 16MHz     ││47.50KB │ 6KB │
└─────────────┼────────────────────┴──────┼┴────────────┴───────────┴┼────────┴─────┘

okay and that's a wrap on that table bestie, we're moving on 💅


🦋 Atmel SAM Configuration 🦋

so the magic little line you're gonna need is:

projectconf_env_platform = atmelsam

that's it. that's the whole vibe. ✨

Atmel | SMART is out here serving Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures — and the range is giving tbh, from 8KB all the way up to 2MB of Flash, plus a whole rich peripheral and feature mix. the range?? iconic. 👑

for more detailed information please visit vendor site. (no cap, that's literally what it says, i'm not making up a URL for you 🙈)


📖 Contents 📖

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

✨ Examples ✨

these are listed from the Atmel SAM development platform repository, okurrr:

  • mbed-blink
  • mbed-serial
  • zephyr-blink
  • zephyr-drivers-i2c-scanner
  • zephyr-subsys-logger
  • mbed-events
  • arduino-blink
  • simba-blink
  • arduino-internal-libs
  • arduino-external-libs
  • mbed-dsp
  • arduino-web-thing-led
  • arduino-briki-internal-libs

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. zero. configuration. we love a low-effort queen fr fr 🫶

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🔧 Tools & Debug Probes 🔧

supported debugging tools are listed in the "Debug" column. for more detailed information, please scroll the table by horizontal (yes bestie, scroll it sideways, the table is long and it's not sorry about it 💀).

you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

WARNING: you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions.

🎀 On-Board Debug Tools 🎀

boards listed below have an on-board debug probe and ARE READY for debugging! you do not need to use/buy an external debug probe. she comes with everything, she's self-sufficient, main character energy. 💖

┌──────┼───────────────────────┬───┼────────┬───────────┬─────┼─┬──────┐
│ Name │                       │ MCU        │ Frequency │ Flash │ RAM  │
├──────┼───────────────────────┼───┼────────┼───────────┼─────┼─┼──────┤
│ board_atmelsam_mzeropro      │ SAMD21G18A │ 48MHz     │ 256KB │ 32KB │
├──────┼───────────────────────┼───┼────────┼───────────┼─────┼─┼──────┤
│ board_atmelsam_zero          │ SAMD21G18A │ 48MHz     │ 256KB │ 32KB │
├──────┼───────────────────────┼───┼────────┼───────────┼─────┼─┼──────┤
│ board_atmelsam_samr21_xpro   │ SAMR21G18A │ 48MHz     │ 256KB │ 32KB │
├──────┼───────────────────────┼───┼────────┼───────────┼─────┼─┼──────┤
│ board_atmelsam_samd21g18a    │ SAMD21G18A │ 48MHz     │ 256KB │ 32KB │
├──────┼───────────────────────┼───┼────────┼───────────┼─────┼─┼──────┤
│ board_atmelsam_samc21_xpro   │ SAMC21J18A │ 48MHz     │ 256KB │ 32KB │
├──────┼───────────────────────┼───┼────────┼───────────┼─────┼─┼──────┤
│ board_atmelsam_samd21_xpro   │ SAMD21J18A │ 48MHz     │ 256KB │ 32KB │
├──────┼───────────────────────┼───┼────────┼───────────┼─────┼─┼──────┤
│ board_atmelsam_saml21_xpro_b │ SAML21J18B │ 48MHz     │ 256KB │ 32KB │
└──────┼───────────────────────┴───┼────────┴───────────┴─────┼─┴──────┘

🌸 External Debug Tools 🌸

boards listed below are compatible with piodebug but DEPEND ON an external debug probe. they ARE NOT READY for debugging. please click on the board name for the further details. (not her being high maintenance but okay, we respect the requirements 💅)

──────────────┼───────────────────────────┼──────────────────────────┼─────────────────────
  Name        │                           │      MCU           Frequency   Flash    RAM
──────────────┼───────────────────────────┼──────────────────────────┼─────────────────────
  board_atmelsam_adafruit_circuitplayground_m0   SAMD21G18A    48MHz │     256KB    32KB
──────────────┼───────────────────────────┼──────────────────────────┼─────────────────────
  board_atmelsam_adafruit_crickit_m0      │      SAMD21G18A    48MHz │     256KB    32KB
──────────────┼───────────────────────────┼──────────────────────────┼─────────────────────
  board_atmelsam_adafruit_feather_m0      │      SAMD21G18A    48MHz │     256KB    32KB
──────────────┼───────────────────────────┼──────────────────────────┼─────────────────────
  board_atmelsam_adafruit_feather_m0_express     SAMD21G18A    48MHz │     256KB    32KB

and bestie we are STILL GOING so don't you dare close the tab 💜

ok bestie the SAMD board dump continues, and honestly? every single one of these is a little icon 💅 the columns are MCU, clock, flash, RAM — read them like a bingo card and you'll be fine:

  • board_atmelsam_adafruit_feather_m4 — SAMD51J19A at 120MHz, 512KB flash, 192KB RAM 🪶
  • board_atmelsam_adafruit_gemma_m0 — SAMD21E18A at 48MHz, 256KB flash, 32KB RAM 🎀
  • board_atmelsam_adafruit_grandcentral_m4 — SAMD51P20A at 120MHz, 1MB flash, 256KB RAM 👑 the big one, no cap
  • board_atmelsam_adafruit_hallowing — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🎃
  • board_atmelsam_adafruit_hallowing_m4 — SAMD51J19A at 120MHz, 496KB flash, 192KB RAM
  • board_atmelsam_adafruit_itsybitsy_m0 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🕷️ tiny but mighty
  • board_atmelsam_adafruit_itsybitsy_m4 — SAMD51G19A at 120MHz, 512KB flash, 192KB RAM
  • board_atmelsam_adafruit_monster_m4sk — SAMD51G19A at 120MHz, 496KB flash, 192KB RAM 🧟
  • board_atmelsam_adafruit_metro_m0 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM
  • board_atmelsam_adafruit_metro_m4 — SAMD51J19A at 120MHz, 512KB flash, 192KB RAM
  • board_atmelsam_adafruit_metro_m4_airliftlite — SAMD51J19A at 120MHz, 512KB flash, 192KB RAM
  • board_atmelsam_adafruit_pygamer_advance_m4 — SAMD51J20A at 120MHz, 1MB flash, 256KB RAM 🎮 gaming, literally
  • board_atmelsam_adafruit_pygamer_m4 — SAMD51J19A at 120MHz, 512KB flash, 192KB RAM
  • board_atmelsam_adafruit_pyportal_m4 — SAMD51J20A at 120MHz, 1MB flash, 256KB RAM
  • board_atmelsam_adafruit_pyportal_m4_titano — SAMD51J20A at 120MHz, 1MB flash, 256KB RAM
  • board_atmelsam_adafruit_trellis_m4 — SAMD51J19A at 120MHz, 512KB flash, 192KB RAM 🌸
  • board_atmelsam_adafruit_trinket_m0 — SAMD21E18A at 48MHz, 256KB flash, 32KB RAM 💎
  • board_atmelsam_adafruit_pirkey — SAMD21E18A at 48MHz, 256KB flash, 32KB RAM 🏴‍☠️
  • board_atmelsam_adafruit_pybadge_airlift_m4 — SAMD51J20A at 120MHz, 1008KB flash, 192KB RAM
  • board_atmelsam_adafruit_pybadge_m4 — SAMD51J19A at 120MHz, 512KB flash, 192KB RAM 🏅
  • board_atmelsam_due — AT91SAM3X8E at 84MHz, 512KB flash, 96KB RAM ⭐ the OG, highkey a legend
  • board_atmelsam_dueUSB — AT91SAM3X8E at 84MHz, 512KB flash, 96KB RAM
  • board_atmelsam_mzeroUSB — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM
  • board_atmelsam_mzeroproUSB — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM
  • board_atmelsam_mkrfox1200 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🦊
  • board_atmelsam_mkrgsm1400 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 📶
  • board_atmelsam_mkrnb1500 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM
  • board_atmelsam_mkrwan1300 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM
  • board_atmelsam_mkrwan1310 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM
  • board_atmelsam_mkrwifi1010 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 📡
  • board_atmelsam_mkr1000USB — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM
  • board_atmelsam_mkrzero — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM ✨

and that's the whole atmelsam glow-up 🦋 all of them running <rainbow>ARM Cortex-M</rainbow> cores of one flavour or another — the SAMD21 girlies chugging along at 48MHz with 256KB/32KB, and the SAMD51 divas strutting at 120MHz with 512KB or 1MB and 192KB or 256KB to play with. notice how the due boards are the odd ones out with that AT91SAM3X8E at 84MHz, 512KB flash and 96KB RAM — different era, same slay 💀

the ones with 496KB instead of 512KB? not a typo bestie, that's just what they ship with 🫶 and the pybadge_airlift_m4 flexing 1008KB? we see you, ma'am 👑

lowkey the takeaway: same family name, wildly different specs, so always check the exact board ID before you flash anything or you're gonna have a bad time 😭

Two more rows in the narrower column layout first, then the source goes full-width for the rest — same four facts each time: board id, MCU, clock, flash, RAM. Zero skipping, bestie. 💖

  • board_atmelsam_tian — SAMD21G18A running at 48MHz, with 256KB flash and 32KB RAM 🦋
  • board_atmelsam_zeroUSB — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🦋

Okay and from here the columns stretch all the way out. Same energy, more room to breathe:

  • board_atmelsam_briki_abc_samd21 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM ✨
  • board_atmelsam_briki_mbcwb_samd21 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM ✨
  • board_atmelsam_digix — AT91SAM3X8E at 84MHz, 512KB flash, 96KB RAM 🔥 that clock speed tho
  • board_atmelsam_mkrvidor4000 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 💅
  • board_atmelsam_minitronics20 — SAMD21J18A at 48MHz, 256KB flash, 32KB RAM 🎀
  • board_atmelsam_moteino_zero — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🎀
  • board_atmelsam_nano_33_iot — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🌈
  • board_atmelsam_sodaq_autonomo — SAMD21J18A at 48MHz, 256KB flash, 32KB RAM 🍓
  • board_atmelsam_sodaq_explorer — SAMD21J18A at 48MHz, 256KB flash, 32KB RAM 🍓
  • board_atmelsam_sodaq_one — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🍓
  • board_atmelsam_sodaq_sara — SAMD21J18A at 48MHz, 256KB flash, 32KB RAM 🧚
  • board_atmelsam_sodaq_sff — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🧚
  • board_atmelsam_sainSmartDue — AT91SAM3X8E at 84MHz, 512KB flash, 96KB RAM 💜 (yes the capital S in sainSmart is on purpose, we copy it exactly, no cap)
  • board_atmelsam_sainSmartDueUSB — AT91SAM3X8E at 84MHz, 512KB flash, 96KB RAM 💜
  • board_atmelsam_seeeduino_lorawan — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🌸
  • board_atmelsam_sparkfun_samd21_9dof — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM ⭐
  • board_atmelsam_sparkfun_qwiic_micro_samd21e — SAMD21E18A at 48MHz, 256KB flash, 32KB RAM ⭐ (different MCU letter, same vibes)
  • board_atmelsam_sparkfun_redboard_turbo — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🫶
  • board_atmelsam_sparkfun_samd21_dev_usb — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🫶
  • board_atmelsam_sparkfun_samd21_mini_usb — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🫶
  • board_atmelsam_sparkfun_samd21_proRF — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 💫 (and yeah, proRF keeps that capital RF)
  • board_atmelsam_tuinozero96 — SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 👑
Not me double-checking every single id string… but fr fr, if you're copy-pasting a board name out of here, grab it from the backticks and don't "fix" the capitalisation. The list is the list.

Stable and upstream versions ✨

Okay bestie, listen — you can switch between stable releases of the Atmel SAM development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. Iconic behaviour honestly. 💅

Stable 🍓

; Latest stable version
[env:latest_stable]
platform = atmelsam
board = ...

; Custom stable version
[env:custom_stable]
platform = atmelsam@x.y.z
board = ...

Upstream 🦋

[env:upstream_develop]
platform = https://github.com/platformio/platform-atmelsam.git
board = ...

Packages 🎀

These are the packages, no cap — every single one, exactly as they come:

  • framework-arduino-mbcwb — Fork of Arduino framework for briki MBC-WB boards 💖
  • framework-arduino-sam — Arduino Wiring-based Framework (SAM Core)
  • framework-arduino-samd — Arduino Wiring-based Framework (SAMD Core)
  • framework-arduino-samd-adafruit — Arduino Wiring-based Framework (Adafruit SAMD Core)
  • framework-arduino-samd-moteino — Arduino Wiring-based Framework (Moteino SAMD Core)
  • framework-arduino-samd-reprap — Arduino Wiring-based Framework (RepRap SAMD Core)
  • framework-arduino-samd-sodaq — Arduino Wiring-based Framework (SODAQ SAMD Core)
  • framework-arduino-samd-sparkfun — Arduino Wiring-based Framework (SparkFun SAMD Core)
  • framework-arduino-samd-tuino0 — Arduino Wiring-based Framework (Tuino0 SAMD Core)
  • framework-cmsis — Vendor-independent hardware abstraction layer for the Cortex-M processor series 👑
  • framework-cmsis-atmel — Atmel Smart ARM devices CMSIS module
  • framework-mbed — mbed Framework
  • framework-simba — Simba Framework
  • framework-zephyr — Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. 🌈
  • framework-zephyr-canopennode — Zephyr module for CANopenNode - a free and open source CANopen Stack
  • framework-zephyr-civetweb — Zephyr module CivetWeb Embedded C/C++ web server
  • framework-zephyr-fatfs — Zephyr module for FATFS filesystem
  • framework-zephyr-hal-atmel — Atmel SAM HAL for Zephyr framework 💜
  • framework-zephyr-libmetal — Zephyr module for the HAL abstraction layer that open-amp uses 💅
  • framework-zephyr-littlefs — Zephyr module for the littlefs filesystem
  • framework-zephyr-loramac-node — Zephyr module for the LoRaWAN endpoint stack implementation
  • framework-zephyr-lvgl — Zephyr module for LittlevGL — an Open-source Embedded GUI Library ✨
  • framework-zephyr-mbedtls — mbedTLS module for Zephyr
  • framework-zephyr-mcuboot — Zephyr module for MCUboot — a secure bootloader for 32-bit MCUs 🔥
  • framework-zephyr-mcumgr — Zephyr module for the mcumgr management library for 32-bit MCUs
  • framework-zephyr-mipi-sys-t — Zephyr module for MIPI System Software Trace
  • framework-zephyr-open-amp — Zephyr module for the Open Asymmetric Multi Processing (OpenAMP) framework
  • framework-zephyr-openthread — OpenThread module for Zephyr
  • framework-zephyr-segger — Zephyr module for Segger RTT
  • framework-zephyr-tinycbor — Zephyr module for the Concise Binary Object Representation Library
  • tool-avrdude — AVRDUDE
  • tool-bossac — BOSSA CLI
  • tool-cmake — CMake is an open-source, cross-platform family of tools designed to build, test and package software.
  • tool-dtc — Device tree compiler
  • tool-gperf — GNU gperf is a perfect hash function generator.
  • tool-jlink — SEGGER J-Link Software and Documentation Pack
  • tool-mbctool — MBC-WB Uploader Application
  • tool-ninja — Ninja is a small build system with a focus on speed.
  • tool-openocd — OpenOCD
  • toolchain-gccarmnoneeabi — gcc-arm-embedded

⚠️ WARNING ⚠️

ok bestie this part is important, don't scroll past it 😭

Linux Users:

  • Install udev rules — faq_udev_rules 🌸
  • Raspberry Pi users, please read this article: Enable serial port on Raspberry Pi.

Windows Users:

  • Please check that you have a correctly installed USB driver from the board manufacturer 🔌
fr fr, if your board is acting ghosted and nothing wants to flash, it's probably one of these two things. vibe check your drivers first 💀

✨ Frameworks ✨

ok so these are the frameworks PlatformIO fw-ends with, and bestie, they are so different from each other, like a whole friend group 💖

  • framework_arduino — the Arduino Wiring-based Framework 💅 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. yes. literally. art. electronics. both. 🌈
  • framework_mbed — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed 🔥 In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. the community ATE, fr fr 👑
  • framework_simba — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. short. sweet. iconic. ✨
  • framework_zephyr — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. she's responsible AND she's scalable, main character energy no cap 🎀

🦋 Boards 🦋

NOTE: 💌 two things before you scroll, bestie: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

🌸 Adafruit 🌸

every single one of these has an External debug probe situation, so I'm telling you once and then it's just vibes below 🫶 (also I turned the horizontal-scroll table into a list because my wrists are tired 💀)

  • board_atmelsam_adafruit_circuitplayground_m0 — Debug: External · MCU SAMD21G18A · 48MHz · Flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_crickit_m0 — Debug: External · MCU SAMD21G18A · 48MHz · Flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_feather_m0 — Debug: External · MCU SAMD21G18A · 48MHz · Flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_feather_m0_express — Debug: External · MCU SAMD21G18A · 48MHz · Flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_feather_m4 — Debug: External · MCU SAMD51J19A · 120MHz · Flash 512KB · RAM 192KB
  • board_atmelsam_adafruit_gemma_m0 — Debug: External · MCU SAMD21E18A · 48MHz · Flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_grandcentral_m4 — Debug: External · MCU SAMD51P20A · 120MHz · Flash 1MB · RAM 256KB
  • board_atmelsam_adafruit_hallowing — Debug: External · MCU SAMD21G18A · 48MHz · Flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_hallowing_m4 — Debug: External · MCU SAMD51J19A · 120MHz · Flash 496KB · RAM 192KB
  • board_atmelsam_adafruit_itsybitsy_m0 — Debug: External · MCU SAMD21G18A · 48MHz · Flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_itsybitsy_m4 — Debug: External · MCU SAMD51G19A · 120MHz · Flash 512KB · RAM 192KB
  • board_atmelsam_adafruit_monster_m4sk — Debug: External · MCU SAMD51G19A · 120MHz · Flash 496KB · RAM 192KB
  • board_atmelsam_adafruit_metro_m0 — Debug: External · MCU SAMD21G18A · 48MHz · Flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_metro_m4 — Debug: External · MCU SAMD51J19A · 120MHz · Flash 512KB · RAM 192KB
  • board_atmelsam_adafruit_metro_m4_airliftlite — Debug: External · MCU SAMD51J19A · 120MHz · Flash 512KB · RAM 192KB
  • board_atmelsam_adafruit_pygamer_advance_m4 — Debug: External · MCU SAMD51J20A · 120MHz · Flash 1MB · RAM 256KB

not the itsybitsy and the monster living in the same family, they're giving opposites attract 😭💖 and yes the pygamer_advance_m4 is out here with a whole 1MB of flash, she's eating and leaving no crumbs 🍓

okay bestie, the Atmel SAM board table is STILL going and now we're in the Adafruit corner of the party 🎀 same columns as before — that External marker, then the MCU, then the clock speed, then the flash, then the RAM. no skipping, we read every single row, that's the rule ✨

  • board_atmelsam_adafruit_pygamer_m4 — External, MCU SAMD51J19A, 120MHz, 512KB flash, 192KB RAM 💜
  • board_atmelsam_adafruit_pyportal_m4 — External, MCU SAMD51J20A, 120MHz, 1MB flash, 256KB RAM 🌸
  • board_atmelsam_adafruit_pyportal_m4_titano — External, MCU SAMD51J20A, 120MHz, 1MB flash, 256KB RAM 🦋
  • board_atmelsam_adafruit_trellis_m4 — External, MCU SAMD51J19A, 120MHz, 512KB flash, 192KB RAM ✨
  • board_atmelsam_adafruit_trinket_m0 — External, MCU SAMD21E18A, 48MHz, 256KB flash, 32KB RAM 🎀
  • board_atmelsam_adafruit_pirkey — External, MCU SAMD21E18A, 48MHz, 256KB flash, 32KB RAM 🍓
  • board_atmelsam_adafruit_pybadge_airlift_m4 — External, MCU SAMD51J20A, 120MHz, 1008KB flash, 192KB RAM 👑
  • board_atmelsam_adafruit_pybadge_m4 — External, MCU SAMD51J19A, 120MHz, 512KB flash, 192KB RAM 💖

not me side-eyeing that 1008KB on the board_atmelsam_adafruit_pybadge_airlift_m4 like 👀 that is literally what the table says bestie, we do not round in this house, we do not editorialize, we copy the numbers exactly 💅

and notice the M0 babies — board_atmelsam_adafruit_trinket_m0 and board_atmelsam_adafruit_pirkey — both rocking the SAMD21E18A at 48MHz with 256KB / 32KB, twins fr fr 🫶 meanwhile the M4 girlies are all SAMD51 this and SAMD51 that at 120MHz and they KNOW it, main character energy, no cap 😭

the list is not done, obviously it's not done, it's never done, keep scrolling bestie 🌈

…and we're back, bestie, mid-table, no time to breathe 💅 The Arduino roster just keeps going and honestly? She's giving volume. Same energy as before: name, debug vibe, MCU, clock speed, flash, RAM. Let's gooo 🌈

  • board_atmelsam_due — debug: External, MCU: AT91SAM3X8E, freq: 84MHz, flash: 512KB, RAM: 96KB
  • board_atmelsam_dueUSB — debug: External, MCU: AT91SAM3X8E, freq: 84MHz, flash: 512KB, RAM: 96KB
  • board_atmelsam_mzeroUSB — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mzeroproUSB — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mzeropro — debug: On-board, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mkrfox1200 — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mkrgsm1400 — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mkrnb1500 — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mkrwan1300 — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mkrwan1310 — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mkrwifi1010 — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mkr1000USB — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mkrzero — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_tian — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_zero — debug: On-board, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_zeroUSB — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_mkrvidor4000 — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_nano_33_iot — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB

and that's a wrap on Arduino's little army — like, they really said "one MCU, many fits" huh 😭 every single SAMD21G18A board matching specs like a coordinated group chat fit-check 🫶


Atmel ✨

Next vendor up, and the vibe shift is real: these ones are all On-board debug, no external probes needed, main character energy only 👑

  • board_atmelsam_samr21_xpro — debug: On-board, MCU: SAMR21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_samd21g18a — debug: On-board, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_samc21_xpro — debug: On-board, MCU: SAMC21J18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_samd21_xpro — debug: On-board, MCU: SAMD21J18A, freq: 48MHz, flash: 256KB, RAM: 32KB
  • board_atmelsam_saml21_xpro_b — debug: On-board, MCU: SAML21J18B, freq: 48MHz, flash: 256KB, RAM: 32KB

okay so different MCU names, same 256KB/32KB/48MHz energy — consistency is the moment fr fr 💜


Digistump 🦋

Tiny crew, single board, big AT91SAM3X8E energy — she came to slay and she came alone 💅

  • board_atmelsam_digix — debug: External, MCU: AT91SAM3X8E, freq: 84MHz, flash: 512KB, RAM: 96KB

not me noticing the Digistump one matches the due specs exactly 👀 84MHz, 512KB, 96KB — twins, no cap 🌸


Gimasi 🎀

And last but never least in this chunk, Gimasi rolls up with one board:

  • board_atmelsam_tuinozero96 — debug: External, MCU: SAMD21G18A, freq: 48MHz, flash: 256KB, RAM: 32KB

…and we're cutting off right here mid-list, bestie — don't worry, there's more where that came from, the table keeps going 👑

🧚 LowPowerLab 🧚

Two boards, both cute, both SAMD21G18A energy. One of them can't do debug at all and honestly? relatable.

  • board_atmelsam_current_ranger — Debug: No 🙈 · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_atmelsam_moteino_zero — Debug: External · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
Heads up bestie: that first one has no debug support, so don't go looking for a debug probe moment. It's giving "we debug with Serial.println() and vibes."

🍓 ReprapWorld 🍓

One single board, but she's a whole personality: a J18A instead of the usual G18A, still 48MHz, still 256KB flash, still 32KB RAM. Same energy, different silicon letter.

  • board_atmelsam_minitronics20 — Debug: External · MCU: SAMD21J18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB

🌸 SODAQ 🌸

Five boards, and every single one rocks External debug. The way SODAQ said "debug for everyone" and meant it?? Iconic behaviour fr fr.

  • board_atmelsam_sodaq_autonomo — Debug: External · MCU: SAMD21J18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_atmelsam_sodaq_explorer — Debug: External · MCU: SAMD21J18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_atmelsam_sodaq_one — Debug: External · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_atmelsam_sodaq_sara — Debug: External · MCU: SAMD21J18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_atmelsam_sodaq_sff — Debug: External · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB

💜 SainSmart 💜

Okay so these two are different, bestie. Not SAMD at all — we're on the AT91SAM3X8E, running at 84MHz with 512KB flash and 96KB RAM. That's nearly double the flash and triple the RAM of the SAMD21 girlies above. She ate. 💅

  • board_atmelsam_sainSmartDue — Debug: External · MCU: AT91SAM3X8E · Frequency: 84MHz · Flash: 512KB · RAM: 96KB
  • board_atmelsam_sainSmartDueUSB — Debug: External · MCU: AT91SAM3X8E · Frequency: 84MHz · Flash: 512KB · RAM: 96KB

Note the capital S in sainSmart — yes, that's really how it's spelled in the board ID. Copy it exactly or PlatformIO will be like "who? never heard of her." 😭


🦋 Seeed 🦋

Just one, and she's the LoRaWAN one, so she's got main character energy in the wireless department.

  • board_atmelsam_seeeduino_lorawan — Debug: External · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB

🌈 SparkFun 🌈

Six boards. Six. SparkFun really said "let me give you options" and then gave us options. All of them External debug, all 48MHz, all 256KB flash, all 32KB RAM — the only plot twist is the MCU letter on the Qwiic one.

  • board_atmelsam_sparkfun_samd21_9dof — Debug: External · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_atmelsam_sparkfun_qwiic_micro_samd21e — Debug: External · MCU: SAMD21E18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_atmelsam_sparkfun_redboard_turbo — Debug: External · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_atmelsam_sparkfun_samd21_dev_usb — Debug: External · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_atmelsam_sparkfun_samd21_mini_usb — Debug: External · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_atmelsam_sparkfun_samd21_proRF — Debug: External · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB

Did you clock the samd21e one? That's an E18A, not a G18A — different pin count, same flash and RAM on paper. Just don't assume the chips are swappable, iykyk. 🙈


⭐ meteca ⭐

And here's where the next vendor table rolls up — same columns as always, bestie:

Name · Debug · MCU · Frequency · Flash · RAM

Rows incoming. Stay tuned. 🫶

├───────────────────────────────────┼──────────┼────────────┼───────────┼───────┼──────┤
│ board_atmelsam_briki_abc_samd21   │ External │ SAMD21G18A │ 48MHz     │ 256KB │ 32KB │
├───────────────────────────────────┼──────────┼────────────┼───────────┼───────┼──────┤
│ board_atmelsam_briki_mbcwb_samd21 │ External │ SAMD21G18A │ 48MHz     │ 256KB │ 32KB │
└───────────────────────────────────┴──────────┴────────────┴───────────┴───────┴──────┘

And that's a wrap on that board table bestie, we move on 💅


🦋 Espressif 32 🦋

💖 Configuration 💖

projectconf_env_platform = espressif32

Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

For more detailed information please visit vendor site.


✨ Contents ✨

  • Tutorials
  • Configuration
  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🎀 Tutorials 🎀

  • tutorial_espressif32_arduino_debugging_unit_testing
  • tutorial_espressif32_espidf_debugging_unit_testing_analysis
  • Video: Free Inline Debugging for ESP32 and Arduino Sketches

💜 Configuration 💜

  • CPU Frequency
  • FLASH Frequency
  • FLASH Mode
  • External RAM (PSRAM)
  • Debug Level
  • Upload Speed
  • Erase Flash
  • Partition Tables
  • Embedding Binary Data
  • Uploading files to file system SPIFFS
  • Over-the-Air (OTA) update
    • Using JFrog Bintray (free and secure Cloud solution)
    • Using built-in Local solution
      • Authentication and upload options
  • Using Arduino Framework with Staging version
  • Arduino Core Wiki

🌈 CPU Frequency 🌈

See projectconf_board_build.f_cpu option from projectconf

[env:myenv]
; set frequency to 160MHz
board_build.f_cpu = 160000000L

🍓 FLASH Frequency 🍓

Please use board_build.f_flash option from projectconf to change a value. Possible values:

  • 40000000L (default)
  • 80000000L
[env:myenv]
; set frequency to 80MHz
board_build.f_flash = 80000000L

🦋 FLASH Mode 🦋

Flash chip interface mode. This parameter is stored in the binary image header, along with the flash size and flash frequency. The ROM bootloader in the ESP chip uses the value of these parameters in order to know how to talk to the flash chip.

Please use board_build.flash_mode option from projectconf to change a value. Possible values:

  • qio
  • qout
  • dio
  • dout
[env:myenv]
board_build.flash_mode = qio

💖 External RAM (PSRAM) 💖

You can enable external RAM using the next projectconf_build_flags in projectconf depending on a framework type.

Framework framework_arduino:

[env:myenv]
platform = espressif32
framework = arduino
board = ...
build_flags =
    -DBOARD_HAS_PSRAM
    -mfix-esp32-psram-cache-issue

Framework framework_espidf:

[env:myenv]
platform = espressif32
framework = espidf
board = ...
build_flags =
    -DCONFIG_SPIRAM_CACHE_WORKAROUND

More details are located in the official ESP-IDF documentation - Support for external RAM.


👑 Debug Level 👑

Please use one of the next projectconf_build_flags to change debug level. A projectconf_build_flags option could be used only the one time per build environment. If you need to specify more flags, please separate them with a new line or space.

Actual information is available in Arduino for ESP32 Board Manifest. Please scroll to esp32.menu.DebugLevel section.

[env:myenv]
platform = ...
board = ...
framework = arduino

;;;;; Possible options ;;;;;;

; None
build_flags = -DCORE_DEBUG_LEVEL=0

; Error
build_flags = -DCORE_DEBUG_LEVEL=1

; Warn
build_flags = -DCORE_DEBUG_LEVEL=2

; Info
build_flags = -DCORE_DEBUG_LEVEL=3

; Debug
build_flags = -DCORE_DEBUG_LEVEL=4

; Verbose
build_flags = -DCORE_DEBUG_LEVEL=5

🌸 Upload Speed 🌸

You can set custom upload speed using projectconf_upload_speed option from projectconf

[env:myenv]
upload_speed = 9600

💀 Erase Flash 💀

Please platformio run --target the next command to erase the entire flash chip (all data replaced with 0xFF bytes):

> platformio run --target erase

# or short version

> pio run -t erase

🧚 Partition Tables 🧚

You can create a custom partitions table (CSV) following ESP32 Partition Tables documentation. PlatformIO uses default partition tables depending on a projectconf_env_framework type:

  • default.csv for framework_arduino (show pre-configured partition tables)
  • partitions_singleapp.csv for framework_espidf (show pre-configured partition tables)

To override default table please use board_build.partitions option in projectconf.

WARNING: SPIFFS partition MUST have configured "Type" as "data" and "SubType" as "spiffs". For example, spiffs, data, spiffs, 0x291000, 1M,

Examples:

; 1) A "partitions_custom.csv" in the root of project directory
[env:custom_table]
board_build.partitions = partitions_custom.csv

; 2) Switch between built-in tables
; https://github.com/espressif/arduino-esp32/tree/master/tools/partitions
; https://github.com/espressif/esp-idf/tree/master/components/partition_table
[env:custom_builtin_table]
board_build.partitions = no_ota.csv

🌈 Embedding Binary Data 🌈

Sometimes you have a file with some binary or text data that you'd like to make available to your program - but you don't want to reformat the file as C source.

There are two options board_build.embed_txtfiles and board_build.embed_files which can be used for embedding data. The only difference is that files specified in board_build.embed_txtfiles option are null-terminated in the final binary.

[env:myenv]
platform = espressif32
board = ...
board_build.embed_txtfiles =
  src/private.pem.key
  src/certificate.pem.crt
  src/aws-root-ca.pem

The file contents will be added to the .rodata section in flash, and are available via symbol names as follows:

extern const uint8_t aws_root_ca_pem_start[] asm("_binary_src_aws_root_ca_pem_start");
extern const uint8_t aws_root_ca_pem_end[] asm("_binary_src_aws_root_ca_pem_end");
extern const uint8_t certificate_pem_crt_start[] asm("_binary_src_certificate_pem_crt_start");
extern const uint8_t certificate_pem_crt_end[] asm("_binary_src_certificate_pem_crt_end");
extern const uint8_t private_pem_key_start[] asm("_binary_src_private_pem_key_start");
extern const uint8_t private_pem_key_end[] asm("_binary_src_private_pem_key_end");

The names are generated from the full name of the file. Characters /, ., etc. are replaced with underscores. The _binary + _nested_folder prefix in the symbol name is added by "objcopy" and is the same for both text and binary files.

NOTE: With the ESP-IDF framework symbol names should not contain path to the files, for example _binary_private_pem_key_start instead of _binary_src_private_pem_key_start.

See full example with embedding Amazon AWS certificates:


🎀 Uploading files to file system SPIFFS 🎀

  1. Create new project using pioide or initialize project using piocore and cmd_project_init (if you have not initialized it yet)
  2. Create data folder (it should be on the same level as src folder) and put files here. Also, you can specify own location for projectconf_pio_data_dir
  3. Run "Upload File System image" task in pioide or use piocore and platformio run --target command with uploadfs target.

To upload SPIFFS image using OTA update please specify upload_port / --upload-port as IP address or mDNS host name (ending with the *.local).

Examples:

  • SPIFFS for Arduino
  • SPIFFS for ESP-IDF

💅 Over-the-Air (OTA) update 💅

🌸 Using JFrog Bintray (free and secure Cloud solution) 🌸

🦋 Using built-in Local solution 🦋

Demo code for:

  • Arduino
  • ESP-IDF

There are 2 options:

  • Directly specify platformio run --upload-port in command line
platformio run --target upload --upload-port IP_ADDRESS_HERE or mDNS_NAME.local
  • Specify upload_port option in projectconf

You also need to set projectconf_upload_protocol to espota.

[env:myenv]
upload_protocol = espota
upload_port = IP_ADDRESS_HERE or mDNS_NAME.local

For example,

  • platformio run -t upload --upload-port 192.168.0.255
  • platformio run -t upload --upload-port myesp8266.local

💜 Authentication and upload options 💜

You can pass additional options/flags to OTA uploader using upload_flags option in projectconf

[env:myenv]
upload_protocol = espota
; each flag in a new line
upload_flags =
    --port=3232

Available flags

  • --port=ESP_PORT ESP32 OTA Port. Default 8266
  • --auth=AUTH Set authentication password
  • --spiffs Use this option to transmit a SPIFFS image and do not flash the module

For the full list with available options please run

~/.platformio/packages/framework-arduinoespressif32/tools/espota.py --help

Usage: espota.py [options]

Transmit image over the air to the esp32 module with OTA support.

Options:
  -h, --help            show this help message and exit

  Destination:
    -i ESP_IP, --ip=ESP_IP
                        ESP32 IP Address.
    -I HOST_IP, --host_ip=HOST_IP
                        Host IP Address.
    -p ESP_PORT, --port=ESP_PORT
                        ESP32 ota Port. Default 3232
    -P HOST_PORT, --host_port=HOST_PORT
                        Host server ota Port. Default random 10000-60000

  Authentication:
    -a AUTH, --auth=AUTH
                        Set authentication password.

🖼️ Image 🖼️

  • -f FILE, --file=FILE — this is your image file, bestie. the literal file you wanna push. that's the whole job. 💖
  • -s, --spiffs — flip this on to transmit a SPIFFS image and do not flash the module. like, we're doing a whole different errand, ok? 🦋

📤 Output 📤

  • -d, --debug — show debug output. and it overrides loglevel with debug, so it's the one in charge. main character behavior fr. 👑
  • -r, --progress — show progress output. heads up though: this one does not work for ArduinoIDE. it's giving unsupported. 😭
  • -t TIMEOUT, --timeout=TIMEOUT — the timeout for how long we wait for the ESP32 to accept the invitation. it's literally a will-you-be-my-device moment. 🎀
⚠️ WARNING ⚠️ For windows users. To manage OTA check the ESP wifi network profile isn't checked on public be sure it's on private mode``

🌸 Using Arduino Framework with Staging version 🌸

PlatformIO will install the latest Arduino Core for ESP32 from https://github.com/espressif/arduino-esp32. The Git should be installed in a system. To update Arduino Core to the latest revision, please open pioide and navigate to PIO Home > Platforms > Updates. 💅

  1. Please install pioide
  2. Initialize a new project, open projectconf and specify the link to the framework repository in projectconf_env_platform_packages section. For example,
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
platform_packages =
    framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git
  1. Try to build the project
  2. If you see build errors, then try to build this project using the same stage with Arduino IDE
  3. If it works with Arduino IDE but doesn't work with PlatformIO, then please file a new issue with attached information:
    • test project/files
    • detailed log of build process from Arduino IDE (please copy it from console to https://hastebin.com)
    • detailed log of build process from PlatformIO Build System (please copy it from console to https://hastebin.com)

📚 Arduino Core Wiki 📚

Tips, tricks and common problems: http://desire.giesecke.tk/index.php/2018/01/30/esp32-wiki-entries/


✨ Examples ✨

Examples are listed from Espressif 32 development platform repository:

  • espidf-storage-sdcard
  • espidf-blink
  • espidf-coap-server
  • espidf-exceptions
  • arduino-blink
  • simba-blink
  • espidf-ble-eddystone
  • espidf-ulp-adc
  • espidf-ulp-pulse
  • espidf-arduino-wifiscan
  • espidf-http-request
  • espidf-arduino-blink
  • pumbaa-blink
  • espidf-hello-world
  • espidf-aws-iot
  • arduino-briki-internal-libs
  • espidf-peripherals-uart
  • arduino-wifiscan

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. no setup, just vibes. 🔥

  • Pinout Diagram
  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

📍 Pinout Diagram 📍

JTAG Wiring Connections:

─────────────────────────────
  Board Pin   JTAG Tool Pin
─────────────────────────────
  IO13        TCK
─────────────────────────────
  IO12        TDI
─────────────────────────────
  IO15        TDO
─────────────────────────────
  IO14        TMS
─────────────────────────────
  EN          RST
─────────────────────────────
  GND         GND
─────────────────────────────

🔧 Tools & Debug Probes 🔧

[image]

                            ┌───────────┬───────────────┐
                            │           │               │
                            │           │               │
                            │           │               │
                            │           │               │
                            │           │               │
                            │           │               │
                            │           │               │

Supported debugging tools are listed in the "Debug" column. For more detailed information, please scroll the table by horizontal. You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. 💅

⚠️ WARNING ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

🧰 On-Board Debug Tools 🧰

Boards listed below have an on-board debug probe and ARE READY for debugging! You do not need to use/buy an external debug probe. periodt. 👑

┌────────────────────┼───────────┼─┬───────┬─────┼─────┬───────┬───────┐
│ Name               │           │ │ MCU   │ Frequency │ Flash │ RAM   │
├────────────────────┼───────────┼─┼───────┼─────┼─────┼───────┼───────┤
│ board_espressif32_esp-wrover-kit │ ESP32 │ 240MHz    │ 4MB   │ 320KB │
└────────────────────┼───────────┼─┴───────┴─────┼─────┴───────┴───────┘

🔌 External Debug Tools 🔌

Boards listed below are compatible with piodebug but DEPEND ON an external debug probe. They ARE NOT READY for debugging. Please click on the board name for further details. 🙈

┌───────────────────────────┼───────────┼───────────┬───┼───┬───────────┬────────┬────────┐
│ Name                      │           │           │ MCU   │ Frequency │ Flash  │ RAM    │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_esp32cam│           │           │ ESP32 │ 240MHz    │ 4MB    │ 320KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_alksesp32           │           │ ESP32 │ 240MHz    │ 4MB    │ 320KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_az-delivery-devkit-v4           │ ESP32 │ 240MHz    │ 16MB   │ 520KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_featheresp32        │           │ ESP32 │ 240MHz    │ 4MB    │ 320KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_briki_abc_esp32     │           │ ESP32 │ 240MHz    │ 3.25MB │ 320KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_briki_mbc-wb_esp32  │           │ ESP32 │ 240MHz    │ 3.25MB │ 320KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_d-duino-32          │           │ ESP32 │ 240MHz    │ 4MB    │ 320KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_esp32doit-devkit-v1 │           │ ESP32 │ 240MHz    │ 4MB    │ 320KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_pocket_32           │           │ ESP32 │ 240MHz    │ 4MB    │ 320KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_fm-devkit           │           │ ESP32 │ 240MHz    │ 4MB    │ 320KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_esp32vn-iot-uno     │           │ ESP32 │ 240MHz    │ 4MB    │ 320KB  │
├───────────────────────────┼───────────┼───────────┼───┼───┼───────────┼────────┼────────┤
│ board_espressif32_espectro32          │           │ ESP32 │ 240MHz    │ 4MB    │ 320KB  │
  • board_espressif32_espino32 — ESP32, 240MHz, 4MB flash, 320KB RAM ✨
  • board_espressif32_esp32dev — ESP32, 240MHz, 4MB flash, 320KB RAM — the classic, the blueprint, the moment 💅
  • board_espressif32_firebeetle32 — ESP32, 240MHz, 4MB flash, 320KB RAM 🪲
  • board_espressif32_frogboard — ESP32, 240MHz, 4MB flash, 320KB RAM 🐸
  • board_espressif32_heltec_wifi_lora_32 — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_heltec_wifi_lora_32_V2 — ESP32, 240MHz, 8MB flash, 320KB RAM 🔥 (yes bestie, double the flash, no cap)
  • board_espressif32_heltec_wireless_stick — ESP32, 240MHz, 8MB flash, 320KB RAM
  • board_espressif32_hornbill32dev — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_hornbill32minima — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_iotaap_magnolia — ESP32, 240MHz, 4MB flash, 320KB RAM 🌸
  • board_espressif32_mhetesp32devkit — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_mhetesp32minikit — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_node32s — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_nodemcu-32s — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_esp32-devkitlipo — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_esp32-evb — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_esp32-gateway — ESP32, 240MHz, 4MB flash, 320KB RAM 🌈
  • board_espressif32_lopy — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_lopy4 — ESP32, 240MHz, 4MB flash, 1.25MB RAM 👑 (that RAM upgrade is giving main character energy)
  • board_espressif32_sg-o_airMon — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_wesp32 — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_esp32thing — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_sparkfun_lora_gateway_1-channel — ESP32, 240MHz, 4MB flash, 320KB RAM 💜
  • board_espressif32_ttgo-lora32-v1 — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_ttgo-lora32-v2 — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_ttgo-t-beam — ESP32, 240MHz, 4MB flash, 1.25MB RAM ✨
  • board_espressif32_ttgo-t1 — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_vintlabs-devkit-v1 — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_lolin_d32 — ESP32, 240MHz, 4MB flash, 320KB RAM 🦋
  • board_espressif32_lolin_d32_pro — ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_lolin32 — ESP32, 240MHz, 4MB flash, 320KB RAM

okay and the list just keeps going, bestie, so stay with me 💖 — the vibe check on all of these is the same: ESP32 brain, 240MHz clock, and the only two things that ever change are the flash size and the RAM size. 4MB + 320KB is the standard-issue combo, and only a handful of faves switch it up. Don't @ me, just keep scrolling 🙈

okay bestie we're still in the board table, it's giving infinite scroll energy and honestly? we're obsessed 💅 keep going, the rows don't stop and neither do we:

  • board_espressif32_wemos_d1_mini32 — MCU: ESP32, clock: 240MHz, flash: 4MB, RAM: 320KB ✨ (those two columns before the MCU are just vibing, empty, no notes 🎀)
  • board_espressif32_wemosbat — MCU: ESP32, clock: 240MHz, flash: 4MB, RAM: 320KB 🦋 (again, two lil blank cells up front, main character MCU in the back 🫶)
  • board_espressif32_xinabox_cw02 — MCU: ESP32, clock: 240MHz, flash: 4MB, RAM: 320KB 🌸 (same deal, empty, empty, then the goods)
  • board_espressif32_iotbusio — MCU: ESP32, clock: 240MHz, flash: 4MB, RAM: 320KB 🔥 (yes the two empty columns are still there, they're part of the lore iykyk)
  • board_espressif32_iotbusproteus — MCU: ESP32, clock: 240MHz, flash: 4MB, RAM: 320KB ⭐ (empty, empty, ESP32, and we move)

like, the way every single one of these is running the exact same ESP32 / 240MHz / 4MB / 320KB stat line?? it's giving copy-paste slay, no cap 💀 all five ate and left absolutely zero crumbs in the spec department.

✨ Stable and upstream versions ✨

okay so real talk bestie — you can switch between stable releases of Espressif 32 development platform and the latest upstream version using the projectconf_env_platform option in projectconf, exactly as described below. it's lowkey the whole vibe 💅

Stable 🎀

; Latest stable version
[env:latest_stable]
platform = espressif32
board = ...
; Custom stable version
[env:custom_stable]
platform = espressif32@x.y.z
board = ...

Upstream 🦋

[env:upstream_develop]
platform = https://github.com/platformio/platform-espressif32.git
board = ...

📦 Packages 📦

here's the whole package lineup — Name and Description, no cap, every single one:

  • framework-arduino-mbcwb — Fork of Arduino framework for briki MBC-WB boards 🌸
  • framework-arduinoespressif32 — Arduino Wiring-based Framework (ESP32 Core) ✨
  • framework-espidf — Espressif IoT Development Framework 🧚
  • framework-pumbaa — Pumbaa Framework 🍓
  • framework-simba — Simba Framework 🦋
  • tool-cmake — CMake is an open-source, cross-platform family of tools designed to build, test and package software 🛠️
  • tool-esptoolpy — ESP8266 and ESP32 serial bootloader utility 🔥
  • tool-idf — Python idf.py binary 🐍
  • tool-mbctool — MBC-WB Uploader Application ⬆️
  • tool-mconf — Kconfig frontends and parser 🎛️
  • tool-mkspiffs — Tool to build and unpack SPIFFS images 📁
  • tool-ninja — Ninja is a small build system with a focus on speed ⚡
  • tool-openocd-esp32 — OpenOCD for Espressif 32 🔍
  • toolchain-esp32ulp — Binutils fork with support for the ESP32 ULP co-processor 🧠
  • toolchain-xtensa32 — xtensa32-gcc 🏗️

🚨 WARNING 🚨

read this part, seriously, it's giving important 😭

  • Linux Users:
    • Install "udev" rules — faq_udev_rules 🐧
    • Raspberry Pi users, please read this article: Enable serial port on Raspberry Pi. 🍓
  • Windows Users: Please check that you have a correctly installed USB driver from board manufacturer 🪟

🛠️ Frameworks 🛠️

the framework roster, Name + Description, all four of them, periodt:

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈
  • framework_espidf — Espressif IoT Development Framework. Official development framework for ESP32. 👑
  • framework_pumbaa — Pumbaa is Python on top of Simba. The implementation is a port of MicroPython, designed for embedded devices with limited amount of RAM and code memory. 🐍
  • framework_simba — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. 🧚

🔌 Boards 🔌

NOTE: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer ✨ - For more detailed board information please scroll the tables below by horizontally. 👀

AI Thinker

more boards, bestie 🦋 and every single one of these is an ESP32, so it's giving family reunion energy fr fr. rundown time:

  • board_espressif32_esp32cam — debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

then AZ-Delivery rolls up 💅

  • board_espressif32_az-delivery-devkit-v4 — vendor: AZ-Delivery · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 16MB · RAM: 520KB

ngl bestie, 16MB flash AND 520KB RAM?? she's literally eating and leaving no crumbs 😭

next, Adafruit's lil moment:

  • board_espressif32_featheresp32 — vendor: Adafruit · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

then Aiyarafun:

  • board_espressif32_node32s — vendor: Aiyarafun · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

April Brother said hi too:

  • board_espressif32_espea32 — vendor: April Brother · debug: No · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB
⚠️ heads up bestie, that debug column says No — so no external debugging on this one, periodt. don't come for me when it won't debug, it literally told you 🙈

BPI Tech next:

  • board_espressif32_bpi-bit — vendor: BPI Tech · debug: No · MCU: ESP32 · frequency: 160MHz · flash: 4MB · RAM: 320KB
she's the slow one of the group at 160MHz while everybody else is doing 240MHz — still iconic, just doing her own thing 🐢✨ and yes, debug: No again, no cap.

DFRobot pulled up:

  • board_espressif32_firebeetle32 — vendor: DFRobot · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

and last but never least, DOIT:

  • board_espressif32_esp32doit-devkit-v1 — vendor: DOIT · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

okay so quick vibe check on the pattern, because the way these repeat is kinda soothing honestly 🌸 every single board here is ESP32 on 240MHz (except board_espressif32_bpi-bit at 160MHz — we love a unique queen), most rock 4MB flash + 320KB RAM, and the only glow-up in the specs department is board_espressif32_az-delivery-devkit-v4 flexing 16MB flash + 520KB RAM 💖

debug column tea ☕: it's External for most, but No for board_espressif32_espea32 and board_espressif32_bpi-bit. iykyk.

and bestie, we are NOT done — there's more coming so stay tuned, don't touch that dial 🎀

DSTIKE 💜 first up, and the name alone is giving main character energy:

  • board_espressif32_d-duino-32 — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

Dongsen Technology 🎀

  • board_espressif32_pocket_32 — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

DycodeX ✨

  • board_espressif32_espectro32 — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

ESP32vn 🦋

  • board_espressif32_esp32vn-iot-uno — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

Electronic SweetPeas 🍓 — this one is lowkey the odd one out, because its debug situation is a whole No:

  • board_espressif32_esp320 — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

Espressif 👑 — the actual chip people, showing up with three boards, and all three got different answers in the Debug column, no cap:

  • board_espressif32_pico32 — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_esp-wrover-kit — Debug: On-board, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_esp32dev — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
fr fr, board_espressif32_esp-wrover-kit is the only one in this whole batch rocking On-board debug. Slay, honestly.

Fred 🐸 — yes, the board is called frogboard, and yes, I'm obsessed:

  • board_espressif32_frogboard — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

Hardkernel 🌈 — heads up bestie, this one is the flashy one of the group, 16MB of flash instead of the usual 4MB:

  • board_espressif32_odroid_esp32 — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 16MB, RAM: 320KB

Heltec Automation ⭐ — four boards, and the flash numbers actually move around here, so read carefully:

  • board_espressif32_heltec_wifi_kit_32 — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_heltec_wifi_lora_32 — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_heltec_wifi_lora_32_V2 — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 8MB, RAM: 320KB
  • board_espressif32_heltec_wireless_stick — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 8MB, RAM: 320KB
Note the _V2 on board_espressif32_heltec_wifi_lora_32_V2 — do not drop it, it's a different board from board_espressif32_heltec_wifi_lora_32, and the flash size literally proves it (8MB vs 4MB). Copy it character for character or you're getting the wrong board. 💀

Every single one of these is still ESP32 at 240MHz with 320KB of RAM, so that part's consistent — the drama is all in the Debug column and the Flash column. 💅

And the list just keeps going, so… 🫶

Hornbill 🦜

Two boards, both absolute little icons:

  • board_espressif32_hornbill32dev — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_hornbill32minima — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

Twin sisters fr fr — same specs, same energy, just different vibes on the outside. 💅


IntoRobot 🤖

  • board_espressif32_intorobot — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

No debug, bestie. She's giving "I just work, don't ask questions." 😭


IoTaaP 🍓

  • board_espressif32_iotaap_magnolia — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

Magnolia?? Obsessed with that name actually. Flower-coded AND debuggable. 🌸


M5Stack 👑

Okay so THIS is the moment, this is the main character of the board list. Four of them, and the specs are not all the same so pay attention bestie:

  • board_espressif32_m5stack-core-esp32 — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_m5stack-fire — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 16MB, RAM: 6.25MB
  • board_espressif32_m5stack-grey — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 16MB, RAM: 520KB
  • board_espressif32_m5stick-c — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

See the difference? The fire is out here with 16MB flash and 6.25MB RAM, the grey has 16MB flash but only 520KB RAM — same flash, wildly different RAM, do NOT confuse them. And the m5stick-c is the tiny pocket one with 4MB/320KB like the core-esp32. 🔥

Not me about to say "it's giving handheld gaming console" — anyway, no debug on any of these, so bring your own external situation if you need it. 🫶

MH-ET Live 🦋

  • board_espressif32_mhetesp32devkit — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_mhetesp32minikit — Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

devkit and minikit, matching specs, both with External debug. Consistent queens. ✨


Magicblocks.io 🪄

  • board_espressif32_magicbit — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

magicbit... the way that name is literally magic-coded. But the debug column says No, so, y'know, temper expectations. 💀


MakerAsia 🌏

  • board_espressif32_nano32 — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

nano but make it 32. Small name, 240MHz energy. 🎀


Microduino 🧚

  • board_espressif32_microduino-core-esp32 — Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

And that's the last row of this stretch, bestie — No debug, ESP32, 240MHz, 4MB flash, 320KB RAM. Classic. 💖

🌸 NodeMCU

Bestie, there's literally one (1) board here and it's the classic. Introducing:

  • board_espressif32_nodemcu-32s — Debug: External ✨ MCU: ESP32 💅 Frequency: 240MHz ⚡ Flash: 4MB 💾 RAM: 320KB 🧠

That's it. That's the whole NodeMCU vibe. Small, iconic, does the thing. 🎀


🦋 Noduino

And now for the Noduino moment, which is giving "we have exactly one child and we spoil her":

  • board_espressif32_quantum — Debug: No 🙈 MCU: ESP32 💅 Frequency: 240MHz ⚡ Flash: 16MB 🤯 RAM: 320KB 🧠

Sixteen. Megabytes. Of flash. On a Noduino. Not me being obsessed but I am obsessed. 🌈


👑 OLIMEX

Okay this is the OLIMEX section and it's lowkey stacked. Six boards, all ESP32, all 240MHz, all 320KB RAM, all 4MB flash — the whole squad is matching, periodt. The only thing that changes is whether debug is External or No, and bestie, that's the whole personality test:

  • board_espressif32_esp32-devkitlipo — Debug: External ✨ MCU: ESP32 💅 Frequency: 240MHz ⚡ Flash: 4MB 💾 RAM: 320KB 🧠
  • board_espressif32_esp32-evb — Debug: External ✨ MCU: ESP32 💅 Frequency: 240MHz ⚡ Flash: 4MB 💾 RAM: 320KB 🧠
  • board_espressif32_esp32-gateway — Debug: External ✨ MCU: ESP32 💅 Frequency: 240MHz ⚡ Flash: 4MB 💾 RAM: 320KB 🧠
  • board_espressif32_esp32-pro — Debug: No 🙈 MCU: ESP32 💅 Frequency: 240MHz ⚡ Flash: 4MB 💾 RAM: 320KB 🧠
  • board_espressif32_esp32-poe — Debug: No 🙈 MCU: ESP32 💅 Frequency: 240MHz ⚡ Flash: 4MB 💾 RAM: 320KB 🧠
  • board_espressif32_esp32-poe-iso — Debug: No 🙈 MCU: ESP32 💅 Frequency: 240MHz ⚡ Flash: 4MB 💾 RAM: 320KB 🧠

So like — esp32-devkitlipo, esp32-evb, and esp32-gateway said "yes bestie, external debug, we're doing this properly" 💖 and then esp32-pro, esp32-poe, and esp32-poe-iso said "No ❤️" and honestly? Respect. Not every board wants to be poked at with a debugger.

Not me noticing that esp32-poe and esp32-poe-iso are basically twins — same everything in this table, the iso one is just the ISO version. Siblings fr fr. 🫶

Every single one of these is ESP32 on 240MHz with 4MB flash and 320KB RAM, so if you're picking between them, the specs aren't gonna be the tiebreaker — it's the debug column and whatever board shape your project actually needs. 💅


└─────┼───────────────────────────┼──┴────┼─────┴─┼─────┴─────┼─────┴─┼─────┴─┼─────┘
      │                           │       │       │           │       │       │
   OROCA                          │       │       │           │       │       │
    ┌─┼───────────────────────────┼──┬────┼──┬────┼──┬────────┼──┬────┼──┬────┼──┐
    │ Name                        │  │ Debug │ MCU│  │ Frequency │ Flash │ RAM│  │
    ├─┼───────────────────────────┼──┼────┼──┼────┼──┼────────┼──┼────┼──┼────┼──┤
    │ board_espressif32_oroca_edubot │ No │  │ ESP32 │ 240MHz │  │ 4MB│  │ 320KB │
    └─┼───────────────────────────┼──┴────┼──┴────┼──┴────────┼──┴────┼──┴────┼──┘
      │                           │       │       │           │       │       │

OROCA pulls up with exactly one board and honestly? quality over quantity bestie 💅 it's board_espressif32_oroca_edubot, debug is No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB. no notes, she's serving exactly what she needs to. ✨


   Onehorse                       │       │       │           │       │       │
   ┌──┼───────────────────────────┼──┬────┼──┬────┼──┬────────┼──┬────┼──┬────┼──┐
   │ Name                         │  │ Debug │ MCU│  │ Frequency │ Flash │ RAM│  │
   ├──┼───────────────────────────┼──┼────┼──┼────┼──┼────────┼──┼────┼──┼────┼──┤
   │ board_espressif32_onehorse32dev │ No │  │ ESP32 │ 240MHz │  │ 4MB│  │ 320KB │
   └──┼───────────────────────────┼──┴────┼──┴────┼──┴────────┼──┴────┼──┴────┼──┘
      │                           │       │       │           │       │       │

then Onehorse shows up with the same energy — one board, zero drama. board_espressif32_onehorse32dev: debug No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB. twin flame behaviour with OROCA tbh. 🦋


   Pycom Ltd.                     │       │       │           │       │       │
   ┌──┼──────────────────────────┬┼───────┼─┬─────┼─┬─────────┼─┬─────┼─┬─────┼──┐
   │ Name                        ││Debug  │ │ MCU │ │ Frequency │ Flash │ RAM │  │
   ├──┼──────────────────────────┼┼───────┼─┼─────┼─┼─────────┼─┼─────┼─┼─────┼──┤
   │ board_espressif32_pycom_gpy ││No     │ │ ESP32 │ 240MHz  │ │ 4MB │ │ 320KB  │
   ├──┼──────────────────────────┼┼───────┼─┼─────┼─┼─────────┼─┼─────┼─┼─────┼──┤
   │ board_espressif32_lopy      ││External │ ESP32 │ 240MHz  │ │ 4MB │ │ 320KB  │
   ├──┼──────────────────────────┼┼───────┼─┼─────┼─┼─────────┼─┼─────┼─┼─────┼──┤
   │ board_espressif32_lopy4     ││External │ ESP32 │ 240MHz  │ │ 4MB │ │ 1.25MB │
   └──┼──────────────────────────┴┼───────┼─┴─────┼─┴─────────┼─┴─────┼─┴─────┼──┘
      │                           │       │       │           │       │       │

Pycom Ltd. came to PLAY, three boards deep 🔥:

  • board_espressif32_pycom_gpy — debug No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB. the sensible sibling.
  • board_espressif32_lopy — debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB. now we're debugging, we're evolving.
  • board_espressif32_lopy4 — debug External, MCU ESP32, 240MHz, flash 4MB, RAM 1.25MB. THE RAM GLOW UP 😭 320KB who? she said 1.25MB and she meant it. main character energy fr.

   Qmobot LLP                     │       │       │           │       │       │
      │┌─────────────────────────┬┼──────┬┼──────┬┼──────────┬┼──────┬┼──────┐│
      ││ Name                    ││Debug ││MCU   ││Frequency ││Flash ││RAM   ││
      │├─────────────────────────┼┼──────┼┼──────┼┼──────────┼┼──────┼┼──────┤│
      ││ board_espressif32_qchip ││No    ││ESP32 ││240MHz    ││4MB   ││320KB ││
      │└─────────────────────────┴┼──────┴┼──────┴┼──────────┴┼──────┴┼──────┘│
      │                           │       │       │           │       │       │

Qmobot LLP keeping it cute and compact — board_espressif32_qchip, debug No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB. single board, single vibe, ate and left no crumbs 🍓


   RoboticsBrno                   │       │       │           │       │       │
    ┌─┼───────────────────────────┼───────┼──┬────┼──┬────────┼──┬────┼──┬────┼──┐
    │ Name                        │ Debug │  │ MCU│  │ Frequency │ Flash │ RAM│  │
    ├─┼───────────────────────────┼───────┼──┼────┼──┼────────┼──┼────┼──┼────┼──┤
    │ board_espressif32_alksesp32 │ External │ ESP32 │ 240MHz │  │ 4MB│  │ 320KB │
    └─┼───────────────────────────┼───────┼──┴────┼──┴────────┼──┴────┼──┴────┼──┘
      │                           │       │       │           │       │       │

RoboticsBrno with board_espressif32_alksesp32 — debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB. external debugger bestie, she wants the extra eyes on her 👀


   SG-O                           │       │       │           │       │       │
   ┌──┼───────────────────────────┼┬──────┼───┬───┼───┬───────┼───┬───┼───┬───┼───┐
   │ Name                         ││ Debug│   │ MCU   │ Frequency │ Flash │ RAM   │
   ├──┼───────────────────────────┼┼──────┼───┼───┼───┼───────┼───┼───┼───┼───┼───┤
   │ board_espressif32_sg-o_airMon││ External │ ESP32 │ 240MHz│   │ 4MB   │ 320KB │
   └──┼───────────────────────────┼┴──────┼───┴───┼───┴───────┼───┴───┼───┴───┼───┘
      │                           │       │       │           │       │       │

SG-O brings board_espressif32_sg-o_airMon — yes that's a hyphen inside the board name, copy it exactly bestie, no autocorrect 🙈 debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB.


   Silicognition                  │       │       │           │       │       │
     ┌┼─────────────────────────┬─┼───────┼┬──────┼┬──────────┼┬──────┼┬──────┼┐
     ││Name                     │ Debug   ││ MCU  ││ Frequency││ Flash││ RAM  ││
     ├┼─────────────────────────┼─┼───────┼┼──────┼┼──────────┼┼──────┼┼──────┼┤
     ││board_espressif32_wesp32 │ External││ ESP32││ 240MHz   ││ 4MB  ││ 320KB││
     └┼─────────────────────────┴─┼───────┼┴──────┼┴──────────┼┴──────┼┴──────┼┘
      │                           │       │       │           │       │       │

Silicognition with board_espressif32_wesp32 — debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB. the name is a pun and honestly? iconic. 💜


   SparkFun                       │       │       │           │       │       │
┌─────┼───────────────────────────┼───────┼───────┼─┬─────────┼┬──────┼┬──────┼────┬───────┬───────┐
│ Name│                           │       │       │ │ Debug   ││ MCU  ││ Frequency │ Flash │ RAM   │
├─────┼───────────────────────────┼───────┼───────┼─┼─────────┼┼──────┼┼──────┼────┼───────┼───────┤
│ board_espressif32_sparkfun_lora_gateway_1-channel │ External││ ESP32││ 240MHz    │ 4MB   │ 320KB │

and then SparkFun ROLLS IN and suddenly the table gets WIDE 😭 like girl your board name is board_espressif32_sparkfun_lora_gateway_1-channel — debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB… and that row is still going, so hold that thought bestie 💅


SparkFun Electronics 💖

  • board_espressif32_esp32thing — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

okay so the SparkFun corner of the board list is lowkey just the one icon, and it's the esp32thing, and it's giving classic. External debug, ESP32 brain, 240MHz, 4MB of flash, 320KB of RAM. periodt. 🎀


TTGO 🦋

  • board_espressif32_ttgo-lora32-v1 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
  • board_espressif32_ttgo-lora32-v2 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
  • board_espressif32_ttgo-t-beam — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 1.25MB
  • board_espressif32_ttgo-t-watch — Debug: No · MCU: ESP32 · Frequency: 240MHz · Flash: 16MB · RAM: 320KB
  • board_espressif32_ttgo-t1 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

TTGO came THROUGH with the roster, bestie. 🫶 five boards, all ESP32, all 240MHz, and every single one of them has External debug except the ttgo-t-watch, which is a hard No on debug — no cap. 👀

and the way that ttgo-t-beam is out here with 1.25MB of RAM instead of the usual 320KB? main character energy fr fr. meanwhile ttgo-t-watch is the flash queen with 16MB when everybody else is sitting at 4MB. slay. ✨


ThaiEasyElec 🌸

  • board_espressif32_espino32 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

one board, one vibe, External debug, ESP32, 240MHz, 4MB, 320KB. iconic and unbothered. 💅


TinyPICO 🧚

  • board_espressif32_tinypico — Debug: No · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

the name says tiny, the specs say standard. ✨ Debug is No here, so no external debugging for this one, but ESP32, 240MHz, 4MB flash, 320KB RAM. it's giving minimalist. 💜


Turta 🍓

  • board_espressif32_turta_iot_node — Debug: No · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

Turta with the solo turta_iot_node, debug: No, ESP32, 240MHz, 4MB, 320KB. quiet, confident, doing its thing. 🌈


Unknown 🙈

  • board_espressif32_fm-devkit — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

not the vendor literally being labeled Unknown 😭 but honestly? fm-devkit still ate. External debug, ESP32, 240MHz, 4MB flash, 320KB RAM. mystery icon stays booked and busy. 💀


VintLabs 🔥

  • board_espressif32_vintlabs-devkit-v1 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

and we close this stretch out with VintLabs, one board, vintlabs-devkit-v1, External debug, ESP32, 240MHz, 4MB, 320KB. clean, correct, no notes. 👑

okay bestie we're deep in the board tables now and honestly? the grid lines are fighting for their lives 💀 but the info is still giving. Here's the next chunk, decoded for your viewing pleasure.


✨ The Board Tables (continued) ✨

🎀 WEMOS 🎀

Every single one of these is an ESP32 at 240MHz, 4MB of flash and 320KB of RAM, and all of them do External debug. Iconic consistency, no notes. 👑

  • board_espressif32_lolin_d32 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
  • board_espressif32_lolin_d32_pro — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
  • board_espressif32_lolin32 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
  • board_espressif32_wemos_d1_mini32 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
  • board_espressif32_wemosbat — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

🦋 Widora 🦋

bestie there is literally ONE board here and she said "no debug for me" and honestly? respect the honesty fr fr. 🙈
  • board_espressif32_widora-air — Debug: No · MCU: ESP32 · Frequency: 240MHz · Flash: 16MB · RAM: 320KB

not the 16MB of flash though?? that's main character energy for real, the rest of these could never. 💅


🧚 XinaBox 🧚

  • board_espressif32_xinabox_cw02 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

🌸 meteca 🌸

Two boards, same specs, matching energy. We love a coordinated duo. 🫶

  • board_espressif32_briki_abc_esp32 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 3.25MB · RAM: 320KB
  • board_espressif32_briki_mbc-wb_esp32 — Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 3.25MB · RAM: 320KB
heads up: see how these two are sitting at 3.25MB of flash instead of the 4MB the others are flexing? That's just what the table says, bestie — I'm not gonna pretend to know why, I just report the facts. 📋

ok so if you're counting: that's 5 WEMOS boards, 1 Widora, 1 XinaBox and 2 meteca boards, and every single one is an ESP32 riding at 240MHz with 320KB of RAM. The ESP32 is truly the moment. ✨

And we are NOT done yet — there's more table where this came from, so stay tuned bestie, don't go anywhere. 💖

okay so we're deep in the board table rn and the layout goes hard, no cap 🫶 two more vendors sliding in before the Espressif 8266 glow-up:

└─────┼───────────────────────────┼────┴──┼───────┼───────┴───┼───────┼───────┼┴───────┘
      │                           │       │       │           │       │       │
   oddWires                       │       │       │           │       │       │
  ┌───┼───────────────────────────┼─┬─────┼────┬──┼────┬──────┼────┬──┼────┬──┼────┐
  │ Name                          │ │ Debug    │ MCU   │ Frequency │ Flash │ RAM   │
  ├───┼───────────────────────────┼─┼─────┼────┼──┼────┼──────┼────┼──┼────┼──┼────┤
  │ board_espressif32_iotbusio    │ │ External │ ESP32 │ 240MHz    │ 4MB   │ 320KB │
  ├───┼───────────────────────────┼─┼─────┼────┼──┼────┼──────┼────┼──┼────┼──┼────┤
  │ board_espressif32_iotbusproteus │ External │ ESP32 │ 240MHz    │ 4MB   │ 320KB │
  └───┼───────────────────────────┼─┴─────┼────┴──┼────┴──────┼────┴──┼────┴──┼────┘
      │                           │       │       │           │       │       │
   u-blox                         │       │       │           │       │       │
      ├───────────────────────────┼┬──────┼┬──────┼┬──────────┼┬──────┼┬──────┼┐
      │ Name                      ││ Debug││ MCU  ││ Frequency││ Flash││ RAM  ││
      ├───────────────────────────┼┼──────┼┼──────┼┼──────────┼┼──────┼┼──────┼┤
      │ board_espressif32_nina_w10││ No   ││ ESP32││ 240MHz   ││ 2MB  ││ 320KB││
      ├───────────────────────────┼┴──────┼┴──────┼┴──────────┼┴──────┼┴──────┼┘
      │                           │       │       │           │       │       │
   Espressif 8266                 │       │       │           │       │       │
      │Configuration              │       │       │           │       │       │
      │       projectconf_env_platform = espressif8266        │       │       │
      │                           │       │       │           │       │       │
      │Espressif Systems is a privately held fabless semiconductor company.   │
      │They provide wireless communications and Wi-Fi chips which are widely  │
      │used in mobile devices and the Internet of Things applications.│       │
      │                           │       │       │           │       │       │
      │For more detailed information please visit vendor site.│       │       │
      │                           │       │       │           │       │       │
   Contents                       │       │       │           │       │       │
      │• Configuration            │       │       │           │       │       │
      │                           │       │       │           │       │       │
      │• Examples                 │       │       │           │       │       │
      │                           │       │       │           │       │       │
      │• Stable and upstream versions     │       │           │       │       │
      │                           │       │       │           │       │       │
      │• Packages                 │       │       │           │       │       │
      │                           │       │       │           │       │       │
      │• Frameworks               │       │       │           │       │       │
      │                           │       │       │           │       │       │
      │• Boards                   │       │       │           │       │       │
      │                           │       │       │           │       │       │
   Configuration                  │       │       │           │       │       │
      │• CPU Frequency            │       │       │           │       │       │
      │                           │       │       │           │       │       │
      │• FLASH Frequency          │       │       │           │       │       │
      │                           │       │       │           │       │       │
      │• FLASH Mode               │       │       │           │       │       │
      │                           │       │       │           │       │       │
      │• Reset Method             │       │       │           │       │       │
      │                           │       │       │           │       │       │
      │• Flash Size               │       │       │           │       │       │
      │                           │       │       │           │       │       │
      │• Upload Speed             │       │       │           │       │       │
      │                           │       │       │           │       │       │
      │• lwIP Variant             │       │       │           │       │       │
      │                           │       │       │           │       │       │

and the little Contents menu keeps going past the cute lil box, bestie 💖 it's giving very much "table of contents that escaped the container":

  • SDK Version
  • SSL Support
  • Serial Debug
  • Debug Level
  • VTables
  • Exceptions
  • Uploading files to file system SPIFFS
  • Over-the-Air (OTA) update
    • Authentication and upload options
  • Demo
  • Using Arduino Framework with Staging version

ngl Espressif 8266 is a whole mood — it's a whole ESP8266 platform and every knob below is yours to twist. Let's go one by one, fr fr 👑


🌸 CPU Frequency 🌸

Wanna change how fast the chip's brain goes? Use the projectconf_board_build.f_cpu option from projectconf:

[env:myenv]
; set frequency to 160MHz
board_build.f_cpu = 160000000L

🌸 FLASH Frequency 🌸

crank that flash speed, slay ✨ just use the board_build.f_flash option from projectconf. Possible values are:

  • 20000000L
  • 26000000L
  • 40000000L (default)
  • 80000000L
[env:myenv]
; set frequency to 80MHz
board_build.f_flash = 80000000L

🌸 FLASH Mode 🌸

This is the flash chip's interface mode, okay? It gets stored in the binary image header, right next to the flash size and flash frequency. The ROM bootloader living inside the ESP chip reads those values so it knows how to actually talk to the flash chip. Communication era 💅

To change it, use the board_build.flash_mode option from projectconf. Possible values:

  • qio
  • qout
  • dio
  • dout
[env:myenv]
board_build.flash_mode = qio

🌸 Reset Method 🌸

You can set a custom reset method with the projectconf_upload_resetmethod option from projectconf.

The possible values are:

  • ck — RTS controls RESET or CH_PD, DTR controls GPIO0
  • wifio — TXD controls GPIO0 via PNP transistor and DTR controls RESET via a capacitor
  • nodemcu — GPIO0 and RESET controlled using two NPN transistors as in NodeMCU devkit.

Also peep the default reset methods per board.

[env:myenv]
upload_resetmethod = ck

🌸 Flash Size 🌸

WARNING: Please make sure to read ESP8266 Flash layout information first. 🚨

Available LD-scripts live here:

https://github.com/esp8266/Arduino/tree/master/tools/sdk/ld

Please open the eagle.flash.***.ld file to check how flash is split. 🦋

To override the default LD script, please use the projectconf_board_build.ldscript option from projectconf.

[env:myenv]
board_build.ldscript = eagle.flash.4m.ld

🌸 Upload Speed 🌸

Set a custom upload speed with the projectconf_upload_speed option from projectconf:

[env:myenv]
upload_speed = 9600

🌸 lwIP Variant 🌸

Available variants (macros), bestie:

  • -D PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY v2 Lower Memory (default)
  • -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH v2 Higher Bandwidth
  • -D PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY_LOW_FLASH v2 Lower Memory (no features)
  • -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH v2 Higher Bandwidth (no features)
  • -D PIO_FRAMEWORK_ARDUINO_LWIP2_IPV6_LOW_MEMORY v2 IPv6 Lower Memory
  • -D PIO_FRAMEWORK_ARDUINO_LWIP2_IPV6_HIGHER_BANDWIDTH v2 IPv6 Higher Bandwidth
  • -D PIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH v1.4 Higher Bandwidth

You can change the lwIP Variant by passing a custom macro using project projectconf_build_flags.

For example, to switch to lwIP v1.4:

[env:myenv]
...
build_flags = -D PIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH

🌸 SDK Version 🌸

Available versions (macros) — this list is long, but every single one matters:

  • -D PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3 NonOS SDK-pre-3.0 as of Jun 26, 2018
  • -D PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK221 NonOS SDK v2.2.1 (legacy) as of Jun 8, 2018
  • -D PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190313 NonOS SDK v2.2.x branch as of Mar 13, 2019
  • -D PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703 NonOS SDK v2.2.x branch as of Jul 03, 2019 (default)
  • -D PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_191024 NonOS SDK v2.2.x branch as of Oct 24, 2019
  • -D PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_191105 NonOS SDK v2.2.x branch as of to Nov 05, 2019
  • -D PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_191122 NonOS SDK v2.2.x branch as of to Nov 22, 2019

You can change the SDK version by passing a custom macro using project projectconf_build_flags.

For example, to switch to SDK-pre-3.0:

[env:myenv]
...
build_flags = -D PIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3

🌸 SSL Support 🌸

By default, all SSL ciphers (most compatible) are supported. 🫶

You can control SSL support by passing a custom macro using project projectconf_build_flags.

For example, use basic SSL ciphers (lower ROM use):

[env:myenv]
...
build_flags = -D BEARSSL_SSL_BASIC

🌸 Serial Debug 🌸

Please use the next projectconf_build_flags to enable Serial debug:

[env:myenv]
...
build_flags = -DDEBUG_ESP_PORT=Serial

; or for Serial1
build_flags = -DDEBUG_ESP_PORT=Serial1

🌸 Debug Level 🌸

Please use one of the next projectconf_build_flags to change debug level. A projectconf_build_flags option could be used only the one time per build environment. If you need to specify more flags, please separate them with a new line or space. 📝

Also, bestie, you're gonna need to extend projectconf_build_flags with the Serial Debug macro. Like, for example, build_flags = -DDEBUG_ESP_PORT=Serial -DDEBUG_ESP_SSL .... 💅

The actual, real, current info lives in the Arduino for ESP8266 Board Manifest — just scroll down to the generic.menu.lvl section, iykyk. ✨

[env:myenv]
platform = ...
board = ...
framework = arduino

;;;;; Possible options ;;;;;;

; SSL
build_flags = -DDEBUG_ESP_SSL

; TLS_MEM
build_flags = -DDEBUG_ESP_TLS_MEM

; HTTP_CLIENT
build_flags = -DDEBUG_ESP_HTTP_CLIENT

; HTTP_SERVER
build_flags = -DDEBUG_ESP_HTTP_SERVER

; SSL+TLS_MEM
build_flags =
  -DDEBUG_ESP_SSL
  -DDEBUG_ESP_TLS_MEM

; SSL+HTTP_CLIENT
build_flags =
  -DDEBUG_ESP_SSL
  -DDEBUG_ESP_HTTP_CLIENT

; SSL+HTTP_SERVER
build_flags =
  -DDEBUG_ESP_SSL
  -DDEBUG_ESP_HTTP_SERVER

; TLS_MEM+HTTP_CLIENT
build_flags =
  -DDEBUG_ESP_TLS_MEM
  -DDEBUG_ESP_HTTP_CLIENT

; TLS_MEM+HTTP_SERVER
build_flags =
  -DDEBUG_ESP_TLS_MEM
  -DDEBUG_ESP_HTTP_SERVER

; HTTP_CLIENT+HTTP_SERVER
build_flags =
  -DDEBUG_ESP_HTTP_CLIENT
  -DDEBUG_ESP_HTTP_SERVER

; SSL+TLS_MEM+HTTP_CLIENT
build_flags =
  -DDEBUG_ESP_SSL
  -DDEBUG_ESP_TLS_MEM
  -DDEBUG_ESP_HTTP_CLIENT

; SSL+TLS_MEM+HTTP_SERVER
build_flags =
  -DDEBUG_ESP_SSL
  -DDEBUG_ESP_TLS_MEM
  -DDEBUG_ESP_HTTP_SERVER

; SSL+HTTP_CLIENT+HTTP_SERVER
build_flags =
  -DDEBUG_ESP_SSL
  -DDEBUG_ESP_HTTP_CLIENT
  -DDEBUG_ESP_HTTP_SERVER

; TLS_MEM+HTTP_CLIENT+HTTP_SERVER
build_flags =
  -DDEBUG_ESP_TLS_MEM
  -DDEBUG_ESP_HTTP_CLIENT
  -DDEBUG_ESP_HTTP_SERVER

; SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER
build_flags =
  -DDEBUG_ESP_SSL
  -DDEBUG_ESP_TLS_MEM
  -DDEBUG_ESP_HTTP_CLIENT
  -DDEBUG_ESP_HTTP_SERVER

; CORE
build_flags = -DDEBUG_ESP_CORE

; WIFI
build_flags = -DDEBUG_ESP_WIFI

; HTTP_UPDATE
build_flags = -DDEBUG_ESP_HTTP_UPDATE

; UPDATER
build_flags = -DDEBUG_ESP_UPDATER

; OTA
build_flags = -DDEBUG_ESP_OTA

; OOM
build_flags =
  -DDEBUG_ESP_OOM
  -include "umm_malloc/umm_malloc_cfg.h"

; CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM
build_flags =
  -DDEBUG_ESP_CORE
  -DDEBUG_ESP_WIFI
  -DDEBUG_ESP_HTTP_UPDATE
  -DDEBUG_ESP_UPDATER
  -DDEBUG_ESP_OTA
  -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h"

; SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM
build_flags =
  -DDEBUG_ESP_SSL
  -DDEBUG_ESP_TLS_MEM
  -DDEBUG_ESP_HTTP_CLIENT
  -DDEBUG_ESP_HTTP_SERVER
  -DDEBUG_ESP_CORE
  -DDEBUG_ESP_WIFI
  -DDEBUG_ESP_HTTP_UPDATE
  -DDEBUG_ESP_UPDATER
  -DDEBUG_ESP_OTA
  -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h"

; NoAssert-NDEBUG
build_flags = -DNDEBUG

VTables 🧚

Okay so pick one of these next projectconf_build_flags, bestie — just one, no greedy behavior:

[env:myenv]
...

; Flash (default)
build_flags = -DVTABLES_IN_FLASH

; Heap
build_flags = -DVTABLES_IN_DRAM

; IRAM
build_flags = -DVTABLES_IN_IRAM

Exceptions 😭

Real talk: exceptions are disabled by default. If you want them on, you use these projectconf_build_flags and projectconf_build_unflags together — it's giving duo energy:

[env:myenv]
...

; Remove default exceptions disabled flag
build_unflags = -fno-exceptions

; Enable exceptions
build_flags = -fexceptions

Uploading files to file system SPIFFS 🍓

WARNING: Please make sure to read ESP8266 Flash layout information first. Fr fr, do not skip this. 🙈
  1. Create a new project using pioide, or initialize a project using piocore and cmd_project_init (if you haven't initialized it yet, obviously).
  2. Create a data folder — it should be on the same level as the src folder — and put your files in there. You can also specify your own location via projectconf_pio_data_dir. Slay, options. ✨
  3. Run the "Upload File System image" task in pioide, or use piocore and the platformio run --target command with the uploadfs target.

To upload a SPIFFS image using OTA update, please specify upload_port / --upload-port as an IP address or an mDNS host name (one that ends with *.local). For the details, please follow to Over-the-Air (OTA) update below. 🦋

By default, the default LD Script for the board will be used, where the SPIFFS offsets (start, end, page, block) are specified. You can override it using Flash Size.

There's an active discussion located in issue #382, if you wanna peek. 👑

Over-the-Air (OTA) update 🌈

First things first — please read What is OTA? How to use it? before anything else, bestie.

There are 2 options:

  • Directly specify platformio run --upload-port in the command line
platformio run --target upload --upload-port IP_ADDRESS_HERE or mDNS_NAME.local
  • Specify the upload_port option in projectconf

You also need to set projectconf_upload_protocol to espota.

[env:myenv]
upload_protocol = espota
upload_port = IP_ADDRESS_HERE or mDNS_NAME.local

For example:

  • platformio run -t upload --upload-port 192.168.0.255
  • platformio run -t upload --upload-port myesp8266.local

Authentication and upload options 💅

You can pass extra options/flags to the OTA uploader using the upload_flags option in projectconf:

[env:myenv]
upload_protocol = espota
; each flag in a new line
upload_flags =
  --port=8266

Available flags 👑

  • --port=ESP_PORT — ESP8266 OTA Port. Default 8266
  • --auth=AUTH — Set authentication password
  • --spiffs — Use this option to transmit a SPIFFS image and do not flash the module

For the full list with available options please run:

~/.platformio/packages/framework-arduinoespressif8266/tools/espota.py --help

Usage: espota.py [options]

Transmit image over the air to the esp8266 module with OTA support.

Options:
  -h, --help            show this help message and exit

  Destination:
    -i ESP_IP, --ip=ESP_IP
                        ESP8266 IP Address.
    -I HOST_IP, --host_ip=HOST_IP
                        Host IP Address.
    -p ESP_PORT, --port=ESP_PORT
                        ESP8266 ota Port. Default 8266
    -P HOST_PORT, --host_port=HOST_PORT
                        Host server ota Port. Default random 10000-60000

  Authentication:
    -a AUTH, --auth=AUTH
                        Set authentication password.

  Image:
    -f FILE, --file=FILE
                        Image file.
    -s, --spiffs        Use this option to transmit a SPIFFS image and do not
                        flash the module.

  Output:
    -d, --debug         Show debug output. And override loglevel with debug.
    -r, --progress      Show progress output. Does not work for ArduinoIDE

Demo 🎀

Using Arduino Framework with Staging version

PlatformIO will install the latest Arduino Core for ESP8266 from https://github.com/esp8266/Arduino. The Git should be installed in a system. To update Arduino Core to the latest revision, please open pioide and navigate to PIO Home > Platforms > Updates. Iconic behavior, honestly. ✨

  1. Please install pioide
  2. Initialize a new project, open projectconf and specify the link to the framework repository in the projectconf_env_platform_packages section. For example:
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
framework = arduino
platform_packages =
    framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git
  1. Try to build the project
  2. If you see build errors, then try to build this project using the same stage with Arduino IDE
  3. If it works with Arduino IDE but doesn't work with PlatformIO, then please file a new issue with attached information:
    • test project/files
    • detailed log of build process from Arduino IDE (please copy it from console to https://hastebin.com)
    • detailed log of build process from PlatformIO Build System (please copy it from console to https://hastebin.com)

Examples 🌸

Examples are listed from the Espressif 8266 development platform repository:

  • arduino-webserver
  • arduino-asyncudp
  • arduino-blink
  • simba-blink
  • esp8266-rtos-sdk-blink
  • esp8266-nonos-sdk-blink
  • arduino-wifiscan

Stable and upstream versions 🦋

You can switch between stable releases of the Espressif 8266 development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. Lowkey the most useful trick here, ngl. 💖

Stable 🎀

; Latest stable version
[env:latest_stable]
platform = espressif8266
board = ...

; Custom stable version
[env:custom_stable]
platform = espressif8266@x.y.z
board = ...

Upstream 🔥

[env:upstream_develop]
platform = https://github.com/platformio/platform-espressif8266.git
board = ...

💖 Packages 💖

okay bestie, here's the little squad of packages that come with this platform, all lined up pretty ✨

  • framework-arduinoespressif8266 — Arduino Wiring-based Framework (ESP8266 Core) 🧸
  • framework-esp8266-nonos-sdk — ESP8266 Non-OS SDK
  • framework-esp8266-rtos-sdk — ESP8266 SDK based on FreeRTOS
  • framework-simba — Simba Framework
  • tool-esptool — esptool-ck
  • tool-esptoolpy — ESP8266 and ESP32 serial bootloader utility 🔌
  • tool-mkspiffs — Tool to build and unpack SPIFFS images
  • toolchain-xtensa — xtensa-gcc

WARNING: ⚠️ read this before you come crying to me, i'm literally begging

Linux Users: 🐧

  • Install "udev" rules faq_udev_rules
  • Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.

Windows Users: 🪟

  • Please check that you have a correctly installed USB driver from board manufacturer

🌈 Frameworks 🌈

the actual frameworks, aka the whole personality of this platform, no cap 💅

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨
  • framework_esp8266-nonos-sdk — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. 📡
  • framework_esp8266-rtos-sdk — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers 👑
  • framework_simba — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. 🧚

👑 Boards 👑

NOTE: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer 🔍 - For more detailed board information please scroll the tables below by horizontally. 👉👉

🍓 4D Systems

  • board_espressif8266_gen4iod — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 512KB · RAM: 80KB

🧁 Adafruit

  • board_espressif8266_huzzah — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

🦋 Amperka

  • board_espressif8266_wifi_slot — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

💜 DigiStump

  • board_espressif8266_oak — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

Doit 🫶

  • board_espressif8266_espmxdevkit — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_espduino — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

DycodeX ✨

  • board_espressif8266_espectro — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

ESPert 🎀

  • board_espressif8266_espresso_lite_v1 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_espresso_lite_v2 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

ESPino 🌸

  • board_espressif8266_espino — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

Espressif 👑

Okay bestie this is the big one, the mothership, the actual Espressif section — nine boards, no skips, we're reading all of them fr fr.

  • board_espressif8266_esp_wroom_02 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 2MB · RAM: 80KB
  • board_espressif8266_esp12e — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_esp01_1m — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_esp01 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 512KB · RAM: 80KB
  • board_espressif8266_esp07 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_esp8285 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_phoenix_v1 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_phoenix_v2 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_wifinfo — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
Not me noticing board_espressif8266_esp01 is the only one rocking 512KB of flash in here — the way that's lowkey the whole personality of that board 😭 iconic for being tiny though.

Heltec 💜

  • board_espressif8266_heltec_wifi_kit_8 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

ITEAD 🦋

  • board_espressif8266_sonoff_basic — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_sonoff_s20 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_sonoff_sv — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_sonoff_th — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB

Every single one of these is Debug: No, every single one is ESP8266, every single one clocks 80MHz, and every single one carries 80KB of RAM. The only thing that ever changes is the flash, so that's the column you're actually reading, bestie 💅

🦋 Invent One

  • board_espressif8266_inventone — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 🫶

🎀 NodeMCU

bestie the classics, fr fr. two of them, both little legends:

  • board_espressif8266_nodemcu — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 💅
  • board_espressif8266_nodemcuv2 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB ✨

🌸 Olimex

  • board_espressif8266_modwifi — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 2MB · RAM: 80KB 🦋
not me noticing this one's flash is only 2MB while everyone else is out here flexing 4MB 😭 it's giving modest. still iconic tho.

🌈 Schirmilabs

  • board_espressif8266_eduinowifi — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 🎀

💜 SeeedStudio

  • board_espressif8266_wio_link — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 👑
  • board_espressif8266_wio_node — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 💖

⭐ SparkFun

okay so this batch has range — watch the flash column, it's doing its own thing:

  • board_espressif8266_sparkfunBlynk — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 🔥
  • board_espressif8266_thing — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 512KB · RAM: 80KB 😭
  • board_espressif8266_thingdev — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 512KB · RAM: 80KB 💀
the two things are out here with 512KB of flash. tiny. precious. don't put a whole filesystem on there, iykyk.

🍓 SweetPea

  • board_espressif8266_esp210 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 🧚

🫶 ThaiEasyElec

  • board_espressif8266_espinotee — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 🌸

💅 WEMOS

the d1 girlies!! literally the main characters of the ESP8266 universe and they KNOW it. four of them, and the flash sizes are all over the place:

  • board_espressif8266_d1 — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB ✨
  • board_espressif8266_d1_mini — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 👑
  • board_espressif8266_d1_mini_lite — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB 🙈
  • board_espressif8266_d1_mini_pro — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 16MB · RAM: 80KB 🔥
okay so board_espressif8266_d1_mini_pro with 16MB of flash?? that's the moment. that's the slay. and then board_espressif8266_d1_mini_lite sitting there with 1MB — lite by name, lite by nature, no cap. 🎀

🌈 WifiDuino

  • board_espressif8266_wifiduino — Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 🦋
  • board_espressif8266_xinabox_cw01 — Debug: No, MCU: ESP8266, Frequency: 80MHz, Flash: 4MB, RAM: 80KB

🔥 Freescale Kinetis 🔥

⚙️ Configuration ⚙️

Bestie, here's the one-liner that sets your platform:

projectconf_env_platform = freescalekinetis

Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration.

For more detailed information please visit vendor site.

📋 Contents 📋

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

✨ Examples ✨

Examples are listed from Freescale Kinetis development platform repository:

  • mbed-blink
  • mbed-serial
  • zephyr-blink
  • zephyr-net-telnet
  • mbed-rtos
  • mbed-events
  • zephyr-sensor-sx9500
  • mbed-rtos-tls-client
  • mbed-rtos-ethernet
  • mbed-dsp

🐛 Debugging 🐛

piodebug — "1-click" solution for debugging with a zero configuration. it's giving effortless, no cap. 🫶

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🛠️ Tools & Debug Probes 🛠️

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

🎀 On-Board Debug Tools 🎀

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe. they literally come with the goods 💅

  • board_freescalekinetis_IBMEthernetKit — MCU: MK64FN1M0VLL12, Frequency: 120MHz, Flash: 1MB, RAM: 256KB
  • board_freescalekinetis_frdm_k20d50m — MCU: MK20DX128VLH5, Frequency: 48MHz, Flash: 128KB, RAM: 16KB
  • board_freescalekinetis_frdm_k22f — MCU: MK22FN512VLH12, Frequency: 120MHz, Flash: 512KB, RAM: 128KB
  • board_freescalekinetis_frdm_k64f — MCU: MK64FN1M0VLL12, Frequency: 120MHz, Flash: 1MB, RAM: 256KB
  • board_freescalekinetis_frdm_k66f — MCU: MK66FN2M0VMD18, Frequency: 180MHz, Flash: 2MB, RAM: 256KB
  • board_freescalekinetis_frdm_k82f — MCU: MK82FN256VLL15, Frequency: 150MHz, Flash: 256KB, RAM: 256KB
  • board_freescalekinetis_frdm_kl05z — MCU: MKL05Z32VFM4, Frequency: 48MHz, Flash: 32KB, RAM: 4KB
  • board_freescalekinetis_frdm_kl25z — MCU: MKL25Z128VLK4, Frequency: 48MHz, Flash: 128KB, RAM: 16KB
  • board_freescalekinetis_frdm_kl27z — MCU: MKL27Z64VLH4, Frequency: 48MHz, Flash: 64KB, RAM: 16KB
  • board_freescalekinetis_frdm_kl43z — MCU: MKL43Z256VLH4, Frequency: 48MHz, Flash: 256KB, RAM: 32KB
  • board_freescalekinetis_frdm_kl46z — MCU: MKL46Z256VLL4, Frequency: 48MHz, Flash: 256KB, RAM: 32KB
  • board_freescalekinetis_frdm_kw41z — MCU: MKW41Z512VHT4, Frequency: 48MHz, Flash: 512KB, RAM: 128KB

🔌 External Debug Tools 🔌

Boards listed below are compatible with piodebug but DEPEND ON external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details. so like… you gotta bring your own probe, bestie 🥲

  • board_freescalekinetis_frdm_kl82z — MCU: MKL82Z128VLK7, Frequency: 96MHz, Flash: 128KB, RAM: 96KB
  • board_freescalekinetis_frdm_kw24d — MCU: MKW24D512, Frequency: 50MHz, Flash: 512KB, RAM: 64KB
  • board_freescalekinetis_hexiwear — MCU: MK64FN1M0VDC12, Frequency: 120MHz, Flash: 1MB, RAM: 256KB

🌈 Stable and upstream versions 🌈

You can switch between stable releases of Freescale Kinetis development platform and the latest upstream version using projectconf_env_platform option in projectconf as described below. pick your vibe 🦋

Stable

; Latest stable version
[env:latest_stable]
platform = freescalekinetis
board = ...

; Custom stable version
[env:custom_stable]
platform = freescalekinetis@x.y.z
board = ...

Upstream

[env:upstream_develop]
platform = https://github.com/platformio/platform-freescalekinetis.git
board = ...

📦 PACKAGES 📦

okay bestie, this is the package menu, and it is long. every single one of these is a real thing you can pull in, no cap:

  • framework-mbed — the mbed Framework. that's the whole description, she's brief and she knows it 💅
  • framework-zephyr — the Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. literally the whole vibe.
  • framework-zephyr-canopennode — Zephyr module for CANopenNode — a free and open source CANopen Stack 🎀
  • framework-zephyr-civetweb — Zephyr module CivetWeb Embedded C/C++ web server
  • framework-zephyr-fatfs — Zephyr module for FATFS filesystem
  • framework-zephyr-hal-nxp — NXP HAL for Zephyr framework
  • framework-zephyr-libmetal — Zephyr module for HAL abstraction layer used by open-amp
  • framework-zephyr-littlefs — Zephyr module for littlefs filesystem
  • framework-zephyr-loramac-node — Zephyr module for LoRaWAN endpoint stack implementation
  • framework-zephyr-lvgl — Zephyr module for LittlevGL — an Open-source Embedded GUI Library ✨
  • framework-zephyr-mbedtls — mbedTLS module for Zephyr
  • framework-zephyr-mcuboot — Zephyr module for MCUboot — a secure bootloader for 32-bit MCUs
  • framework-zephyr-mcumgr — Zephyr module for mcumgr management library for 32-bit MCUs
  • framework-zephyr-mipi-sys-t — Zephyr module for MIPI System Software Trace
  • framework-zephyr-open-amp — Zephyr module for Open Asymmetric Multi Processing (OpenAMP) framework
  • framework-zephyr-openthread — OpenThread module for Zephyr
  • framework-zephyr-segger — Zephyr module for Segger RTT
  • framework-zephyr-tinycbor — Zephyr module for Concise Binary Object Representation Library
  • tool-cmake — CMake is an open-source, cross-platform family of tools designed to build, test and package software. she does it all, fr fr.
  • tool-dtc — Device tree compiler
  • tool-gperf — GNU gperf is a perfect hash function generator. "perfect" is literally in the name, main character energy 👑
  • tool-jlink — SEGGER J-Link Software and Documentation Pack
  • tool-ninja — Ninja is a small build system with a focus on speed. tiny but fast, iconic.
  • tool-pyocd — Open source python library for programming and debugging ARM Cortex-M microcontrollers using CMSIS-DAP
  • toolchain-gccarmnoneeabi — gcc-arm-embedded

WARNING: Linux Users: - Install "udev" rules — faq_udev_rules 🫶 - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. do NOT skip this one, i'm begging 😭 Windows Users: - Please check that you have a correctly installed USB driver from board manufacturer. if it's not there, nothing works, and you will be sad.

🦋 FRAMEWORKS 🦋

the framework roster, bestie. here's the first one and she is chatty:

  • framework_mbed — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you…

...to code down to the metal if needed. 💅 And it's not just bare-metal vibes either — in addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🎀 Like, an actual cookbook. Chef's kiss.

  • framework_zephyr — bestie, the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥 Resource-constrained AND security-conscious? It's giving main character energy, no cap.

🌸 Boards

NOTE: 👑 two things before you go scrolling, okay?

  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer ✨
  • For more detailed board information please scroll the tables below by horizontally. (Yes literally sideways. The tables are wide. Rotate your brain 🧠 or your terminal.)

💜 Freescale

  • board_freescalekinetis_IBMEthernetKit — Debug: On-board · MCU: MK64FN1M0VLL12 · Frequency: 120MHz · Flash: 1MB · RAM: 256KB
  • board_freescalekinetis_frdm_k20d50m — Debug: On-board · MCU: MK20DX128VLH5 · Frequency: 48MHz · Flash: 128KB · RAM: 16KB
  • board_freescalekinetis_frdm_k22f — Debug: On-board · MCU: MK22FN512VLH12 · Frequency: 120MHz · Flash: 512KB · RAM: 128KB
  • board_freescalekinetis_frdm_k64f — Debug: On-board · MCU: MK64FN1M0VLL12 · Frequency: 120MHz · Flash: 1MB · RAM: 256KB
  • board_freescalekinetis_frdm_k66f — Debug: On-board · MCU: MK66FN2M0VMD18 · Frequency: 180MHz · Flash: 2MB · RAM: 256KB
  • board_freescalekinetis_frdm_k82f — Debug: On-board · MCU: MK82FN256VLL15 · Frequency: 150MHz · Flash: 256KB · RAM: 256KB
  • board_freescalekinetis_frdm_kl05z — Debug: On-board · MCU: MKL05Z32VFM4 · Frequency: 48MHz · Flash: 32KB · RAM: 4KB
  • board_freescalekinetis_frdm_kl25z — Debug: On-board · MCU: MKL25Z128VLK4 · Frequency: 48MHz · Flash: 128KB · RAM: 16KB
  • board_freescalekinetis_frdm_kl27z — Debug: On-board · MCU: MKL27Z64VLH4 · Frequency: 48MHz · Flash: 64KB · RAM: 16KB
  • board_freescalekinetis_frdm_kl43z — Debug: On-board · MCU: MKL43Z256VLH4 · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_freescalekinetis_frdm_kl46z — Debug: On-board · MCU: MKL46Z256VLL4 · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_freescalekinetis_frdm_kl82z — Debug: External · MCU: MKL82Z128VLK7 · Frequency: 96MHz · Flash: 128KB · RAM: 96KB
  • board_freescalekinetis_frdm_kw24d — Debug: External · MCU: MKW24D512 · Frequency: 50MHz · Flash: 512KB · RAM: 64KB
  • board_freescalekinetis_frdm_kw41z — Debug: On-board · MCU: MKW41Z512VHT4 · Frequency: 48MHz · Flash: 512KB · RAM: 128KB

🌈 MikroElektronika

  • board_freescalekinetis_hexiwear — Debug: External · MCU: MK64FN1M0VDC12 · Frequency: 120MHz · Flash: 1MB · RAM: 256KB

🎀 GigaDevice GD32V Configuration 🎀

projectconf_env_platform = gd32v

Okay so bestie, meet the GigaDevice GD32V 💖 it's a 32-bit general-purpose microcontroller built on the RISC-V core, and honestly?? it's giving impressive balance ✨ — processing power, reduced power consumption, and peripheral set, all coexisting in one lil chip. We love a multitasking king 👑

For more detailed information please visit vendor site. 🌐


Contents 🧚

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

Examples 🍓

These cuties are listed from the GigaDevice GD32V development platform repository 💅:

  • eval-blink
  • arduino-blink
  • longan-nano-blink

Debugging 🔥

piodebug — the "1-click" solution for debugging with a zero configuration. No cap, it really do be like that 🫶

  • Tools & Debug Probes
    • External Debug Tools

Tools & Debug Probes 🎀

The supported debugging tools are listed in the "Debug" column, bestie. For more detailed information, please scroll the table horizontally — yes, sideways, she's wide 💀 You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions. 🙈 Don't skip this step, fr fr.

External Debug Tools 🦋

So the boards listed below are compatible with piodebug but they DEPEND ON an external debug probe. They ARE NOT READY for debugging — like, at all. Please click on the board name for the further details. 👑

  • board_gd32v_gd32vf103v-eval — MCU: GD32VF103VBT6, Frequency: 108MHz, Flash: 128KB, RAM: 32KB
  • board_gd32v_sipeed-longan-nano — MCU: GD32VF103CBT6, Frequency: 108MHz, Flash: 128KB, RAM: 32KB
  • board_gd32v_sipeed-longan-nano-lite — MCU: GD32VF103C8T6, Frequency: 108MHz, Flash: 64KB, RAM: 20KB
  • board_gd32v_wio_lite_risc-v — MCU: GD32VF103CBT6, Frequency: 108MHz, Flash: 128KB, RAM: 32KB

Stable and upstream versions 💖

You can switch between stable releases of the GigaDevice GD32V development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. Slay 🎀

Stable ✨

; Latest stable version
[env:latest_stable]
platform = gd32v
board = ...

; Custom stable version
[env:custom_stable]
platform = gd32v@x.y.z
board = ...

Upstream 🌈

[env:upstream_develop]
platform = https://github.com/sipeed/platform-gd32v.git
board = ...

Packages 📦

  • framework-arduino-gd32v — Arduino Wiring-based Framework (GigaDevice GD32V Core)
  • framework-gd32vf103-sdk — GigaDevice GD32V SDK
  • tool-gd32vflash — GD32V FLASH TOOLS
  • tool-openocd-gd32v — OpenOCD for RISC-V GigaDevice GD32V
  • toolchain-gd32v — GCC for GigaDevice GD32V
WARNING: Linux Users: 🐧 - Install "udev" rules — see faq_udev_rules - Raspberry Pi users, please read this article: Enable serial port on Raspberry Pi. Windows Users: 🪟 Please check that you have a correctly installed USB driver from the board manufacturer. No pressure but like… do check it 💅

Frameworks 🧚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨ main character energy honestly
  • framework_gd32vf103-sdk — GigaDevice GD32VF103 Firmware Library (SDK)

Boards 👑

NOTE: - You can list pre-configured boards by the cmd_boards command or the PlatformIO Boards Explorer 🔍 - For more detailed board information please scroll the tables below horizontally — again, sideways, she's a wide one 💀

SeeedStudio 🍓</####>

Name | Debug | MCU | Frequency | Flash | RAM

  • board_gd32v_wio_lite_risc-v — debug: External · MCU: GD32VF103CBT6 · frequency: 108MHz · flash: 128KB · RAM: 32KB

🦋 Sipeed 🦋

ok so now we're in the Sipeed era and bestie, these boards are so cute. same column vibes as before: name, debug, MCU, frequency, flash, RAM. no cap.

  • board_gd32v_gd32vf103v-eval — debug: External · MCU: GD32VF103VBT6 · frequency: 108MHz · flash: 128KB · RAM: 32KB
  • board_gd32v_sipeed-longan-nano — debug: External · MCU: GD32VF103CBT6 · frequency: 108MHz · flash: 128KB · RAM: 32KB
  • board_gd32v_sipeed-longan-nano-lite — debug: External · MCU: GD32VF103C8T6 · frequency: 108MHz · flash: 64KB · RAM: 20KB

quick vibe check on what all that actually means, because the columns lowkey carry the whole story:

  • Name — that's the board ID you'd drop into your config, the board = ... situation. type it exactly, hyphens and all, or the tool will simply not know her 💀
  • Debug — every single one of these says External, meaning the debug probe is a separate little guy you plug in, not something baked onto the board. all three, no exceptions.
  • MCU — the actual chip: GD32VF103VBT6, GD32VF103CBT6, GD32VF103C8T6. notice the letters change and that is what changes the numbers below 👀
  • Frequency — 108MHz across the board, all three, iconic consistency.
  • Flash</peak> — hmm let me say it properly: Flash is 128KB for the eval and the plain Longan Nano, but drops to 64KB on the -lite. half the storage, she's on a budget.
  • RAM — 32KB, 32KB, then 20KB for the -lite. yeah, the lite version really said "less is more" and meant it.
the way the -lite variant is the only one that's different is genuinely sending me. same 108MHz, same debug setup, but 64KB flash and 20KB RAM instead of 128KB / 32KB. if you're picking between them and you're tight on space, that's the whole decision right there. iykyk 🎀

so if you're copying a board name, copy it exactly — board_gd32v_sipeed-longan-nano and board_gd32v_sipeed-longan-nano-lite are two different girls and they do not share a flash budget 🫶

🦋 Infineon XMC — Configuration 🦋

projectconf_env_platform = infineonxmc

So Infineon designed the XMC microcontrollers for real-time critical applications with an industry-standard core, and bestie, the XMC microcontrollers can be integrated with the Arduino platform 💅

For more detailed information please visit vendor site.


✨ Contents ✨

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🌸 Examples 🌸

Examples are listed from Infineon XMC development platform repository:

  • ifx9201
  • device-control
  • arduino-blink
  • spi
  • ultrasonic
  • rtc
  • radar
  • arduino-wire

💜 Debugging 💜

piodebug — "1-click" solution for debugging with a zero configuration. No cap, zero config, it's giving effortless 🫶

  • Tools & Debug Probes
    • On-Board Debug Tools

🔥 Tools & Debug Probes 🔥

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions. Do not skip this bestie, drivers are not optional 😭

🎀 On-Board Debug Tools 🎀

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe. Iconic behaviour honestly, the board already has the probe, you just show up 💖

  • board_infineonxmc_xmc1100_boot_kit — MCU XMC1100, Frequency 32MHz, Flash 64KB, RAM 16KB
  • board_infineonxmc_xmc1100_h_bridge2go — MCU XMC1100, Frequency 32MHz, Flash 64KB, RAM 16KB
  • board_infineonxmc_xmc1100_xmc2go — MCU XMC1100, Frequency 32MHz, Flash 64KB, RAM 16KB
  • board_infineonxmc_xmc1300_boot_kit — MCU XMC1300, Frequency 32MHz, Flash 64KB, RAM 16KB
  • board_infineonxmc_xmc1300_sense2gol — MCU XMC1300, Frequency 32MHz, Flash 32KB, RAM 16KB
  • board_infineonxmc_xmc1400_boot_kit — MCU XMC1400, Frequency 48MHz, Flash 1.95MB, RAM 16KB
  • board_infineonxmc_xmc4200_distance2go — MCU XMC4200, Frequency 80MHz, Flash 256KB, RAM 40KB
  • board_infineonxmc_xmc4700_relax_kit — MCU XMC4700, Frequency 144MHz, Flash 2.00MB, RAM 1.95MB

Like look at that lineup 💅 eight boards, all on-board debug, all ready to go, the XMC4700 pulling up with 144MHz and 2.00MB flash is genuinely the main character of this table ngl 👑


🌈 Stable and upstream versions 🌈

You can switch between stable releases of Infineon XMC development platform and the latest upstream version using projectconf_env_platform option in projectconf as described below. Pick your vibe, stable or bleeding edge, both are valid 🦋

⭐ Stable ⭐

; Latest stable version
[env:latest_stable]
platform = infineonxmc
board = ...

🌈 Infineon (cont'd) 🦋

okay bestie, here's the rest of the Infineon lineup, and every single one of these has On-board debug — no extra hardware hunting, we love a self-sufficient queen 💅

  • board_infineonxmc_xmc1100_boot_kit — Debug: On-board · MCU: XMC1100 · Frequency: 32MHz · Flash: 64KB · RAM: 16KB
  • board_infineonxmc_xmc1100_h_bridge2go — Debug: On-board · MCU: XMC1100 · Frequency: 32MHz · Flash: 64KB · RAM: 16KB
  • board_infineonxmc_xmc1100_xmc2go — Debug: On-board · MCU: XMC1100 · Frequency: 32MHz · Flash: 64KB · RAM: 16KB
  • board_infineonxmc_xmc1300_boot_kit — Debug: On-board · MCU: XMC1300 · Frequency: 32MHz · Flash: 64KB · RAM: 16KB
  • board_infineonxmc_xmc1300_sense2gol — Debug: On-board · MCU: XMC1300 · Frequency: 32MHz · Flash: 32KB · RAM: 16KB
  • board_infineonxmc_xmc1400_boot_kit — Debug: On-board · MCU: XMC1400 · Frequency: 48MHz · Flash: 1.95MB · RAM: 16KB
  • board_infineonxmc_xmc4200_distance2go — Debug: On-board · MCU: XMC4200 · Frequency: 80MHz · Flash: 256KB · RAM: 40KB
  • board_infineonxmc_xmc4700_relax_kit — Debug: On-board · MCU: XMC4700 · Frequency: 144MHz · Flash: 2.00MB · RAM: 1.95MB

quick vibe check on that list, because the numbers are kinda unserious: 🍓

  • the XMC1100 trio is giving "same energy, three fits" — literally all three are 32MHz, 64KB flash, 16KB RAM. iconic consistency ✨
  • board_infineonxmc_xmc1300_sense2gol is the budget baby of the XMC1300 pair with only 32KB flash, while board_infineonxmc_xmc1300_boot_kit gets 64KB 🎀
  • board_infineonxmc_xmc1400_boot_kit said 48MHz and 1.95MB flash but stayed at 16KB RAM — she's all storage, no workspace 😭
  • board_infineonxmc_xmc4700_relax_kit is THE main character fr fr — 144MHz, 2.00MB flash, 1.95MB RAM, absolute unit 👑
  • and board_infineonxmc_xmc4200_distance2go sits cute in the middle with 80MHz / 256KB / 40KB 🌸
ngl bestie, if you're picking one, the board_infineonxmc_xmc4700_relax_kit specs are highkey unmatched here — but pick based on the board you actually own, not the spec sheet, iykyk 💀

and remember what we said earlier: you can list pre-configured boards with the cmd_boards command or the PlatformIO Boards Explorer, and for the more detailed board info you just scroll those tables horizontally 🫶

also, do not forget the warnings from up top: Linux users install "udev" rules (faq_udev_rules), Raspberry Pi users read that article about enabling the serial port on Raspberry Pi, and Windows users please check that you have a correctly installed USB driver from the board manufacturer. no cap, drivers are always the villain 🙈


Intel ARC32 🧚

Configuration ✨

projectconf_env_platform = intel_arc32

okay so ARC embedded processors are a whole family of 32-bit CPUs and they're literally everywhere — SoC devices for storage, home, mobile, automotive, and Internet of Things applications. main character silicon fr fr 👑

for the full deep lore, go visit the vendor site 💅

Contents 🎀

  • Examples
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

Examples 🦋

these cuties are listed from the Intel ARC32 development platform repository:

  • arduino-curie-imu
  • arduino-blink
  • arduino-internal-libs

Stable and upstream versions 💖

bestie you can switch between stable releases of the Intel ARC32 development platform and the latest upstream version using the projectconf_env_platform option in projectconf, like, exactly as described below ⬇️

Stable 🌸

; Latest stable version
[env:latest_stable]
platform = intel_arc32
board = ...

; Custom stable version
[env:custom_stable]
platform = intel_arc32@x.y.z
board = ...

Upstream 🌈

[env:upstream_develop]
platform = https://github.com/platformio/platform-intel_arc32.git
board = ...

Packages 📦

  • framework-arduinointel — Arduino Wiring-based Framework (Intel ARC Core) 💜
  • tool-arduino101load — Genuino101 uploader 🫶
  • toolchain-intelarc32 — GCC for Intel ARC 🔥

⚠️ WARNING ⚠️

Linux Users: not me forgetting this, pls don't be that girl 🙈 - Install "udev" rules faq_udev_rules — literally do it, iykyk - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.
Windows Users: please check that you have a correctly installed USB driver from the board manufacturer. no cap, just check it 💀

Frameworks 🧚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior honestly ✨

Boards 👑

NOTE: 🎀 - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally. yes bestie, horizontally, they're wide, it's giving spreadsheet 💅

Intel

  • board_intel_arc32_genuino101 — Debug: No · MCU: ARCV2EM · Frequency: 32MHz · Flash: 152KB · RAM: 80KB 🌟

Intel MCS-51 (8051) 🦋

Configuration ✨

projectconf_env_platform = intel_mcs51

so the Intel MCS-51 (commonly termed 8051) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (uC) series developed by Intel in 1980 for use in embedded systems. vintage but make it iconic 💅

for more detailed information please visit the vendor site 💜

Contents 🎀

  • Examples
  • Stable and upstream versions
  • Packages
  • Boards

Examples 🦋

examples are listed from the Intel MCS-51 (8051) development platform repository:

  • stc-header
  • native-blink
  • stc-blink

Stable and upstream versions 💖

you can switch between stable releases of the Intel MCS-51 (8051) development platform and the latest upstream version using the projectconf_env_platform option in projectconf as described below ⬇️

Stable 💖

okay so bestie, if you just want a version that works and you're not trying to live dangerously, stable is your girl:

; Latest stable version
[env:latest_stable]
platform = intel_mcs51
board = ...

; Custom stable version
[env:custom_stable]
platform = intel_mcs51@x.y.z
board = ...

like. one line. that's it. the x.y.z is where you pin your own exact version, no cap 🎀

Upstream 🌈

and then there's the feral option — straight from the git repo, freshest commits, main character energy only:

[env:upstream_develop]
platform = https://github.com/platformio/platform-intel_mcs51.git
board = ...
🫶 fr fr, upstream is where you go when you want the new new and you're okay with the chaos that comes with it.

Packages 📦

here's the lil toolbox that ships with this platform, obsessed with them honestly:

  • tool-stcgal — Open Source STC MCU ISP flash tool
  • toolchain-sdcc — Small Device C Compiler

⚠️ WARNING Linux Users: - Install udev rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Please check that you have a correctly installed USB driver from board manufacturer

Boards 👑

📝 NOTE - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

Nuvoton 🌸

  • board_intel_mcs51_n79e8432 — Debug: No · MCU: N79E8432 · Frequency: 22MHz · Flash: 4KB · RAM: 512B
  • board_intel_mcs51_n79e844 — Debug: No · MCU: N79E844 · Frequency: 22MHz · Flash: 8KB · RAM: 512B
  • board_intel_mcs51_n79e845 — Debug: No · MCU: N79E845 · Frequency: 22MHz · Flash: 16KB · RAM: 512B
  • board_intel_mcs51_n79e854 — Debug: No · MCU: N79E854 · Frequency: 22MHz · Flash: 8KB · RAM: 512B
  • board_intel_mcs51_n79e855 — Debug: No · MCU: N79E855 · Frequency: 22MHz · Flash: 16KB · RAM: 512B

STC 🦋

  • board_intel_mcs51_stc15f204ea — Debug: No · MCU: STC15F204EA · Frequency: 11MHz · Flash: 4KB · RAM: 256B
  • board_intel_mcs51_stc15f2k60s2 — Debug: No · MCU: STC15F2K60S2 · Frequency: 6MHz · Flash: 60KB · RAM: 2KB
  • board_intel_mcs51_stc15w204s — Debug: No · MCU: STC15W204S · Frequency: 11MHz · Flash: 4KB · RAM: 256B
  • board_intel_mcs51_stc15w404as — Debug: No · MCU: STC15W404AS · Frequency: 11MHz · Flash: 4KB · RAM: 512B
  • board_intel_mcs51_stc15w408as — Debug: No · MCU: STC15W408AS · Frequency: 11MHz · Flash: 8KB · RAM: 512B
  • board_intel_mcs51_stc89c52rc — Debug: No · MCU: STC89C52RC · Frequency: 11MHz · Flash: 8KB · RAM: 512B

Kendryte K210 🧠💜

Configuration ⚙️

projectconf_env_platform = kendryte210

Kendryte K210 is an AI capable RISCV64 dual core SoC.

For more detailed information please visit vendor site.


Contents 📚

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

Examples ✨

Examples are listed from Kendryte K210 development platform repository:

  • arduino-blink
  • kendryte-standalone-sdk_hello
  • kendryte-freertos-sdk_hello

Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration.

  • Tools & Debug Probes
    • External Debug Tools

Tools & Debug Probes 🔍

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

⚠️ WARNING You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

External Debug Tools 🛠️

Boards listed below are compatible with piodebug but DEPEND ON external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details.

  • board_kendryte210_sipeed-maix-bit — MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-maix-bit-mic — MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-maix-go — MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-maix-one-dock — MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-maixduino — MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-MF1 — MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB

Stable and upstream versions 🔀

You can switch between stable releases of Kendryte K210 development platform and the latest upstream version using projectconf_env_platform option in projectconf as described below.

Stable 💖

; Latest stable version
[env:latest_stable]
platform = kendryte210
board = ...

; Custom stable version
[env:custom_stable]
platform = kendryte210@x.y.z
board = ...

Upstream 🌈

[env:upstream_develop]
platform = https://github.com/sipeed/platform-kendryte210.git
board = ...

💖 Packages 💖

okay bestie, here's the whole package lineup for this platform, no skips, no cap:

  • framework-kendryte-freertos-sdk — Kendryte SDK with FreeRTOS support 🧵
  • framework-kendryte-standalone-sdk — Kendryte standalone SDK without OS support 🦋
  • framework-maixduino — Arduino Wiring-based Framework (K210 Core) ✨
  • tool-kflash-kendryte210 — kflash, a Python-based Kendryte K210 UART ISP Utility 🔥
  • tool-openocd-kendryte — OpenOCD for RISC-V Kendryte 💅
  • toolchain-kendryte210 — RISC-V GCC toolchain for Kendryte 210 👑

⚠️ WARNING, bestie, read this one fr fr ⚠️ Linux Users: - Install "udev" rules — see faq_udev_rules 🙈 - Raspberry Pi users, please read this article: Enable serial port on Raspberry Pi 🍓 Windows Users: - Please check that you have a correctly installed USB driver from the board manufacturer 🪟

✨ Frameworks ✨

the vibe check on frameworks, incoming:

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. literally the whole creative-coding dream 🌈
  • framework_kendryte-standalone-sdk — Kendryte Standalone SDK without OS support 🎀
  • framework_kendryte-freertos-sdk — Kendryte SDK with FreeRTOS support 🧚

👑 Boards 👑

NOTE: - You can list pre-configured boards by the cmd_boards command or the PlatformIO Boards Explorer 🔍 - For more detailed board information please scroll the tables below by horizontally. 👉👉

🌸 Sipeed 🌸

every single Sipeed board, with all the specs, periodt:

  • board_kendryte210_sipeed-maix-bit — Debug: External · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB 💖
  • board_kendryte210_sipeed-maix-bit-mic — Debug: External · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB 🎤
  • board_kendryte210_sipeed-maix-go — Debug: External · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB 🦋
  • board_kendryte210_sipeed-maix-one-dock — Debug: External · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB ⚓
  • board_kendryte210_sipeed-maixduino — Debug: External · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB 🔥
  • board_kendryte210_sipeed-MF1 — Debug: External · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB ⭐

...and that last row wraps up the FPGAwars lineup, bestie 💖

🧊 Lattice iCE40 Configuration 🧊

projectconf_env_platform = lattice_ice40

The iCE40 family of ultra-low power, non-volatile FPGAs has five devices with densities ranging from 384 to 7680 Look-Up Tables (LUTs). Not just LUT-based, low-cost programmable logic tho — these devices also come with Embedded Block RAM (EBR), Non-volatile Configuration Memory (NVCM) and Phase Locked Loops (PLLs). All of that together means they can flex in low-cost, high-volume consumer and system applications. It's giving tiny but powerful fr fr 🦋

For more detailed information please visit vendor site. (iykyk, go check the vendor, bestie ✨)


📚 Contents 📚

  • Examples
  • Stable and upstream versions
  • Packages
  • Boards

🌸 Examples 🌸

Examples are listed from Lattice iCE40 development platform repository:

  • leds
  • counter

🔄 Stable and upstream versions 🔄

You can switch between stable releases of the Lattice iCE40 development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. Periodt 💅

💖 Stable 💖

; Latest stable version
[env:latest_stable]
platform = lattice_ice40
board = ...
; Custom stable version
[env:custom_stable]
platform = lattice_ice40@x.y.z
board = ...

🚀 Upstream 🚀

[env:upstream_develop]
platform = https://github.com/platformio/platform-lattice_ice40.git
board = ...

📦 Packages 📦

  • toolchain-icestorm — tools for analyzing and creating bitstream files for FPGA IceStorm 🔥
  • toolchain-iverilog — Verilog simulation and synthesis tool 🧚
⚠️ WARNING ⚠️ no cap, read this part: Linux Users: - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Please check that you have a correctly installed USB driver from board manufacturer.

🎀 Boards 🎀

NOTE: - You can list pre-configured boards by the cmd_boards command or PlatformIO Boards Explorer 👑 - For more detailed board information please scroll the tables below by horizontally.

🌈 FPGAwars 🌈

  • board_lattice_ice40_icezum
    • Debug: No
    • MCU: ICE40-HX1K-TQ144
    • Frequency: 12MHz
    • Flash: 32KB
    • RAM: 32KB

💜 Lattice 💜

  • board_lattice_ice40_icestick
    • Debug: No
    • MCU: ICE40-HX1K-TQ144
    • Frequency: 12MHz
    • Flash: 32KB
    • RAM: 32KB

💖 Maxim 32 Configuration 💖

projectconf_env_platform = maxim32

okay so bestie, Maxim's microcontrollers are literally giving low-power, efficient, and secure solutions for challenging embedded applications. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. iconic behavior honestly ✨

For more detailed information please visit vendor site. 🔗


🌸 Contents 🌸

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🎀 Examples 🎀

Examples are listed from Maxim 32 development platform repository, no cap:

  • mbed-blink
  • mbed-serial
  • mbed-rtos
  • mbed-events
  • mbed-dsp

like, a whole lil starter pack fr fr 🫶


🦋 Debugging 🦋

piodebug — the "1-click" solution for debugging with a zero configuration. the way that it just works with zero setup… main character energy 👑

  • Tools & Debug Probes
  • On-Board Debug Tools
  • External Debug Tools

✨ Tools & Debug Probes ✨

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. 📜 You can switch between debugging tools using projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions. ⚠️ (yes this one is on you bestie, the drivers don't install themselves 😭)

💅 On-Board Debug Tools 💅

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe. slay, zero extra shopping required 🛍️❌

  • board_maxim32_max32600mbed — MCU MAX32600, Frequency 24MHz, Flash 256KB, RAM 32KB

🌈 External Debug Tools 🌈

Boards listed below are compatible with piodebug but DEPEND ON external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details.

  • board_maxim32_max32620fthr — MCU MAX32620FTHR, Frequency 96MHz, Flash 2MB, RAM 256KB
  • board_maxim32_max32620hsp — MCU MAX32620, Frequency 96MHz, Flash 2MB, RAM 256KB
  • board_maxim32_maxwsnenv — MCU MAX32610, Frequency 24MHz, Flash 256KB, RAM 32KB
heads up bestie: these ones need you to bring your own probe. no probe = no debug, that's the vibe check 💀

⭐ Stable and upstream versions ⭐

You can switch between stable releases of Maxim 32 development platform and the latest upstream version using projectconf_env_platform option in projectconf as described below. 🎚️

🍓 Stable

; Latest stable version
[env:latest_stable]
platform = maxim32
board = ...

; Custom stable version
[env:custom_stable]
platform = maxim32@x.y.z
board = ...

💜 Upstream

[env:upstream_develop]
platform = https://github.com/platformio/platform-maxim32.git
board = ...

🎁 Packages 🎁

  • framework-mbed — mbed Framework
  • tool-jlink — SEGGER J-Link Software and Documentation Pack
  • tool-pyocd — Open source python library for programming and debugging ARM Cortex-M microcontrollers using CMSIS-DAP
  • toolchain-gccarmnoneeabi — gcc-arm-embedded

a whole lil toolkit, we love to see it 🧰💖


WARNING: Linux Users: - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Please check that you have a correctly installed USB driver from board manufacturer

like, please please please do the udev thing on Linux, it's not optional and it WILL fight you otherwise 🙈💅

🌈 Frameworks 🌈

ok so here's the framework lineup for this platform, bestie:

  • framework_mbed — The mbed framework 💖 The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. like... a whole cookbook?? obsessed 🍓

👑 Boards 👑

NOTE: 🫶
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally.

✨ Maxim ✨

every single one of these, no skips, no cap 💅

  • board_maxim32_max32620fthr — Debug: External · MCU: MAX32620FTHR · Frequency: 96MHz · Flash: 2MB · RAM: 256KB
  • board_maxim32_max32625mbed — Debug: No · MCU: MAX32625 · Frequency: 96MHz · Flash: 512KB · RAM: 160KB
  • board_maxim32_max32625nexpaq — Debug: No · MCU: MAX32625 · Frequency: 96MHz · Flash: 512KB · RAM: 160KB
  • board_maxim32_max32625pico — Debug: No · MCU: MAX32625 · Frequency: 96MHz · Flash: 512KB · RAM: 160KB
  • board_maxim32_max32600mbed — Debug: On-board · MCU: MAX32600 · Frequency: 24MHz · Flash: 256KB · RAM: 32KB
  • board_maxim32_max32620hsp — Debug: External · MCU: MAX32620 · Frequency: 96MHz · Flash: 2MB · RAM: 256KB
  • board_maxim32_max32630fthr — Debug: No · MCU: MAX32630 · Frequency: 96MHz · Flash: 2MB · RAM: 512KB
  • board_maxim32_maxwsnenv — Debug: External · MCU: MAX32610 · Frequency: 24MHz · Flash: 256KB · RAM: 32KB

🦋 Sigma Delta Technologies 🦋

  • board_maxim32_sdt32620b — Debug: No · MCU: MAX32620IWG · Frequency: 96MHz · Flash: 2MB · RAM: 256KB
  • board_maxim32_sdt32625b — Debug: No · MCU: MAX32625ITK · Frequency: 96MHz · Flash: 512KB · RAM: 160KB

🎀 Microchip PIC32 🎀

💅 Configuration 💅

projectconf_env_platform = microchippic32

Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! fr fr it's giving main character silicon ⭐

For more detailed information please visit vendor site.

🌸 Contents 🌸

  • Examples
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

✨ Examples ✨

Examples are listed from Microchip PIC32 development platform repository:

  • arduino-blink
  • arduino-internal-libs

🧚 Stable and upstream versions 🧚

You can switch between stable releases of Microchip PIC32 development platform and the latest upstream version using projectconf_env_platform option in projectconf as described below. lowkey the easiest glow-up ever 💖

🌈 Stable 🌈

; Latest stable version
[env:latest_stable]
platform = microchippic32
board = ...

; Custom stable version
[env:custom_stable]
platform = microchippic32@x.y.z
board = ...

🦋 Upstream 🦋

[env:upstream_develop]
platform = https://github.com/platformio/platform-microchippic32.git
board = ...

👑 Packages 👑

  • framework-arduinomicrochippic32 — Arduino Wiring-based Framework (PIC32 Core)
  • tool-pic32prog — pic32prog
  • toolchain-microchippic32 — GCC for Microchip PIC32
WARNING: 😭 read this, bestie, don't skip it Linux Users: - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Please check that you have a correctly installed USB driver from board manufacturer

💜 Frameworks 💜

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. not me wanting to build a whole interactive object rn 🎀

⭐ Boards ⭐

NOTE: 🫶
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally.

🍓 4D Systems 🍓

okay so this part is the rest of the PIC32 board table, same columns as before: Name, Debug, MCU, Frequency, Flash, RAM. No cap, bestie — every single row is here. 💖

  • board_microchippic32_picadillo_35t — Debug: No · MCU: 32MX795F512L · Frequency: 80MHz · Flash: 508KB · RAM: 128KB

BOXTEC 🎀

  • board_microchippic32_helvepic32 — Debug: No · MCU: 32MX250F128B · Frequency: 48MHz · Flash: 120KB · RAM: 32KB
  • board_microchippic32_helvepic32_breadboardside — Debug: No · MCU: 32MX250F128B · Frequency: 48MHz · Flash: 120KB · RAM: 32KB
  • board_microchippic32_helvepic32_smd — Debug: No · MCU: 32MX250F128D · Frequency: 48MHz · Flash: 120KB · RAM: 32KB
  • board_microchippic32_helvepic32_mx270 — Debug: No · MCU: 32MX270F256B · Frequency: 48MHz · Flash: 244KB · RAM: 62KB
  • board_microchippic32_helvepic32_robot — Debug: No · MCU: 32MX270F256D · Frequency: 48MHz · Flash: 244KB · RAM: 62KB
  • board_microchippic32_helvepic32_smd_mx270 — Debug: No · MCU: 32MX270F256D · Frequency: 48MHz · Flash: 244KB · RAM: 62KB

ChipKIT 🦋

  • board_microchippic32_rgb_station — Debug: No · MCU: 32MX270F256D · Frequency: 48MHz · Flash: 240KB · RAM: 62KB

Digilent ✨

  • board_microchippic32_cerebot32mx4 — Debug: No · MCU: 32MX460F512L · Frequency: 80MHz · Flash: 508KB · RAM: 32KB
  • board_microchippic32_cerebot32mx7 — Debug: No · MCU: 32MX795F512L · Frequency: 80MHz · Flash: 508KB · RAM: 128KB
  • board_microchippic32_openscope — Debug: No · MCU: 32MZ2048EFG124 · Frequency: 200MHz · Flash: 1.98MB · RAM: 512KB
  • board_microchippic32_chipkit_cmod — Debug: No · MCU: 32MX150F128D · Frequency: 40MHz · Flash: 124KB · RAM: 32KB
  • board_microchippic32_chipkit_dp32 — Debug: No · MCU: 32MX250F128B · Frequency: 40MHz · Flash: 120KB · RAM: 32KB
  • board_microchippic32_mega_pic32 — Debug: No · MCU: 32MX795F512L · Frequency: 80MHz · Flash: 508KB · RAM: 128KB
  • board_microchippic32_chipkit_mx3 — Debug: No · MCU: 32MX320F128H · Frequency: 80MHz · Flash: 124KB · RAM: 16KB
  • board_microchippic32_chipkit_pro_mx4 — Debug: No · MCU: 32MX460F512L · Frequency: 80MHz · Flash: 508KB · RAM: 32KB
  • board_microchippic32_chipkit_pro_mx7 — Debug: No · MCU: 32MX795F512L · Frequency: 80MHz · Flash: 508KB · RAM: 128KB
  • board_microchippic32_uno_pic32 — Debug: No · MCU: 32MX320F128H · Frequency: 80MHz · Flash: 124KB · RAM: 16KB
  • board_microchippic32_chipkit_wf32 — Debug: No · MCU: 32MX695F512L · Frequency: 80MHz · Flash: 508KB · RAM: 128KB
  • board_microchippic32_chipkit_wifire — Debug: No · MCU: 32MZ2048ECG100 · Frequency: 200MHz · Flash: 1.98MB · RAM: 512KB
  • board_microchippic32_chipkit_uc32 — Debug: No · MCU: 32MX340F512H · Frequency: 80MHz · Flash: 508KB · RAM: 32KB
  • board_microchippic32_chipkit_wifire_revc — Debug: No · MCU: 32MZ2048EFG100 · Frequency: 200MHz · Flash: 1.98MB · RAM: 512KB

🦋 Fubarino

bestie these are the Fubarino babes, all of them built for debugging-free life (Debug: No on every single one, no cap):

  • board_microchippic32_fubarino_mini — Debug: No · MCU: 32MX250F128D · Frequency: 48MHz · Flash: 120KB · RAM: 32KB
  • board_microchippic32_fubarino_sd — Debug: No · MCU: 32MX795F512H · Frequency: 80MHz · Flash: 508KB · RAM: 128KB
  • board_microchippic32_fubarino_mini_20 — Debug: No · MCU: 32MX270F256D · Frequency: 48MHz · Flash: 240KB · RAM: 62KB

✨ Makerology

one (1) board, and she's cute:

  • board_microchippic32_dsmini — Debug: No · MCU: 32MX150F128C · Frequency: 40MHz · Flash: 120KB · RAM: 32KB

💜 MikroElektronika

these two are lowkey the moment, look at that 252MHz:

  • board_microchippic32_clicker2 — Debug: No · MCU: 32MX460F512L · Frequency: 80MHz · Flash: 508KB · RAM: 32KB
  • board_microchippic32_flipnclickmz — Debug: No · MCU: 32MZ2048EFH100 · Frequency: 252MHz · Flash: 1.98MB · RAM: 512KB

🎀 Olimex

the pinguino, iconic name fr:

  • board_microchippic32_pinguino32 — Debug: No · MCU: 32MX440F256H · Frequency: 80MHz · Flash: 252KB · RAM: 32KB

🌈 OpenBCI

just the one, and yes, Debug is No:

  • board_microchippic32_openbci — Debug: No · MCU: 32MX250F128B · Frequency: 40MHz · Flash: 120KB · RAM: 32KB

🔥 PONTECH

all caps energy, one board:

  • board_microchippic32_usbono_pic32 — Debug: No · MCU: 32MX440F512H · Frequency: 80MHz · Flash: 508KB · RAM: 32KB

⭐ Pontech

okay so this is a different heading from PONTECH up there — same vibe, different capitalisation, and she brought two friends instead of one. Not me noticing, but I noticed 💅

  • board_microchippic32_nofire — Debug: No · MCU: 32MZ2048EFG100 · Frequency: 200MHz · Flash: 1.98MB · RAM: 512KB
  • board_microchippic32_quick240_usb — Debug: No · MCU: 32MX795F512L · Frequency: 80MHz · Flash: 508KB · RAM: 128KB

🌸 SeeedStudio

and now we're rolling into the SeeedStudio fam — columns coming in hot are Name, Debug, MCU, Frequency, Flash and RAM, so hold that thought because the actual boards are next…

...and the last row of that group lands like this, bestie:

  • board_microchippic32_cui32stem — Debug: No · MCU: 32MX795F512H · Frequency: 80MHz · Flash: 508KB · RAM: 128KB

🍓 SparkFun

  • board_microchippic32_cui32 — Debug: No · MCU: 32MX440F512H · Frequency: 80MHz · Flash: 508KB · RAM: 32KB

🦋 UBW32

  • board_microchippic32_ubw32_mx460 — Debug: No · MCU: 32MX460F512L · Frequency: 80MHz · Flash: 508KB · RAM: 32KB
  • board_microchippic32_ubw32_mx795 — Debug: No · MCU: 32MX795F512L · Frequency: 80MHz · Flash: 508KB · RAM: 128KB

🎀 chipKIT

  • board_microchippic32_lenny — Debug: No · MCU: 32MX270F256D · Frequency: 40MHz · Flash: 120KB · RAM: 32KB

🌸 element14

  • board_microchippic32_chipkit_pi — Debug: No · MCU: 32MX250F128B · Frequency: 40MHz · Flash: 120KB · RAM: 32KB

🧚 Nordic nRF51

Okay so we're switching platforms entirely now and it's giving main character energy ✨

⚙️ Configuration

projectconf_env_platform = nordicnrf51

Set that and you're locked in, periodt. 💅

The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. 🔥

For more detailed information please visit vendor site. (iykyk 🫶)

📋 Contents

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

✨ Examples

Examples are listed from Nordic nRF51 development platform repository:

  • mbed-blink
  • mbed-serial
  • zephyr-blink
  • mbed-events
  • arduino-blink
  • arduino-ble-led
  • zephyr-ble-eddystone
  • arduino-internal-libs
  • zephyr-drivers-entropy
  • mbed-ble-thermometer

Ten whole examples, no crumbs, we ate. 🍽️💖

🐛 Debugging

piodebug — "1-click" solution for debugging with a zero configuration. Literally so iconic of it. 👑

  • Tools & Debug Probes
  • ✨ On-Board Debug Tools ✨
  • 🫶 External Debug Tools 🫶

🛠️ Tools & Debug Probes 🛠️

okay so real talk bestie: the debugging tools we support are the ones chilling in that "Debug" column, and if you want the full tea you gotta scroll the table sideways (yes, horizontally, it's giving horizontal-scroll main character energy 📜). When you wanna swap between your debugging_tools, you do it with the projectconf_debug_tool option in projectconf. iykyk 💅

WARNING: ⚠️ you're gonna need to install the debug tool drivers that match your system, okay?? don't skip this. Click on the compatible debug tool below for the further instructions — the links have the whole story 💖

👑 On-Board Debug Tools 👑

the boards down here? they have an on-board debug probe and they are READY for debugging, no cap!! 🔥 you do not need to use or buy an external debug probe. periodt. ✨

  • board_nordicnrf51_bbcmicrobit — MCU NRF51822, 16MHz, Flash 256KB, RAM 16KB
  • board_nordicnrf51_calliope_mini — MCU NRF51822, 16MHz, Flash 256KB, RAM 16KB
  • board_nordicnrf51_dfcm_nnn40 — MCU NRF51822, 32MHz, Flash 256KB, RAM 32KB
  • board_nordicnrf51_delta_dfcm_nnn50 — MCU NRF51822, 32MHz, Flash 256KB, RAM 16KB
  • board_nordicnrf51_wallbot_ble — MCU NRF51822, 16MHz, Flash 128KB, RAM 16KB
  • board_nordicnrf51_nrf51_beacon — MCU NRF51822, 32MHz, Flash 256KB, RAM 32KB
  • board_nordicnrf51_nrf51_dongle — MCU NRF51822, 32MHz, Flash 256KB, RAM 32KB
  • board_nordicnrf51_nrf51_mkit — MCU NRF51822, 16MHz, Flash 128KB, RAM 16KB
  • board_nordicnrf51_nrf51_dk — MCU NRF51822, 32MHz, Flash 256KB, RAM 32KB
  • board_nordicnrf51_redBearLabBLENano — MCU NRF51822, 16MHz, Flash 256KB, RAM 32KB
  • board_nordicnrf51_redBearLab — MCU NRF51822, 16MHz, Flash 256KB, RAM 16KB
  • board_nordicnrf51_seeedArchBLE — MCU NRF51822, 16MHz, Flash 128KB, RAM 16KB
  • board_nordicnrf51_seeedArchLink — MCU NRF51822, 16MHz, Flash 256KB, RAM 16KB
  • board_nordicnrf51_seeedTinyBLE — MCU NRF51822, 16MHz, Flash 256KB, RAM 16KB
  • board_nordicnrf51_hrm1017 — MCU NRF51822, 16MHz, Flash 256KB, RAM 16KB
  • board_nordicnrf51_ty51822r3 — MCU NRF51822, 32MHz, Flash 256KB, RAM 32KB
  • board_nordicnrf51_vbluno51 — MCU NRF51822, 16MHz, Flash 128KB, RAM 32KB
  • board_nordicnrf51_nrf51822_y5_mbug — MCU NRF51822, 16MHz, Flash 256KB, RAM 16KB

🌸 External Debug Tools 🌸

now these ones… listen 😭 they're compatible with piodebug but they DEPEND ON an external debug probe. they are NOT READY for debugging, bestie, don't come for me, that's just the facts 🙈. click on the board name for the further details 🫶

  • board_nordicnrf51_bluz_dk — MCU NRF51822, 32MHz, Flash 256KB, RAM 32KB
  • board_nordicnrf51_oshchip — MCU NRF51822, 32MHz, Flash 256KB, RAM 32KB
  • board_nordicnrf51_Sinobit — MCU NRF51822, 32MHz, Flash 256KB, RAM 32KB
  • board_nordicnrf51_waveshare_ble400 — MCU NRF51822, 32MHz, Flash 256KB, RAM 32KB

and that's the whole board lineup for this lil corner of the platformio universe 💜🧚 more coming, stay tuned ⭐

  • board_nordicnrf51_ng_beacon — MCU NRF51822, clock 16MHz, flash 256KB, RAM 32KB (yes bestie, that's the whole vibe of that row, nothing hidden in the empty columns 💅)

Stable and upstream versions ✨

Okay so here's the tea 🫖 — you can switch between stable releases of the Nordic nRF51 development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. Pick your fighter!

Stable 💖

Your comfy, tested, "nothing is on fire today" era. Both of these live in projectconf.
; Latest stable version
[env:latest_stable]
platform = nordicnrf51
board = ...

; Custom stable version
[env:custom_stable]
platform = nordicnrf51@x.y.z
board = ...
  • platform = nordicnrf51 — grabs the latest stable version, no version pin, no stress 🌸
  • platform = nordicnrf51@x.y.z — pins a custom stable version, where x.y.z is the version you want 🎀
  • board = ... — your board goes right there, bestie, don't forget it 😭

Upstream 🔥

The "living on the edge, main character energy" option. Straight from the source.
[env:upstream_develop]
platform = https://github.com/platformio/platform-nordicnrf51.git
board = ...

📦 Packages 📦

okay bestie, here's the whole squad of packages, no skips, no cuts 💖

  • framework-arduinonordicnrf5 — the Arduino Wiring-based Framework, but the Nordic NRF5 Core flavor 🎀
  • framework-mbed — literally just the mbed Framework, that's the whole vibe
  • framework-zephyr — the Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. it's giving main character RTOS energy fr fr 👑
  • framework-zephyr-canopennode — Zephyr module for CANopenNode, which is a free and open source CANopen Stack 🦋
  • framework-zephyr-civetweb — Zephyr module CivetWeb, an Embedded C/C++ web server 🌸
  • framework-zephyr-fatfs — Zephyr module for the FATFS filesystem 💅
  • framework-zephyr-hal-nordic — Nordic nRF5x HAL for the Zephyr framework ✨
  • framework-zephyr-libmetal — Zephyr module for the HAL abstraction layer used by open-amp 🧚
  • framework-zephyr-littlefs — Zephyr module for the littlefs filesystem 🍓
  • framework-zephyr-loramac-node — Zephyr module for the LoRaWAN endpoint stack implementation 💜
  • framework-zephyr-lvgl — Zephyr module for LittlevGL, an Open-source Embedded GUI Library 🌈
  • framework-zephyr-mbedtls — mbedTLS module for Zephyr 🔥
  • framework-zephyr-mcuboot — Zephyr module for MCUboot, a secure bootloader for 32-bit MCUs 💀
  • framework-zephyr-mcumgr — Zephyr module for mcumgr, the management library for 32-bit MCUs 🙈
  • framework-zephyr-mipi-sys-t — Zephyr module for MIPI System Software Trace ⭐
  • framework-zephyr-nrf-hw-models — Zephyr module for NRF52xxx HW models 🎀
  • framework-zephyr-open-amp — Zephyr module for the Open Asymmetric Multi Processing (OpenAMP) framework 🫶
  • framework-zephyr-openthread — OpenThread module for Zephyr 💖
  • framework-zephyr-segger — Zephyr module for Segger RTT ✨
  • framework-zephyr-tinycbor — Zephyr module for the Concise Binary Object Representation Library 🦋
  • tool-cmake — CMake is an open-source, cross-platform family of tools designed to build, test and package software. the way it builds AND tests AND packages?? iconic 🌸
  • tool-dtc — Device tree compiler 🌳
  • tool-gperf — GNU gperf is a perfect hash function generator. perfect, like her 💅
  • tool-jlink — SEGGER J-Link Software and Documentation Pack 🔥
  • tool-ninja — Ninja is a small build system with a focus on speed. small but fast, we love a compact king 👑
  • tool-nrfjprog — nRF5x command line tool 🧚
  • tool-openocd — OpenOCD 🍓
  • tool-sreccat — Merging tool 💜
  • toolchain-gccarmnoneeabi — gcc-arm-embedded ⭐

⚠️ WARNING: Linux Users: 🌈 - Install "udev" rules faq_udev_rules 🙈

no cap, if you're on Linux you gotta handle that udev rules situation, it's in the faq_udev_rules section bestie 💖

Also, real quick bestie:

  • 🍓 Raspberry Pi girlies, please read this article: Enable serial port on Raspberry Pi. Like, actually read it, I'm begging.
  • 🪟 Windows Users: Please check that you have a correctly installed USB driver from your board manufacturer. No driver, no vibes, no flashing. That's the whole thing.

🌈 Frameworks

Okay so here's the framework menu, and every single one of these is a whole personality:

  • framework_arduino — Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving artsy maker main character energy. ✨
  • framework_mbed — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. And on top of RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. Obsessed, honestly. 🔥
  • framework_zephyr — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Safety and security? She's responsible AND cute. 🫶

👑 Boards

NOTE: - You can list pre-configured boards by the cmd_boards command or the PlatformIO Boards Explorer. iykyk 💅 - For more detailed board information, please scroll the tables below by horizontally. Yeah bestie, they're WIDE. That's just how it is. 😭

🦋 BBC

  • board_nordicnrf51_bbcmicrobit — Debug: On-board, MCU: NRF51822, Frequency: 16MHz, Flash: 256KB, RAM: 16KB

💜 BluzDK

  • board_nordicnrf51_bluz_dk — Debug: External, MCU: NRF51822, Frequency: 32MHz, Flash: 256KB, RAM: 32KB

🎀 Calliope

  • board_nordicnrf51_calliope_mini — Debug: On-board, MCU: NRF51822, Frequency: 16MHz, Flash: 256KB, RAM: 16KB

🌸 Delta

  • board_nordicnrf51_dfcm_nnn40 — Debug: On-board, MCU: NRF51822, Frequency: 32MHz, Flash: 256KB, RAM: 32KB
  • board_nordicnrf51_delta_dfcm_nnn50 — Debug: On-board, MCU: NRF51822, Frequency: 32MHz, Flash: 256KB, RAM: 16KB

🌸 JKSoft

  • board_nordicnrf51_wallbot_ble — Debug: On-board · MCU: NRF51822 · Frequency: 16MHz · Flash: 128KB · RAM: 16KB

🌸 Nordic

  • board_nordicnrf51_nrf51_beacon — Debug: On-board · MCU: NRF51822 · Frequency: 32MHz · Flash: 256KB · RAM: 32KB
  • board_nordicnrf51_nrf51_dongle — Debug: On-board · MCU: NRF51822 · Frequency: 32MHz · Flash: 256KB · RAM: 32KB
  • board_nordicnrf51_nrf51_mkit — Debug: On-board · MCU: NRF51822 · Frequency: 16MHz · Flash: 128KB · RAM: 16KB
  • board_nordicnrf51_nrf51_dk — Debug: On-board · MCU: NRF51822 · Frequency: 32MHz · Flash: 256KB · RAM: 32KB

🌸 OSHChip

  • board_nordicnrf51_oshchip — Debug: External · MCU: NRF51822 · Frequency: 32MHz · Flash: 256KB · RAM: 32KB

🌸 RedBearLab

  • board_nordicnrf51_redBearLabBLENano — Debug: On-board · MCU: NRF51822 · Frequency: 16MHz · Flash: 256KB · RAM: 32KB
  • board_nordicnrf51_redBearLab — Debug: On-board · MCU: NRF51822 · Frequency: 16MHz · Flash: 256KB · RAM: 16KB

🌸 SeeedStudio

  • board_nordicnrf51_seeedArchBLE — Debug: On-board · MCU: NRF51822 · Frequency: 16MHz · Flash: 128KB · RAM: 16KB
  • board_nordicnrf51_seeedArchLink — Debug: On-board · MCU: NRF51822 · Frequency: 16MHz · Flash: 256KB · RAM: 16KB
  • board_nordicnrf51_seeedTinyBLE — Debug: On-board · MCU: NRF51822 · Frequency: 16MHz · Flash: 256KB · RAM: 16KB

🌸 Switch Science

  • board_nordicnrf51_hrm1017 — Debug: On-board · MCU: NRF51822 · Frequency: 16MHz · Flash: 256KB · RAM: 16KB
  • board_nordicnrf51_ty51822r3 — Debug: On-board · MCU: NRF51822 · Frequency: 32MHz · Flash: 256KB · RAM: 32KB

🌸 VNG

  • board_nordicnrf51_vbluno51 — Debug: On-board · MCU: NRF51822 · Frequency: 16MHz · Flash: 128KB · RAM: 32KB

🌸 Waveshare

  • board_nordicnrf51_waveshare_ble400 — Debug: External · MCU: NRF51822 · Frequency: 32MHz · Flash: 256KB · RAM: 32KB
└────────────────────────────────────┴──────────┴──────────┴───────────┴───────┴──────┘

okay so that's the tail end of the previous table, bestie, we're moving ON 💅


🎀 ng-beacon

ng-beacon said "I'm small and I beacon" and honestly? iconic.

   ┌─────────────────────────────┬──────────┬──────────┬───────────┬───────┬──────┐
   │ Name                        │ Debug    │ MCU      │ Frequency │ Flash │ RAM  │
   ├─────────────────────────────┼──────────┼──────────┼───────────┼───────┼──────┤
   │ board_nordicnrf51_ng_beacon │ External │ NRF51822 │ 16MHz     │ 256KB │ 32KB │
   └─────────────────────────────┴──────────┴──────────┴───────────┴───────┴──────┘

so like, External debug, NRF51822 brain, 16MHz frequency, 256KB of flash and 32KB of RAM. tiny but thriving 🦋


🌸 sino:bit

the sino:bit, no notes, she's doing great:

    ┌───────────────────────────┬──────────┬──────────┬───────────┬───────┬──────┐
    │ Name                      │ Debug    │ MCU      │ Frequency │ Flash │ RAM  │
    ├───────────────────────────┼──────────┼──────────┼───────────┼───────┼──────┤
    │ board_nordicnrf51_Sinobit │ External │ NRF51822 │ 32MHz     │ 256KB │ 32KB │
    └───────────────────────────┴──────────┴──────────┴───────────┴───────┴──────┘

again External debug, NRF51822 MCU, but this one clocks in at 32MHz with 256KB flash and 32KB RAM. double the speed, same energy, obsessed ✨


💜 y5 design

┌────────────────────────────────────┬──────────┬──────────┬───────────┬───────┬──────┐
│ Name                               │ Debug    │ MCU      │ Frequency │ Flash │ RAM  │
├────────────────────────────────────┼──────────┼──────────┼───────────┼───────┼──────┤
│ board_nordicnrf51_nrf51822_y5_mbug │ On-board │ NRF51822 │ 16MHz     │ 256KB │ 16KB │
└────────────────────────────────────┴──────────┴──────────┴───────────┴───────┴──────┘

On-board debug this time — no external probe needed, we love a self-sufficient queen 👑 — NRF51822, 16MHz, 256KB flash, and 16KB RAM (yes, 16KB, we said what we said).


🌈 Nordic nRF52

⚙️ Configuration

projectconf_env_platform = nordicnrf52

drop that in your projectconf and you're locked in, fr fr.

🫶 Description

The nRF52 Series is built for SPEED — like, the whole point is to crush increasingly complex tasks in the shortest possible time and then go right back to sleep, conserving that precious, precious battery power 🔋. They rock a Cortex-M4F processor and are, and I quote, the most capable Bluetooth Smart SoCs on the market. main character energy, truly.

For more detailed information please visit vendor site.

📋 Contents

  • Tutorials
  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🎓 Tutorials

  • tutorial_nordicnrf52_arduino_debugging_unit_testing
  • tutorial_nordicnrf52_zephyr_debugging_unit_testing_analysis

go read them, they're giving "learn me the things" and we respect it 💖

🍓 Examples

Examples are listed from the Nordic nRF52 development platform repository:

  • mbed-blink
  • mbed-serial
  • zephyr-blink
  • mbed-rtos
  • mbed-events
  • zephyr-net-echo-client
  • arduino-blink
  • arduino-ble-led
  • zephyr-ble-beacon
  • mbed-nfc
  • zephyr-subsys-nvs
  • mbed-dsp
  • mbed-ble-thermometer
  • arduino-nina-b1-generic-example
  • arduino-bluefruit-bleuart
  • arduino-serial-plotter

pick your fighter, they're all slay 🔥

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. literally just click and vibe.

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🔍 Tools & Debug Probes

Supported debugging tools are listed in the "Debug" column. For more detailed information, please scroll the table by horizontal. You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

🧚 On-Board Debug Tools

Boards listed below have an on-board debug probe and ARE READY for debugging! You do not need to use/buy an external debug probe. no extra shopping trip required, bestie, we're debugging straight out the box 🎀

┌───────────────────────────────────────────────┬──────────┬───────────┬───────┬───────┐
│ Name                                          │ MCU      │ Frequency │ Flash │ RAM   │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_laird_bl652_dvk             │ NRF52832 │ 64MHz     │ 512KB │ 64KB  │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_laird_bl654_dvk             │ NRF52840 │ 64MHz     │ 1MB   │ 256KB │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_delta_dfbm_nq620            │ NRF52832 │ 64MHz     │ 512KB │ 64KB  │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_electronut_blip             │ NRF52840 │ 64MHz     │ 1MB   │ 256KB │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_electronut_papyr            │ NRF52840 │ 64MHz     │ 1MB   │ 256KB │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_adafruit_itsybitsy_nrf52840 │ NRF52840 │ 64MHz     │ 796KB │ 243KB │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_nrf52832_mdk                │ NRF52832 │ 64MHz     │ 512KB │ 64KB  │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_nrf52840_mdk                │ NRF52840 │ 64MHz     │ 1MB   │ 256KB │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_nrf52_dk                    │ NRF52832 │ 64MHz     │ 512KB │ 64KB  │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_nrf52840_dk                 │ NRF52840 │ 64MHz     │ 1MB   │ 256KB │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_nrf52840_dk_adafruit        │ NRF52840 │ 64MHz     │ 796KB │ 243KB │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_redbear_blenano2            │ NRF52832 │ 64MHz     │ 512KB │ 64KB  │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_redbear_blend2              │ NRF52832 │ 64MHz     │ 512KB │ 64KB  │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_vbluno52                    │ NRF52832 │ 64MHz     │ 512KB │ 64KB  │
├───────────────────────────────────────────────┼──────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_ublox_evk_nina_b1           │ NRF52832 │ 64MHz     │ 512KB │ 64KB  │
└───────────────────────────────────────────────┴──────────┴───────────┴───────┴───────┘

look at that list. every single one of them 64MHz. consistency? we LOVE to see it 💅 and lowkey the NRF52840 girlies are eating with 1MB flash and 256KB RAM. the adafruit_itsybitsy_nrf52840 and nrf52840_dk_adafruit are out here with 796KB flash and 243KB RAM, which is a whole different vibe but valid 🦋

💀 External Debug Tools

Boards listed below are compatible with piodebug but DEPEND ON an external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details.

🫠 yeah so no cap, if your board lives down here you're gonna need to actually go buy the probe. not the on-board life, sorry bestie 😭
  • board_nordicnrf52_96b_nitrogen — NRF52832, 64MHz, 512KB flash, 64KB RAM 💖
  • board_nordicnrf52_adafruit_feather_nrf52832 — NRF52832, 64MHz, 512KB flash, 64KB RAM ✨
  • board_nordicnrf52_adafruit_feather_nrf52840_sense — NRF52840, 64MHz, 796KB flash, 243KB RAM 🦋
  • board_nordicnrf52_adafruit_feather_nrf52840 — NRF52840, 64MHz, 796KB flash, 243KB RAM 🦋
  • board_nordicnrf52_nano33ble — NRF52840, 64MHz, 960KB flash, 256KB RAM 🌸
  • board_nordicnrf52_bluey — NRF52832, 64MHz, 512KB flash, 64KB RAM 💙
  • board_nordicnrf52_adafruit_cplaynrf52840 — NRF52840, 64MHz, 796KB flash, 243KB RAM 🎀
  • board_nordicnrf52_holyiot_yj16019 — NRF52832, 64MHz, 512KB flash, 64KB RAM ⭐
  • board_nordicnrf52_adafruit_metro_nrf52840 — NRF52840, 64MHz, 796KB flash, 243KB RAM 🫶
  • board_nordicnrf52_thingy_52 — NRF52832, 64MHz, 512KB flash, 64KB RAM 🧚
  • board_nordicnrf52_particle_argon — NRF52840, 64MHz, 796KB flash, 243KB RAM 🌈
  • board_nordicnrf52_particle_boron — NRF52840, 64MHz, 796KB flash, 243KB RAM 🌈
  • board_nordicnrf52_particle_xenon — NRF52840, 64MHz, 796KB flash, 243KB RAM 🌈
  • board_nordicnrf52_sdt52832b — NRF52832, 64MHz, 512KB flash, 64KB RAM 💜
  • board_nordicnrf52_stct_nrf52_minidev — NRF52832, 64MHz, 512KB flash, 64KB RAM 💜
  • board_nordicnrf52_hackaBLE — NRF52832, 64MHz, 512KB flash, 64KB RAM 💀

🌈 Stable and upstream versions

okay bestie so here's the tea ☕ you can switch between the stable releases of the Nordic nRF52 development platform and the latest upstream version using the projectconf_env_platform option in projectconf — and yes, it works exactly like the description below says, no cap 💅

✨ Stable

; Latest stable version [env:latest_stable] platform = nordicnrf52 board = ...

; Custom stable version [env:custom_stable] platform = nordicnrf52@x.y.z board = ...

So the first one grabs you the latest stable automatically, and the second one lets you pin it to your own custom stable version with x.y.z — the way that you can just lock in exactly which release you want 😌 iconic.

🦋 Upstream

[env:upstream_develop] platform = https://github.com/platformio/platform-nordicnrf52.git board = ...

And that's the upstream one right there — it pulls straight from the git URL so you're living on the bleeding edge, main character energy fr fr 🔥

🎀 Packages 🎀

okay bestie, this is the part where we meet the whole squad 🫶 — every package name and its lil description, exactly as listed. No skipping, no summarising, we're doing all of them. Buckle up 💖

  • framework-arduino-nrf52-mbedos — the Arduino framework that supports mbed-enabled boards (nRF52 core). yes she does both, she's versatile ✨
  • framework-arduinoadafruitnrf52 — an Arduino Wiring-based Framework (Nordic nRF52 BLE SoC)). Adafruit said let there be BLE and it was so 💅
  • framework-arduinonordicnrf5 — an Arduino Wiring-based Framework (Nordic NRF5 Core). the O.G. Nordic flavour 🧊
  • framework-mbed — the mbed Framework. short name, huge energy 👑
  • framework-zephyr — the Primary Git Repository for the Zephyr Project. Zephyr is, and I quote, a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. she's giving main character RTOS fr fr 🔥
  • framework-zephyr-canopennode — a Zephyr module for CANopenNode — a free and open source CANopen Stack. free AND open source? we love a generous queen 🎀
  • framework-zephyr-civetweb — a Zephyr module, CivetWeb Embedded C/C++ web server. serving web pages from a microcontroller, iconic behaviour 🌐
  • framework-zephyr-fatfs — a Zephyr module for the FATFS filesystem. files? on your tiny chip? slay 💾
  • framework-zephyr-hal-nordic — the Nordic nRF5x HAL for the Zephyr framework. hardware abstraction but make it Nordic ❄️
  • framework-zephyr-libmetal — a Zephyr module for the HAL abstraction layer used by open-amp. layers on layers, it's giving onion 🧅
  • framework-zephyr-littlefs — a Zephyr module for the littlefs filesystem. little by name, mighty by nature 🦋
  • framework-zephyr-loramac-node — a Zephyr module for the LoRaWAN endpoint stack implementation. long range, low power, high vibes 📡
  • framework-zephyr-lvgl — a Zephyr module for LittlevGL — an Open-source Embedded GUI Library. GUI on an MCU?? obsessed 😭💖
  • framework-zephyr-mbedtls — the mbedTLS module for Zephyr. crypto but cosy 🔐
  • framework-zephyr-mcuboot — a Zephyr module for MCUboot — a secure bootloader for 32-bit MCUs. she boots, she's secure, she's booked and busy 🥾
  • framework-zephyr-mcumgr — a Zephyr module for mcumgr, a management library for 32-bit MCUs. managing your MCUs so you don't have to 🫡
  • framework-zephyr-mipi-sys-t — a Zephyr module for MIPI System Software Trace. tracing, but make it MIPI 🔍
  • framework-zephyr-nrf-hw-models — a Zephyr module for NRF52xxx HW models. hardware models, the simulation girlies ate 🧚
  • framework-zephyr-open-amp — a Zephyr module for the Open Asymmetric Multi Processing (OpenAMP) framework. asymmetric and unbothered 💅
  • framework-zephyr-openthread — the OpenThread module for Zephyr. threads everywhere, we love a mesh moment 🕸️
  • framework-zephyr-segger — a Zephyr module for Segger RTT. real time transfer, real time slay ⚡
  • framework-zephyr-tinycbor — a Zephyr module for the Concise Binary Object Representation Library. CBOR said concise and she meant it 📦
  • tool-bossac-nordicnrf52 — the Basic Open Source SAM-BA Application (BOSSA) for nRF52. BOSSA makes the boards go brrr 🚀
  • tool-cmake — CMake is an open-source, cross-platform family of tools designed to build, test and package software. the build system that runs the world, no cap 🏗️
  • tool-dtc — the Device tree compiler. trees, but compiled 🌳
  • tool-gperf — GNU gperf is a perfect hash function generator. perfect? she said it, not me ✨
  • tool-jlink — the SEGGER J-Link Software and Documentation Pack. software AND docs, a two-for-one 🎁
  • tool-ninja — Ninja is a small build system with a focus on speed. small, fast, silent, deadly 🥷
  • tool-nrfjprog — the nRF5x command line tool. terminal girlies rise 🖥️
  • tool-openocd — OpenOCD. that's it, that's the description, and honestly she needs no introduction 💀
  • tool-sreccat — a Merging tool. merges things. mysterious. we respect the privacy 🙈
  • toolchain-gccarmnoneeabi — gcc-arm-embedded. the toolchain that compiles all of the above, the backbone of the operation 🦴👑

and then the very next thing on the page kicks off a whole new table:

┌────────────────────────────────┬────────────────────────────┐

more coming, don't go anywhere 💖

⚠️ WARNING ⚠️

Linux besties: 💅

  • Install "udev" rules faq_udev_rules
  • Raspberry Pi girlies, please read this article Enable serial port on Raspberry Pi.

Windows besties: 🪟

  • Please check that you have a correctly installed USB driver from board manufacturer

✨ Frameworks ✨

  • framework_arduino — the Arduino Wiring-based Framework, which allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving art installation energy fr fr 🎨
  • framework_mbed — The mbed framework 💜 The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. Like, they really said "we contain multitudes" and meant it.
  • framework_zephyr — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Safety AND security? That's the standard, periodt. 🛡️

🎀 Boards 🎀

NOTE:
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer 🔍
  • For more detailed board information please scroll the tables below by horizontally.

96Boards

  • board_nordicnrf52_96b_nitrogen
    • Debug: External
    • MCU: NRF52832
    • Frequency: 64MHz
    • Flash: 512KB
    • RAM: 64KB

Adafruit 🍓

  • board_nordicnrf52_adafruit_feather_nrf52832
    • Debug: External
    • MCU: NRF52832
    • Frequency: 64MHz
    • Flash: 512KB
    • RAM: 64KB
  • board_nordicnrf52_adafruit_feather_nrf52840_sense
    • Debug: External
    • MCU: NRF52840
    • Frequency: 64MHz
    • Flash: 796KB
    • RAM: 243KB
  • board_nordicnrf52_adafruit_feather_nrf52840
    • Debug: External
    • MCU: NRF52840
    • Frequency: 64MHz
    • Flash: 796KB
    • RAM: 243KB
  • board_nordicnrf52_adafruit_cplaynrf52840
    • Debug: External
    • MCU: NRF52840
    • Frequency: 64MHz
    • Flash: 796KB
    • RAM: 243KB
  • board_nordicnrf52_adafruit_itsybitsy_nrf52840
    • Debug: On-board
    • MCU: NRF52840
    • Frequency: 64MHz
    • Flash: 796KB
    • RAM: 243KB
  • board_nordicnrf52_adafruit_metro_nrf52840
    • Debug: External
    • MCU: NRF52840
    • Frequency: 64MHz
    • Flash: 796KB
    • RAM: 243KB

Arduino 🧡

  • board_nordicnrf52_nano33ble
    • Debug: External
    • MCU: NRF52840
    • Frequency: 64MHz
    • Flash: 960KB
    • RAM: 256KB

Delta

  • board_nordicnrf52_delta_dfbm_nq620 — debug: On-board · MCU: NRF52832 · Frequency: 64MHz · Flash: 512KB · RAM: 64KB

🌸 Electronut Labs 🌸

bestie these two are giving external debug probe energy, they don't ship with their own debugger so you're bringing your own, no cap 💅

  • board_nordicnrf52_bluey — debug: External · MCU: NRF52832 · Frequency: 64MHz · Flash: 512KB · RAM: 64KB
  • board_nordicnrf52_hackaBLE — debug: External · MCU: NRF52832 · Frequency: 64MHz · Flash: 512KB · RAM: 64KB

🦋 ElectronutLabs 🦋

(yes, same crew, just spelled with no space this time, it's giving ✨branding✨)

  • board_nordicnrf52_electronut_blip — debug: On-board · MCU: NRF52840 · Frequency: 64MHz · Flash: 1MB · RAM: 256KB
  • board_nordicnrf52_electronut_papyr — debug: On-board · MCU: NRF52840 · Frequency: 64MHz · Flash: 1MB · RAM: 256KB

🎀 Holyiot 🎀

one board, one vibe, and it's the NRF52832 era

  • board_nordicnrf52_holyiot_yj16019 — debug: External · MCU: NRF52832 · Frequency: 64MHz · Flash: 512KB · RAM: 64KB

💜 Laird Connectivity 💜

both of these have on-board debug which is lowkey the glow-up, you don't gotta go hunting for a probe 🫶

  • board_nordicnrf52_laird_bl652_dvk — debug: On-board · MCU: NRF52832 · Frequency: 64MHz · Flash: 512KB · RAM: 64KB
  • board_nordicnrf52_laird_bl654_dvk — debug: On-board · MCU: NRF52840 · Frequency: 64MHz · Flash: 1MB · RAM: 256KB

🍓 Makerdiary 🍓

the little mdk duo, one 32 one 40, both with that on-board debug 💖

  • board_nordicnrf52_nrf52832_mdk — debug: On-board · MCU: NRF52832 · Frequency: 64MHz · Flash: 512KB · RAM: 64KB
  • board_nordicnrf52_nrf52840_mdk — debug: On-board · MCU: NRF52840 · Frequency: 64MHz · Flash: 1MB · RAM: 256KB

👑 Nordic 👑

okay so this is THE house that made the chip, and they brought the whole family. Thingy is out here doing external debug (iconic little puck), and then the dev kits are all on-board. Also peep the Adafruit-flavored 52840 DK, its flash and RAM numbers are not the same as the vanilla one — 796KB flash / 243KB RAM, she's special, don't @ me 🔥

  • board_nordicnrf52_thingy_52 — debug: External · MCU: NRF52832 · Frequency: 64MHz · Flash: 512KB · RAM: 64KB
  • board_nordicnrf52_nrf52_dk — debug: On-board · MCU: NRF52832 · Frequency: 64MHz · Flash: 512KB · RAM: 64KB
  • board_nordicnrf52_nrf52840_dk — debug: On-board · MCU: NRF52840 · Frequency: 64MHz · Flash: 1MB · RAM: 256KB
  • board_nordicnrf52_nrf52840_dk_adafruit — debug: On-board · MCU: NRF52840 · Frequency: 64MHz · Flash: 796KB · RAM: 243KB

🌈 Particle 🌈

argon, boron, xenon — not me stanning a board lineup that sounds like it's from the periodic table 💀 all three are external debug, all three run the NRF52840, all three clock in at 796KB flash and 243KB RAM. consistent queens.

  • board_nordicnrf52_particle_argon — debug: External · MCU: NRF52840 · Frequency: 64MHz · Flash: 796KB · RAM: 243KB
  • board_nordicnrf52_particle_boron — debug: External · MCU: NRF52840 · Frequency: 64MHz · Flash: 796KB · RAM: 243KB
  • board_nordicnrf52_particle_xenon — debug: External · MCU: NRF52840 · Frequency: 64MHz · Flash: 796KB · RAM: 243KB
reminder bestie: every one of these is 64MHz, because that's just the nRF52 clock speed and it's not gonna change per board, iykyk ⭐

and that's the nRF52 board roll call so far — next part's got more, so don't go anywhere 💅✨

💖 RedBearLab 💖

  • board_nordicnrf52_redbear_blenano2 — debug: On-board ✨ MCU: NRF52832 🌸 freq: 64MHz ⚡ flash: 512KB 🎀 RAM: 64KB 💅
  • board_nordicnrf52_redbear_blend2 — debug: On-board ✨ MCU: NRF52832 🌸 freq: 64MHz ⚡ flash: 512KB 🎀 RAM: 64KB 💅

okay both of these are giving the exact same energy, same NRF52832 chip, same 64MHz, same 512KB flash, same 64KB RAM, both with on-board debug. twin icons fr fr 👑


🦋 Sigma Delta Technologies 🦋

  • board_nordicnrf52_sdt52832b — debug: External 🫶 MCU: NRF52832 🌈 freq: 64MHz ⚡ flash: 512KB 🎀 RAM: 64KB 💜

not the External debug tho — bestie you're gonna need your own debug probe for this one, it's not built in 😭


🌸 Taida Century 🌸

  • board_nordicnrf52_stct_nrf52_minidev — debug: External 🫶 MCU: NRF52832 🌈 freq: 64MHz ⚡ flash: 512KB 🎀 RAM: 64KB 💜

same deal here, External debug, so bring your own flasher, no cap 🙈


✨ VNG ✨

  • board_nordicnrf52_vbluno52 — debug: On-board 💖 MCU: NRF52832 🌸 freq: 64MHz ⚡ flash: 512KB 🎀 RAM: 64KB 💅

on-board debug, so it's plug-and-play coded, we love to see it 🥰


👑 u-blox 👑

  • board_nordicnrf52_ublox_evk_nina_b1 — debug: On-board 💖 MCU: NRF52832 🌸 freq: 64MHz ⚡ flash: 512KB 🎀 RAM: 64KB 💅

another on-board debug legend, and yes it's the same NRF52832 spec sheet as literally everyone else in this little NRF52 friend group, iconic 🌈


lowkey noticing a pattern here bestie: every single one of these is an NRF52832 running at 64MHz with 512KB flash and 64KB RAM. the only thing that changes is the name and whether the debug is On-board or External 💀 that's it, that's the whole vibe check 🦋

okay bestie we're literally mid-table rn, no biggie, we just keep scrolling horizontally like the icons we are 🫶

Nuclei 🧚

Configuration

projectconf_env_platform = nuclei
"Find professional RISC-V Processor IP in Nuclei, first professional RISC-V IP company in Mainland China, match all your requirements in AIoT Era." — that's the vendor's own words, and honestly? they ate. 👑

For more detailed information please visit vendor site. (Their words, not mine, but yes, go look 💜)


Contents ✨

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

Examples 🌸

Examples are listed from Nuclei development platform repository:

  • freertos_demo
  • rtthread_demo
  • demo_dsp
  • helloworld
  • dhrystone
  • whetstone
  • demo_eclic
  • ucosii_demo
  • coremark
  • demo_timer

ten little icons, all lined up, no cap 💅


Debugging 🦋

piodebug — the "1-click" solution for debugging with a zero configuration. literally the main character of your dev setup, periodt.

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

Tools & Debug Probes 🔥

Supported debugging tools are listed in the "Debug" column. For more detailed information, please scroll the table by horizontal. You can switch between debug tools using the projectconf_debug_tool option in projectconf. iykyk, it's giving dropdown menu energy ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

not me reminding you to install drivers... but like, install the drivers bestie 😭 drivers first, tears never.


On-Board Debug Tools 🎀

Boards listed below have an on-board debug probe and ARE READY for debugging! You do not need to use/buy an external debug probe. obsessed, zero extra shopping required 🫶

  • board_nuclei_gd32vf103v_rvstar — MCU GD32VF103VBT6, Frequency 108MHz, Flash 128KB, RAM 32KB
  • board_nuclei_hbird_eval — MCU HUMMINGBIRD, Frequency 5MHz, Flash 64KB, RAM 64KB

External Debug Tools 🌈

Boards listed below are compatible with piodebug but DEPEND ON an external debug probe. They ARE NOT READY for debugging. Please click on the board name for the further details. so close yet so far, the plot twist nobody asked for 💀

  • board_nuclei_gd32vf103v_eval — MCU GD32VF103VBT6, Frequency 108MHz, Flash 128KB, RAM 32KB

Stable and upstream versions ⭐

You can switch between stable releases of Nuclei development platform and the latest upstream version using the projectconf_env_platform option in projectconf as described below. pick your fighter, bestie 👑

Stable

; Latest stable version
[env:latest_stable]
platform = nuclei
board = ...

; Custom stable version
[env:custom_stable]
platform = nuclei@x.y.z
board = ...

Upstream

[env:upstream_develop]
platform = https://github.com/Nuclei-Software/platform-nuclei.git
board = ...

okay so that's the env block finishing up — platform points straight at the Nuclei-Software repo, and board = ... is just vibes until you fill it in yourself 💅


✨ PACKAGES ✨

bestie these are the packages this platform drags in for you, no cap 🫶

  • framework-nuclei-sdk — Nuclei N/NX Embedded Software Development Kit 🧚
  • tool-jlink — SEGGER J-Link Software and Documentation Pack 🔥
  • tool-openocd-nuclei — OpenOCD branch with Nuclei RISCV support 👑
  • toolchain-riscv-gcc-nuclei — Nuclei RISC-V GCC toolchain ⭐

a whole toolkit, literally — a framework, a debugger, an OpenOCD fork and a compiler all in one bag 🎀

⚠️ WARNING ⚠️

read this part, fr fr, it's giving "you will be sad if you skip it" 😭

Linux Users:

  • Install "udev" rules faq_udev_rules
  • Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.

Windows Users:

  • Please check that you have a correctly installed USB driver from board manufacturer

like... check your drivers, bestie, it takes two seconds and saves you an hour of crying 💀


🌈 FRAMEWORKS 🌈

  • framework_nuclei-sdk — Open Source Software Development Kit for the Nuclei N/NX processors 💖

one framework, but she's the main character and she knows it ✨


🦋 BOARDS 🦋

📝 NOTE

  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer 🔍
  • For more detailed board information please scroll the tables below by horizontally.
yeah the tables get wide, bestie — horizontal scroll is your friend here, that's not a typo 😭

GigaDevice

  • board_nuclei_gd32vf103v_eval — Debug: External · MCU: GD32VF103VBT6 · Frequency: 108MHz · Flash: 128KB · RAM: 32KB 🎀

Nuclei

  • board_nuclei_gd32vf103v_rvstar — Debug: On-board · MCU: GD32VF103VBT6 · Frequency: 108MHz · Flash: 128KB · RAM: 32KB 💅
  • board_nuclei_hbird_eval — Debug: On-board · MCU: HUMMINGBIRD · Frequency: 5MHz · Flash: 64KB · RAM: 64KB 🐦

HUMMINGBIRD as an MCU name is genuinely iconic, i'm obsessed 🫶 and yes, that's 5MHz for hbird vs 108MHz for the GD32 ones — different little guys, different speeds, no cap ⭐

├────────────────────────────────┴───┼──────┴───┼──────────┼┴──────────┼┴──────┼┴─────┼┘
│                                    │          │          │           │       │      │
│  NXP i.MX RT                       │          │          │           │       │      │
│      Configuration                 │          │          │           │       │      │
│             projectconf_env_platform = nxpimxrt          │           │       │      │
│                                    │          │          │           │       │      │
│      The i.MX RT series of crossover processors features the Arm Cortex-M    │      │
│      core, real-time functionality and MCU usability at a cost-effective     │      │
│      price.                        │          │          │           │       │      │
│                                    │          │          │           │       │      │
│      For more detailed information please visit vendor site.         │       │      │

okay bestie 💖 we're still deep in the NXP i.MX RT zone and there's genuinely so much good stuff here, buckle up 🎀

The vibe: these are crossover processors that have the Arm Cortex-M core, real-time functionality, and MCU usability at a cost-effective price. That's the whole pitch, fr fr. Want more detail? Go peep the vendor site 👑


✨ Contents ✨

Here's the lil roadmap of everything in this section, in order:

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🌸 Examples 🌸

These examples come straight from the NXP i.MX RT development platform repository, so you know they're the real deal 💅:

  • mbed-blink
  • zephyr-blink
  • mbed-rtos-ethernet
  • zephyr-synchronization

🦋 Debugging 🦋

piodebug — the "1-click" solution for debugging with a zero configuration. Literally just vibes and it works, no cap ✨

  • Tools & Debug Probes
    • On-Board Debug Tools

💜 Tools & Debug Probes 💜

The supported debugging tools are all listed in the "Debug" column, okay? For more detailed info you gotta scroll the table by horizontal (yes, horizontally, it's giving wide-table energy 😭). And bestie, you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf 🎀

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions. do not skip this, i'm so serious 🙈

🎀 On-Board Debug Tools 🎀

Okay so the boards listed below have an on-board debug probe and are READY for debugging! You do not need to use or buy an external debug probe. Slay. Periodt. 👑

───────────────────────────────────────────────────────────────────────────────
│ Name                          │ MCU             │ Frequency │ Flash │ RAM   │
├───────────────────────────────┼─────────────────┼───────────┼───────┼───────┤
│ board_nxpimxrt_mimxrt1010_evk │ MIMXRT1011DAE5A │ 500MHz    │ 64KB  │ 128KB │
├───────────────────────────────┼─────────────────┼───────────┼───────┼───────┤
│ board_nxpimxrt_mimxrt1015_evk │ MIMXRT1015DAF5A │ 500MHz    │ 96KB  │ 128KB │
├───────────────────────────────┼─────────────────┼───────────┼───────┼───────┤
│ board_nxpimxrt_mimxrt1020_evk │ MIMXRT1021DAG5A │ 500MHz    │ 64MB  │ 256MB │
├───────────────────────────────┼─────────────────┼───────────┼───────┼───────┤
│ board_nxpimxrt_mimxrt1050_evk │ MIMXRT1052DVL6B │ 600MHz    │ 64MB  │ 512KB │
├───────────────────────────────┼─────────────────┼───────────┼───────┼───────┤
│ board_nxpimxrt_mimxrt1060_evk │ MIMXRT1062DVL6A │ 600MHz    │ 64MB  │ 1MB   │
├───────────────────────────────┼─────────────────┼───────────┼───────┼───────┤
│ board_nxpimxrt_mimxrt1064_evk │ MIMXRT1064DVL6A │ 600MHz    │ 4MB   │ 1MB   │
└───────────────────────────────┴─────────────────┴───────────┴───────┴───────┘

🌈 Stable and upstream versions 🌈

You can switch between stable releases of the NXP i.MX RT development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below 🫶

⭐ Stable ⭐

; Latest stable version
[env:latest_stable]
platform = nxpimxrt
board = ...

; Custom stable version
[env:custom_stable]
platform = nxpimxrt@x.y.z
board = ...

🧚 Upstream 🧚

[env:upstream_develop]
platform = https://github.com/platformio/platform-nxpimxrt.git
board = ...

lowkey iconic how simple that is, right? and there's more coming bestie, don't go anywhere 💖✨

…and the list just keeps going, bestie, because Zephyr does not do things halfway 👇

  • framework-mbed — the mbed Framework 🧚
  • framework-zephyr — the Primary Git Repository for the Zephyr Project. Zephyr is a new-generation, scalable, optimized, secure RTOS for multiple hardware architectures 👑 (yes, all of that, it's giving main character RTOS)
  • framework-zephyr-canopennode — Zephyr module for CANopenNode — a free and open source CANopen Stack 🌸
  • framework-zephyr-civetweb — Zephyr module CivetWeb, the embedded C/C++ web server 🕸️
  • framework-zephyr-fatfs — Zephyr module for the FATFS filesystem 💾
  • framework-zephyr-hal-nxp — NXP HAL for the Zephyr framework 🔧
  • framework-zephyr-libmetal — Zephyr module for the HAL abstraction layer used by open-amp ✨
  • framework-zephyr-littlefs — Zephyr module for the littlefs filesystem 🍓
  • framework-zephyr-loramac-node — Zephyr module for the LoRaWAN endpoint stack implementation 📡
  • framework-zephyr-lvgl — Zephyr module for LittlevGL — an open-source embedded GUI Library 🎀
  • framework-zephyr-mbedtls — mbedTLS module for Zephyr 🔐
  • framework-zephyr-mcuboot — Zephyr module for MCUboot — a secure bootloader for 32-bit MCUs 🥾
  • framework-zephyr-mcumgr — Zephyr module for mcumgr, the management library for 32-bit MCUs 🛠️
  • framework-zephyr-mipi-sys-t — Zephyr module for MIPI System Software Trace 🔍
  • framework-zephyr-open-amp — Zephyr module for the Open Asymmetric Multi Processing (OpenAMP) framework 🦋
  • framework-zephyr-openthread — OpenThread module for Zephyr 🧵
  • framework-zephyr-segger — Zephyr module for Segger RTT 📶
  • framework-zephyr-tinycbor — Zephyr module for the Concise Binary Object Representation Library 🧺
  • tool-cmake — CMake is an open-source, cross-platform family of tools designed to build, test and package software 🏗️
  • tool-dtc — the device tree compiler 🌳
  • tool-gperf — GNU gperf is a perfect hash function generator ✨
  • tool-jlink — SEGGER J-Link Software and Documentation Pack 🔌
  • tool-ninja — Ninja is a small build system with a focus on speed 🥷
  • tool-openocd — OpenOCD 🐞
  • tool-pyocd — open source python library for programming and debugging ARM Cortex-M microcontrollers using CMSIS-DAP 🐍
  • toolchain-gccarmnoneeabi — gcc-arm-embedded 🧰

⚠️ WARNING:

Linux Users:

  • Install udev rules faq_udev_rules 👀
  • Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. 🍓

Windows Users:

Please check that you have a correctly installed USB driver from the board manufacturer 🪟🔌


✨ Frameworks ✨

okay bestie, here's the framework menu, and it's giving short but iconic 💅

  • framework_mbed — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🌸
  • framework_zephyr — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥

🧸 Boards 🧸

NOTE: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

NXP 👑

ngl these are some chunky little boards, here's the whole lineup, no skips:

  • board_nxpimxrt_mimxrt1010_evk — Debug: On-board · MCU: MIMXRT1011DAE5A · Frequency: 500MHz · Flash: 64KB · RAM: 128KB
  • board_nxpimxrt_mimxrt1015_evk — Debug: On-board · MCU: MIMXRT1015DAF5A · Frequency: 500MHz · Flash: 96KB · RAM: 128KB
  • board_nxpimxrt_mimxrt1020_evk — Debug: On-board · MCU: MIMXRT1021DAG5A · Frequency: 500MHz · Flash: 64MB · RAM: 256MB
  • board_nxpimxrt_mimxrt1050_evk — Debug: On-board · MCU: MIMXRT1052DVL6B · Frequency: 600MHz · Flash: 64MB · RAM: 512KB
  • board_nxpimxrt_mimxrt1060_evk — Debug: On-board · MCU: MIMXRT1062DVL6A · Frequency: 600MHz · Flash: 64MB · RAM: 1MB
  • board_nxpimxrt_mimxrt1064_evk — Debug: On-board · MCU: MIMXRT1064DVL6A · Frequency: 600MHz · Flash: 4MB · RAM: 1MB

💜 NXP LPC 💜

Configuration

set this in your project config, bestie:

projectconf_env_platform = nxplpc

The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. 🦋

For more detailed information please visit vendor site.

Contents

  1. Examples
  2. Debugging
  3. Stable and upstream versions
  4. Packages
  5. Frameworks
  6. Boards

🌈 Examples 🌈

Examples are listed from NXP LPC development platform repository:

  • mbed-blink
  • mbed-serial
  • zephyr-blink
  • mbed-rtos
  • mbed-events
  • mbed-custom-target
  • zephyr-drivers-watchdog
  • mbed-rtos-ethernet
  • mbed-dsp
  • zephyr-synchronization

like, the range?? iconic. ✨


🔧 Debugging 🔧

pio debug — "1-click" solution for debugging with a zero configuration. no cap, it really is that easy 😭

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🎀 Tools & Debug Probes 🎀

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

On-Board Debug Tools 🎀

Okay bestie, listen — these boards have an on-board debug probe and they are READY for debugging! 💅 You do not need to go buy or plug in some external debug probe. It's giving self-sufficient. It's giving main character. No extra hardware, no tears. ✨

So here's the whole roster, with their MCU, frequency, flash and RAM, because I know you love a full spec sheet:

  • board_nxplpc_lpc11u24_301 — MCU LPC11U24, 48MHz, Flash 32KB, RAM 8KB
  • board_nxplpc_lpc4330_m4 — MCU LPC4330, 204MHz, Flash 8MB, RAM 264KB
  • board_nxplpc_elektor_cocorico — MCU LPC812, 30MHz, Flash 16KB, RAM 4KB
  • board_nxplpc_lpc4088_dm — MCU LPC4088, 120MHz, Flash 512KB, RAM 96KB
  • board_nxplpc_lpc4088 — MCU LPC4088, 120MHz, Flash 512KB, RAM 96KB
  • board_nxplpc_lpc11u68 — MCU LPC11U68, 50MHz, Flash 256KB, RAM 36KB
  • board_nxplpc_lpc824 — MCU LPC824, 30MHz, Flash 32KB, RAM 8KB
  • board_nxplpc_lpc812 — MCU LPC812, 30MHz, Flash 16KB, RAM 4KB
  • board_nxplpc_lpc54114 — MCU LPC54114J256BD64, 100MHz, Flash 256KB, RAM 192KB
  • board_nxplpc_lpc546xx — MCU LPC54608ET512, 180MHz, Flash 512KB, RAM 200KB
  • board_nxplpc_lpc11u24 — MCU LPC11U24, 48MHz, Flash 32KB, RAM 8KB
  • board_nxplpc_lpc1768 — MCU LPC1768, 96MHz, Flash 512KB, RAM 64KB
  • board_nxplpc_seeedArchPro — MCU LPC1768, 96MHz, Flash 512KB, RAM 64KB
  • board_nxplpc_lpc1114fn28 — MCU LPC1114FN28, 48MHz, Flash 32KB, RAM 4KB
  • board_nxplpc_ssci824 — MCU LPC824, 30MHz, Flash 32KB, RAM 8KB
  • board_nxplpc_ubloxc027 — MCU LPC1768, 96MHz, Flash 512KB, RAM 64KB

Sixteen boards, all plugged-in-and-ready energy. Obsessed. 🫶


External Debug Tools 🙈

Now the other list — and bestie, read this one carefully, because it's a different vibe entirely. These boards are compatible with piodebug but they DEPEND ON an external debug probe. So they are NOT READY for debugging out of the box. 😭 You gotta bring your own probe, fr fr. And if you want the further details, you click on the board name. That's the whole assignment. 💀

  • board_nxplpc_lpc11u35_501 — MCU LPC11U35, 48MHz, Flash 64KB, RAM 10KB
  • board_nxplpc_lpc1347 — MCU LPC1347, 72MHz, Flash 64KB, RAM 12KB
  • board_nxplpc_lpc11u35 — MCU LPC11U35, 48MHz, Flash 64KB, RAM 10KB
  • board_nxplpc_blueboard_lpc11u24 — MCU LPC11U24, 48MHz, Flash 32KB, RAM 8KB
  • board_nxplpc_lpc11c24 — MCU LPC11C24, 48MHz, Flash 32KB, RAM 8KB
  • board_nxplpc_lpc11u34_421 — MCU LPC11U34, 48MHz, Flash 40KB, RAM 8KB
  • board_nxplpc_lpc11u37_501 — MCU LPC11U37, 48MHz, Flash 128KB, RAM 10KB
  • board_nxplpc_lpc1549 — MCU LPC1549, 72MHz, Flash 256KB, RAM 36KB
  • board_nxplpc_dipcortexm0 — MCU LPC11U24, 50MHz, Flash 32KB, RAM 8KB
  • board_nxplpc_lpc11u35_y5_mbug — MCU LPC11U35, 48MHz, Flash 64KB, RAM 10KB
Not me being dramatic, but seriously: external probe required. No probe, no debug. The vibe check says bring hardware. 🧚

Stable and upstream versions 🌈

So here's the cute part — you can switch between the stable releases of the NXP LPC development platform and the latest upstream version using the projectconf_env_platform option in projectconf, exactly like described below. It's giving ✨ choices ✨.

Stable 🍓

Want the stable life? Pick your flavor:

; Latest stable version
[env:latest_stable]
platform = nxplpc
board = ...

; Custom stable version
[env:custom_stable]
platform = nxplpc@x.y.z
board = ...

So latest_stable just grabs nxplpc as-is, and custom_stable pins it down to a specific nxplpc@x.y.z — you decide how spicy you want your version pinning to be. 💖

Upstream 🦋

And if you're feeling adventurous and wanna live on the bleeding edge (develop branch energy, we love her):

[env:upstream_develop]
platform = https://github.com/platformio/platform-nxplpc.git
board = ...

That's the upstream_develop env pulling straight from the git URL. Iconic. 👑

🎀 Packages 🎀

okay bestie, here's the full lineup of packages — every single one, no skips 💅

  • framework-mbed — mbed Framework
  • framework-zephyr — Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
  • framework-zephyr-canopennode — Zephyr module for CANopenNode - a free and open source CANopen Stack
  • framework-zephyr-civetweb — Zephyr module CivetWeb Embedded C/C++ web server
  • framework-zephyr-fatfs — Zephyr module for FATFS filesystem
  • framework-zephyr-hal-nxp — NXP HAL for Zephyr framework
  • framework-zephyr-libmetal — Zephyr module for HAL abstraction layer used by open-amp
  • framework-zephyr-littlefs — Zephyr module for littlefs filesystem
  • framework-zephyr-loramac-node — Zephyr module for LoRaWAN endpoint stack implementation
  • framework-zephyr-lvgl — Zephyr module for LittlevGL - an Open-source Embedded GUI Library
  • framework-zephyr-mbedtls — mbedTLS module for Zephyr
  • framework-zephyr-mcuboot — Zephyr module for MCUboot - a secure bootloader for 32-bit MCUs
  • framework-zephyr-mcumgr — Zephyr module for mcumgr management library for 32-bit MCUs
  • framework-zephyr-mipi-sys-t — Zephyr module for MIPI System Software Trace
  • framework-zephyr-open-amp — Zephyr module for Open Asymmetric Multi Processing (OpenAMP) framework
  • framework-zephyr-openthread — OpenThread module for Zephyr
  • framework-zephyr-segger — Zephyr module for Segger RTT
  • framework-zephyr-tinycbor — Zephyr module for Concise Binary Object Representation Library
  • tool-cmake — CMake is an open-source, cross-platform family of tools designed to build, test and package software.
  • tool-dtc — Device tree compiler
  • tool-gperf — GNU gperf is a perfect hash function generator.
  • tool-jlink — SEGGER J-Link Software and Documentation Pack
  • tool-ninja — Ninja is a small build system with a focus on speed.
  • tool-openocd — OpenOCD
  • tool-pyocd — Open source python library for programming and debugging ARM Cortex-M microcontrollers using CMSIS-DAP
  • toolchain-gccarmnoneeabi — gcc-arm-embedded

WARNING: 🚨 bestie pls read this before you come for me, okay?

Linux Users:

  • Install "udev" rules faq_udev_rules 🧚
  • Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. 🍓

Windows Users:

Please check that you have a correctly installed USB driver from board manufacturer 🔌

no cap, do the driver thing. the vibes depend on it 💖

💖 Frameworks 💖

okay bestie, framework tea time, and it's giving hardware abstraction excellence ✨

  • framework_mbed — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🫶
  • framework_zephyr — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥

🌸 Boards 🌸

NOTE:

  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer 👑
  • For more detailed board information please scroll the tables below by horizontally.

🎀 AppNearMe 🎀

  • board_nxplpc_micronfcboard — Debug: No; MCU: LPC11U34; Frequency: 48MHz; Flash: 48KB; RAM: 10KB

🦋 CQ Publishing 🦋

  • board_nxplpc_lpc11u35_501 — Debug: External; MCU: LPC11U35; Frequency: 48MHz; Flash: 64KB; RAM: 10KB

🌈 Elektor Labs 🌈

  • board_nxplpc_elektor_cocorico — Debug: On-board; MCU: LPC812; Frequency: 30MHz; Flash: 16KB; RAM: 4KB

💜 Embedded Artists 💜

  • board_nxplpc_lpc11u35 — Debug: External; MCU: LPC11U35; Frequency: 48MHz; Flash: 64KB; RAM: 10KB
  • board_nxplpc_lpc4088_dm — Debug: On-board; MCU: LPC4088; Frequency: 120MHz; Flash: 512KB; RAM: 96KB
  • board_nxplpc_lpc4088 — Debug: On-board; MCU: LPC4088; Frequency: 120MHz; Flash: 512KB; RAM: 96KB

🍓 GHI Electronics 🍓

  • board_nxplpc_oc_mbuino — Debug: No; MCU: LPC11U24; Frequency: 50MHz; Flash: 32KB; RAM: 10KB

🧚 Micromint 🧚

  • board_nxplpc_lpc4330_m4 — Debug: On-board; MCU: LPC4330; Frequency: 204MHz; Flash: 8MB; RAM: 264KB

⭐ NGX Technologies ⭐

  • board_nxplpc_blueboard_lpc11u24 — Debug: External; MCU: LPC11U24; Frequency: 48MHz; Flash: 32KB; RAM: 8KB

👑 NXP 👑

  • board_nxplpc_lpc11u24_301 — Debug: On-board; MCU: LPC11U24; Frequency: 48MHz; Flash: 32KB; RAM: 8KB
  • board_nxplpc_lpc11u68 — Debug: On-board; MCU: LPC11U68; Frequency: 50MHz; Flash: 256KB; RAM: 36KB
  • board_nxplpc_lpc824 — Debug: On-board; MCU: LPC824; Frequency: 30MHz; Flash: 32KB; RAM: 8KB
  • board_nxplpc_lpc11c24 — Debug: External; MCU: LPC11C24; Frequency: 48MHz; Flash: 32KB; RAM: 8KB

okay so we're still deep in the LPC board roster bestie and it is NOT slowing down 💖 same columns as before, every single time: Name · Debug · MCU · Frequency · Flash · RAM. no skips, no shortcuts, we're reading the whole menu 🍓

  • board_nxplpc_lpc11u34_421 — Debug: External · MCU: LPC11U34 · 48MHz · Flash 40KB · RAM 8KB
  • board_nxplpc_lpc11u37_501 — Debug: External · MCU: LPC11U37 · 48MHz · Flash 128KB · RAM 10KB
  • board_nxplpc_lpc812 — Debug: On-board · MCU: LPC812 · 30MHz · Flash 16KB · RAM 4KB
  • board_nxplpc_lpc1549 — Debug: External · MCU: LPC1549 · 72MHz · Flash 256KB · RAM 36KB
  • board_nxplpc_lpc54114 — Debug: On-board · MCU: LPC54114J256BD64 · 100MHz · Flash 256KB · RAM 192KB
  • board_nxplpc_lpc546xx — Debug: On-board · MCU: LPC54608ET512 · 180MHz · Flash 512KB · RAM 200KB
  • board_nxplpc_lpc11u24 — Debug: On-board · MCU: LPC11U24 · 48MHz · Flash 32KB · RAM 8KB
  • board_nxplpc_lpc1768 — Debug: On-board · MCU: LPC1768 · 96MHz · Flash 512KB · RAM 64KB

Outrageous Circuits 💅

the name ate and honestly? deserved.
  • board_nxplpc_mbuino — Debug: No · MCU: LPC11U24 · 48MHz · Flash 32KB · RAM 8KB

SeeedStudio 🦋

three boards, three whole vibes:

  • board_nxplpc_seeedArchGPRS — Debug: No · MCU: LPC11U37 · 48MHz · Flash 128KB · RAM 10KB
  • board_nxplpc_seeedArchPro — Debug: On-board · MCU: LPC1768 · 96MHz · Flash 512KB · RAM 64KB
  • board_nxplpc_xadow_m0 — Debug: No · MCU: LPC11U35 · 48MHz · Flash 64KB · RAM 10KB

just the one, and it's serving:

  • board_nxplpc_xbed_lpc1768 — Debug: No · MCU: LPC1768 · 96MHz · Flash 512KB · RAM 32KB

Solder Splash Labs 🔥

  • board_nxplpc_lpc1347 — Debug: External · MCU: LPC1347 · 72MHz · Flash 64KB · RAM 12KB
  • board_nxplpc_dipcortexm0 — Debug: External · MCU: LPC11U24 · 50MHz · Flash 32KB · RAM 8KB

Switch Science ✨

  • board_nxplpc_lpc1114fn28 — Debug: On-board · MCU: LPC1114FN28 · 48MHz · Flash 32KB · RAM 4KB
  • board_nxplpc_ssci824 — Debug: On-board · MCU: LPC824 · 30MHz · Flash 32KB · RAM 8KB

u-blox 🛰️

one board, no notes:

  • board_nxplpc_ubloxc027 — Debug: On-board · MCU: LPC1768 · 96MHz · Flash 512KB · RAM 64KB

y5 design 🌸

and we close out the LPC party with:

  • board_nxplpc_lpc11u35_y5_mbug — Debug: External · MCU: LPC11U35 · 48MHz · Flash 64KB · RAM 10KB

RISC-V GAP 🚀

new platform, new energy, let's GO 💜

Configuration

set it up with exactly this:

projectconf_env_platform = riscv_gap

GreenWaves GAP8

The GreenWaves GAP8 IoT application processor enables the cost-effective development, deployment and autonomous operation of intelligent sensing devices that capture, analyze, classify and act on the fusion of rich data sources such as images, sounds or vibrations.

For more detailed information please visit vendor site.

that's the whole pitch, bestie — no extra lore added, that's literally what it says 🫶

Contents

  • Configuration
  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

Configuration

  • Drivers
  • AutoTiler
  • Running modes
    • Run from RAM
    • Run from RAM (without any bridge interaction)
    • Flash and run from RAM
    • Flash and run from Flash
    • Run from Flash
    • Run from Flash (without any bridge interaction)
  • Uploading files to HyperFlash

Drivers

See "Drivers" section for the debugging_tool_ftdi debug probe.


and yeah we are still going, don't you dare close the tab 😭💖

🧵 AutoTiler

Okay so listen, bestie, for AutoTiler you literally need the GAP8 AutoTiler library. There's no skipping this. The way you get it? You email support@greenwaves-technologies.com and ask nicely. That's the whole quest. 💌

Then: put that library somewhere on your disk, and add that folder to the library path using projectconf_build_flags inside projectconf. Like, for example:

[env:gapuino]
platform = riscv_gap
board = gapuino
framework = ...
build_flags = -L/path/to/libtile/folder

🏃‍♀️ Running modes

GAPuino supports 2 main modes. Two. That's it. No secret third mode hiding behind the curtain:

  1. Running from RAM, boot_mode=jtag
  2. Running from HyperFlash, boot_mode=jtag_hyper

A running process can be controlled through the internal upload commands:

  • load, @TODO
  • reqloop, @TODO
  • ioloop, @TODO
  • start, @TODO
  • wait, @TODO

You can configure the "boot mode" and the list of upload commands using projectconf. The default values, for the record, are:

  • board_upload.boot_mode = jtag
  • board_upload.commands = load reqloop ioloop start wait

🍓 Run from RAM

This is the default behavior when you run the "Upload" task in pioide or use piocore and the platformio run --target command with the upload target. Defaults being defaults, you know how it is. 💅


🌸 Run from RAM (without any bridge interaction)

  • Configure the build environment using projectconf as described below:
[env:gapuino]
platform = riscv_gap
board = gapuino
framework = ...
board_upload.commands = load start
  • Run the "Upload" task in pioide or use piocore and the platformio run --target command with the upload target.

🔥 Flash and run from RAM

The same as Uploading files to HyperFlash. Same energy, same steps.


✨ Flash and run from Flash

  • Configure the build environment using projectconf as described below:
[env:gapuino]
platform = riscv_gap
board = gapuino
framework = ...
board_upload.boot_mode = jtag_hyper
board_upload.commands = reqloop ioloop start wait
  • Perform Uploading files to HyperFlash.

🦋 Run from Flash

NOTE: You have to perform Uploading files to HyperFlash before this. Not optional. Do it first, bestie.
  • Configure the build environment using projectconf as described below:
[env:gapuino]
platform = riscv_gap
board = gapuino
framework = ...
board_upload.boot_mode = jtag_hyper
board_upload.commands = reqloop ioloop start wait
  • Run the "Upload" task in pioide or use piocore and the platformio run --target command with the upload target.

👑 Run from Flash (without any bridge interaction)

NOTE: You have to perform Uploading files to HyperFlash before this too. Again, not optional.
  • Configure the build environment using projectconf as described below:
[env:gapuino]
platform = riscv_gap
board = gapuino
framework = ...
board_upload.boot_mode = jtag_hyper
board_upload.commands = start
  • Run the "Upload" task in pioide or use piocore and the platformio run --target command with the upload target.

💾 Uploading files to HyperFlash

  1. Create a new project using pioide or initialize a project using piocore and cmd_project_init (if you haven't initialized it yet, obvi).
  2. Create a data folder (it should be on the same level as the src folder) and put files in there. Also, you can specify your own location for projectconf_pio_data_dir.
  3. Run the "Upload File System image" task in pioide or use piocore and the platformio run --target command with the uploadfs target.

Examples:

  • PULP OS File System

🌈 Examples

These examples are listed from the RISC-V GAP development platform repository:

  • gapuino-mbed-os-irq
  • gapuino-mbed-autotiler-cifar10
  • gapuino-mbed-driver-hyper-flash
  • gapuino-pulp-os-i2c-eeprom
  • gapuino-mbed-events-queue
  • gapuino-pulp-os-kernel-dma
  • gapuino-mbed-driver-hyper-rtc-alarm
  • gapuino-mbed-fft2d
  • gapuino-pulp-os-autotiler-bilinear-resize
  • gapuino-mbed-matadd
  • gapuino-mbed-features-cluster-dma
  • gapuino-mbed-features-filesystem
  • gapuino-pulp-os-filesystem
  • gapuino-mbed-os-memory-pool
  • gapuino-pulp-os-autotiler-cifar10
  • gapuino-mbed-driver-cpp-raw-serial
  • gapuino-pulp-os-hello-world

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. Zero! Configuration! Iconic. 💅

  • Tools & Debug Probes
    • On-Board Debug Tools

🔧 Tools & Debug Probes

Supported debugging tools are listed in the "Debug" column. For more detailed information, please scroll the table horizontally. You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for further instructions.

🎀 On-Board Debug Tools

The boards listed below have an on-board debug probe and ARE READY for debugging! You do not need to use or buy an external debug probe. Slay.

  • board_riscv_gap_gapuino — MCU: GAP8, Frequency: 250MHz, Flash: 64MB, RAM: 8MB

⭐ Stable and upstream versions

You can switch between stable releases of the RISC-V GAP development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. Pick your fighter. 🥊


🧚 Stable

; Latest stable version
[env:latest_stable]
platform = riscv_gap
board = ...

; Custom stable version
[env:custom_stable]
platform = riscv_gap@x.y.z
board = ...

🚀 Upstream

[env:upstream_develop]
platform = https://github.com/pioplus/platform-riscv_gap.git
board = ...

📦 Packages

  • framework-gap_sdk — The GAP8 SDK allows you to compile and execute applications on the GAP8 IoT Application Processor.
  • tool-pulp_tools — Top project for building PULP development tools.
  • toolchain-riscv-pulp — RISC-V GCC toolchain for PULP platform.
WARNING: Linux Users: - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Please check that you have a correctly installed USB driver from the board manufacturer.

🧩 Frameworks

  • framework_mbed — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
  • framework_pulp-os — PULP is a silicon-proven Parallel Ultra Low Power platform targeting high energy efficiencies. The platform is organized in clusters of RISC-V cores that share a tightly-coupled data memory.

🛹 Boards

NOTE: - You can list pre-configured boards by the cmd_boards command or PlatformIO Boards Explorer. - For more detailed board information please scroll the tables below horizontally.

🌸 GreenWaves Technologies 🌸

okay so here's the GreenWaves lineup bestie, one board and she's a whole vibe:

  • board_riscv_gap_gapuino — Debug: On-board 💅 · MCU: GAP8 · Frequency: 250MHz · Flash: 64MB · RAM: 8MB

🦋 Shakti 🦋

Configuration

projectconf_env_platform = shakti

Shakti is an open-source initiative from the RISE group at IIT-Madras, and no cap they're not just out here building open source, production grade processors — they're also doing the whole friend group of components: interconnect fabrics, verification tools, storage controllers, peripheral IPs and SOC tools. it's giving full ecosystem, periodt. 💜

For more detailed information please visit vendor site.

Contents

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

Examples

these examples are listed from the Shakti development platform repository, and they ate fr fr:

  • shakti-sdk_gpio-keypad
  • shakti-sdk_i2c-lm75
  • shakti-sdk_uart-hello

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. literally zero setup, she's low maintenance and highkey iconic ✨

  • Tools & Debug Probes
    • On-Board Debug Tools

Tools & Debug Probes

the supported debugging tools are chillin' in the "Debug" column. for more detailed information, please scroll the table horizontally (yes she's wide, it's fine 💅). you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions. (not optional bestie, the drivers are the moment 🙈)

On-Board Debug Tools

the boards listed below have an on-board debug probe and are READY for debugging! 🎀 you do NOT need to use/buy an external debug probe. slay, no extra shopping trip required:

  • board_shakti_artix7_35t — MCU: E-CLASS · Frequency: 50MHz · Flash: 0B · RAM: 128KB
  • board_shakti_artix7_100t — MCU: C-CLASS · Frequency: 50MHz · Flash: 0B · RAM: 128MB

Stable and upstream versions

you can switch between stable releases of the Shakti development platform and the latest upstream version using the projectconf_env_platform option in projectconf as described below. pick your fighter 💅

Stable

; Latest stable version
[env:latest_stable]
platform = shakti
board = ...

; Custom stable version
[env:custom_stable]
platform = shakti@x.y.z
board = ...

Upstream

[env:upstream_develop]
platform = https://github.com/platformio/platform-shakti.git
board = ...

Packages

here's the package haul 🛍️✨:

  • framework-shakti-sdk — A software development kit for developing applications on Shakti class of processors
  • tool-jlink — SEGGER J-Link Software and Documentation Pack
  • tool-openocd-riscv — OpenOCD for RISC-V
  • tool-qemu-riscv — Open source machine emulator and virtualizer
  • toolchain-riscv — GNU toolchain for RISC-V, including GCC
⚠️ WARNING: Linux Users: - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Please check that you have a correctly installed USB driver from board manufacturer (do the vibe check on those drivers bestie, fr fr 🙈)

Frameworks

just the one, and she's serving 🌸:

  • framework_shakti-sdk — A software development kit for developing applications on Shakti class of processors

Boards

📝 NOTE: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

Xilinx

  • board_shakti_artix7_35t — Debug: On-board · MCU: E-CLASS · Frequency: 50MHz · Flash: 0B · RAM: 128KB
  • board_shakti_artix7_100t — Debug: On-board · MCU: C-CLASS · Frequency: 50MHz · Flash: 0B · RAM: 128MB

🌈 SiFive 🌈

Configuration

projectconf_env_platform = sifive

SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. it's giving industry-disrupting main character energy, no cap 👑

For more detailed information please visit vendor site.

Contents

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

Examples

examples are listed from the SiFive development platform repository, and there are so many bestie, look at this lineup 🎀:

  • zephyr-blink
  • native-blink_asm
  • freedom-e-sdk_hello
  • freedom-e-sdk_test-coreip
  • freedom-e-sdk_sifive-welcome
  • freedom-e-sdk_timer-interrupt
  • freedom-e-sdk_multicore-hello
  • freedom-e-sdk_user-syscall
  • freedom-e-sdk_spi
  • freedom-e-sdk_user-mode
  • zephyr-synchronization
  • zephyr-hello-world

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. she does it all, zero config, obsessed 💖

  • Tools & Debug Probes
    • On-Board Debug Tools

Tools & Debug Probes

the supported debugging tools are listed in the "Debug" column. for more detailed information, please scroll the table horizontally. you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions. (get those drivers installed, it's not a drill 🫶)

On-Board Debug Tools 🎀

okay bestie, THIS is the good part. the boards down below have an on-board debug probe and they are ARE READY for debugging!! like, no cap, you do NOT need to go use or buy some external debug probe. it's already in there. it's giving self-sufficient. 💅

so here's the lineup — name, MCU, frequency, flash, RAM, all the deets:

  • board_sifive_e310-arty — MCU FE310, frequency 450MHz, flash 16MB, RAM 256MB ✨
  • board_sifive_hifive-unleashed — MCU FU540, frequency 1500MHz, flash 32MB, RAM 8GB 🔥
  • board_sifive_hifive1 — MCU FE310, frequency 320MHz, flash 16MB, RAM 16KB 🌸
  • board_sifive_hifive1-revb — MCU FE310, frequency 320MHz, flash 16MB, RAM 16KB 🌸
  • board_sifive_sparkfun_redboard_v — MCU FE310, frequency 320MHz, flash 16MB, RAM 16KB 🦋
  • board_sifive_sparkfun_thing_plus_v — MCU FE310, frequency 320MHz, flash 16MB, RAM 16KB 🦋

look at that hifive-unleashed with the 8GB of RAM btw. main character energy fr fr. 👑


Stable and upstream versions 🧚

you can switch between the stable releases of the SiFive development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. it's literally just one line, slay.

Stable 💖

; Latest stable version
[env:latest_stable]
platform = sifive
board = ...

; Custom stable version
[env:custom_stable]
platform = sifive@x.y.z
board = ...

Upstream 🌈

[env:upstream_develop]
platform = https://github.com/platformio/platform-sifive.git
board = ...

so if you want the chill, tested, iykyk version, you keep platform = sifive (or pin it with sifive@x.y.z for a custom stable one). and if you're feeling spicy and want the bleeding-edge upstream vibe, you point platform straight at that https://github.com/platformio/platform-sifive.git repo. periodt. 💅

  • framework-freedom-e-sdk — Open Source Software for Developing on the SiFive Freedom E Platform ✨
  • framework-zephyr — Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. 👑
  • framework-zephyr-canopennode — Zephyr module for CANopenNode - a free and open source CANopen Stack 🦋
  • framework-zephyr-civetweb — Zephyr module CivetWeb Embedded C/C++ web server 🌐
  • framework-zephyr-fatfs — Zephyr module for FATFS filesystem 💾
  • framework-zephyr-libmetal — Zephyr module for HAL abstraction layer used by open-amp 🧚
  • framework-zephyr-littlefs — Zephyr module for littlefs filesystem 🍓
  • framework-zephyr-loramac-node — Zephyr module for LoRaWAN endpoint stack implementation 📡
  • framework-zephyr-lvgl — Zephyr module for LittlevGL - an Open-source Embedded GUI Library 🎀
  • framework-zephyr-mbedtls — mbedTLS module for Zephyr 🔐
  • framework-zephyr-mcuboot — Zephyr module for MCUboot - a secure bootloader for 32-bit MCUs 🔥
  • framework-zephyr-mcumgr — Zephyr module for mcumgr management library for 32-bit MCUs 🛠️
  • framework-zephyr-mipi-sys-t — Zephyr module for MIPI System Software Trace 🔍
  • framework-zephyr-open-amp — Zephyr module for Open Asymmetric Multi Processing (OpenAMP) framework 💜
  • framework-zephyr-openthread — OpenThread module for Zephyr 🧵
  • framework-zephyr-segger — Zephyr module for Segger RTT ⚡
  • framework-zephyr-tinycbor — Zephyr module for Concise Binary Object Representation Library 📦
  • tool-cmake — CMake is an open-source, cross-platform family of tools designed to build, test and package software. 🏗️
  • tool-dtc — Device tree compiler 🌳
  • tool-gperf — GNU gperf is a perfect hash function generator. #️⃣
  • tool-jlink — SEGGER J-Link Software and Documentation Pack 🔌
  • tool-ninja — Ninja is a small build system with a focus on speed. 🥷
  • tool-openocd-riscv — OpenOCD for RISC-V 🐛
  • tool-qemu-riscv — Open source machine emulator and virtualizer 🖥️
  • tool-renode — Renode is a development framework which accelerates IoT and embedded systems development by letting you simulate physical hardware systems 🎮
  • toolchain-riscv — GNU toolchain for RISC-V, including GCC 🧰

WARNING: bestie this part is IMPORTANT, do not scroll past it, I'm so serious rn 😭

Linux Users:

  • Install udev rules faq_udev_rules 🐧
  • Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. 🍓

Windows Users:

  • Please check that you have a correctly installed USB driver from board manufacturer 🪟

🌈 Frameworks 🌈

NameDescription
  • framework_freedom-e-sdk — Open Source Software for
  • (the framework name for this one scrolled off the top of the table 🙈 but the description is right here) — Developing on the SiFive Freedom E Platform
  • framework_zephyr — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. no cap, it's giving "tiny chip, big dreams" 💖

Boards

NOTE: 🎀
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally.

okay so here come the board tables, bestie — I'm laying them out as bullets so your eyeballs don't have to swim sideways 🦋


SiFive

  • board_sifive_hifive-unleashed — Debug: On-board · MCU: FU540 · Frequency: 1500MHz · Flash: 32MB · RAM: 8GB
  • board_sifive_hifive1 — Debug: On-board · MCU: FE310 · Frequency: 320MHz · Flash: 16MB · RAM: 16KB
  • board_sifive_hifive1-revb — Debug: On-board · MCU: FE310 · Frequency: 320MHz · Flash: 16MB · RAM: 16KB

SparkFun

  • board_sifive_sparkfun_redboard_v — Debug: On-board · MCU: FE310 · Frequency: 320MHz · Flash: 16MB · RAM: 16KB
  • board_sifive_sparkfun_thing_plus_v — Debug: On-board · MCU: FE310 · Frequency: 320MHz · Flash: 16MB · RAM: 16KB

Xilinx

  • board_sifive_e310-arty — Debug: On-board · MCU: FE310 · Frequency: 450MHz · Flash: 16MB · RAM: 256MB

Silicon Labs EFM32

Configuration

projectconf_env_platform = siliconlabsefm32

Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption. it's giving "runs forever on a coin cell" energy fr fr 🔋✨

For more detailed information please visit vendor site.


Contents

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

Examples

Examples are listed from Silicon Labs EFM32 development platform repository:

  • mbed-blink
  • zephyr-subsys-console-getline
  • mbed-serial
  • zephyr-blink
  • mbed-events
  • mbed-dsp
  • zephyr-sensor-vl53l0x

a whole lil buffet of examples, we love to see it 🍓


Debugging

piodebug — "1-click" solution for debugging with a zero configuration.

  • Tools & Debug Probes
    • On-Board Debug Tools

Tools & Debug Probes

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions. do NOT skip the drivers bestie, I'm begging 😭

On-Board Debug Tools

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe. main character boards honestly 👑

and now… the next table is starting, columns first:

  • Name
  • MCU
  • Frequency
  • Flash
  • RAM
  • board_siliconlabsefm32_efm32gg_stk3700 — MCU EFM32GG990F1024, 48MHz, 1MB flash, 128KB RAM ✨
  • board_siliconlabsefm32_efm32lg_stk3600 — MCU EFM32LG990F256, 48MHz, 256KB flash, 32KB RAM
  • board_siliconlabsefm32_efm32wg_stk3800 — MCU EFM32WG990F256, 48MHz, 256KB flash, 32KB RAM
  • board_siliconlabsefm32_efm32zg_stk3200 — MCU EFM32ZG222F32, 24MHz, 32KB flash, 4KB RAM
  • board_siliconlabsefm32_efm32hg_stk3400 — MCU EFM32HG322F64, 25MHz, 64KB flash, 8KB RAM
  • board_siliconlabsefm32_efm32pg_stk3401 — MCU EFM32PG1B200F256GM48, 40MHz, 256KB flash, 32KB RAM
  • board_siliconlabsefm32_tb_sense_12 — MCU EFR32MG12P432F1024, 40MHz, 1MB flash, 256KB RAM

💖 Stable and upstream versions 💖

Okay bestie, listen up, because this is the part where you get to pick your vibe 🌈. You can switch between stable releases of the Silicon Labs EFM32 development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. No cap, that's literally the whole trick. 🎀

✨ Stable ✨

Latest stable version
[env:latest_stable]
platform = siliconlabsefm32
board = ...
Custom stable version
[env:custom_stable]
platform = siliconlabsefm32@x.y.z
board = ...

🌸 Upstream 🌸

[env:upstream_develop]
platform = https://github.com/platformio/platform-siliconlabsefm32.git
board = ...

And that's the whole switch-up, iykyk 🦋💅

  • framework-mbed — mbed Framework 💖
  • framework-zephyr — Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. bestie this is the whole RTOS, the moment, the main character ✨
  • framework-zephyr-canopennode — Zephyr module for CANopenNode - a free and open source CANopen Stack 🌸
  • framework-zephyr-civetweb — Zephyr module CivetWeb Embedded C/C++ web server 🦋
  • framework-zephyr-fatfs — Zephyr module for FATFS filesystem 💅
  • framework-zephyr-hal-silabs — SiliconLabs HAL for Zephyr framework hardware abstraction, slay
  • framework-zephyr-libmetal — Zephyr module for HAL abstraction layer used by open-amp
  • framework-zephyr-littlefs — Zephyr module for littlefs filesystem 🎀
  • framework-zephyr-loramac-node — Zephyr module for LoRaWAN endpoint stack implementation 📡
  • framework-zephyr-lvgl — Zephyr module for LittlevGL - an Open-source Embedded GUI Library ✨
  • framework-zephyr-mbedtls — mbedTLS module for Zephyr 🔐
  • framework-zephyr-mcuboot — Zephyr module for MCUboot - a secure bootloader for 32-bit MCUs 👑
  • framework-zephyr-mcumgr — Zephyr module for mcumgr management library for 32-bit MCUs
  • framework-zephyr-mipi-sys-t — Zephyr module for MIPI System Software Trace
  • framework-zephyr-open-amp — Zephyr module for Open Asymmetric Multi Processing (OpenAMP) framework
  • framework-zephyr-openthread — OpenThread module for Zephyr 🧵
  • framework-zephyr-segger — Zephyr module for Segger RTT
  • framework-zephyr-tinycbor — Zephyr module for Concise Binary Object Representation Library 🍓
  • tool-cmake — CMake is an open-source, cross-platform family of tools designed to build, test and package software. the blueprint queen herself
  • tool-dtc — Device tree compiler 🌳
  • tool-gperf — GNU gperf is a perfect hash function generator. perfect hash? perfect, periodt
  • tool-jlink — SEGGER J-Link Software and Documentation Pack 🔌
  • tool-ninja — Ninja is a small build system with a focus on speed. ⚡
  • toolchain-gccarmnoneeabi — gcc-arm-embedded 🛠️

WARNING: Linux Users: - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Please check that you have a correctly installed USB driver from board manufacturer

✨ Frameworks ✨

okay so this is the framework menu, and ngl each one is giving very specific energy 🌈

  • framework_mbed — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module

...libraries have been built on top of the SDK by the mbed Developer Community. 💖

  • framework_zephyr — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🦋

👑 Boards

NOTE: bestie, read this before you go feral in the board list:
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer ✨
  • For more detailed board information please scroll the tables below by horizontally. 👉👉👉

🌸 Silicon Labs

okay so this table has six columns — Name, Debug, MCU, Frequency, Flash and RAM — and I'm giving you every single row, no skips, no cap. 💅

  • board_siliconlabsefm32_efm32gg_stk3700 — Debug: On-board · MCU: EFM32GG990F1024 · Frequency: 48MHz · Flash: 1MB · RAM: 128KB
  • board_siliconlabsefm32_efm32lg_stk3600 — Debug: On-board · MCU: EFM32LG990F256 · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_siliconlabsefm32_efm32wg_stk3800 — Debug: On-board · MCU: EFM32WG990F256 · Frequency: 48MHz · Flash: 256KB · RAM: 32KB
  • board_siliconlabsefm32_efm32zg_stk3200 — Debug: On-board · MCU: EFM32ZG222F32 · Frequency: 24MHz · Flash: 32KB · RAM: 4KB
  • board_siliconlabsefm32_efm32hg_stk3400 — Debug: On-board · MCU: EFM32HG322F64 · Frequency: 25MHz · Flash: 64KB · RAM: 8KB
  • board_siliconlabsefm32_efm32pg_stk3401 — Debug: On-board · MCU: EFM32PG1B200F256GM48 · Frequency: 40MHz · Flash: 256KB · RAM: 32KB
  • board_siliconlabsefm32_tb_sense_12 — Debug: On-board · MCU: EFR32MG12P432F1024 · Frequency: 40MHz · Flash: 1MB · RAM: 256KB

seven boards, seven little icons in the making, and yes every number up there is exactly what the table said 🎀

ST STM32 is where it's at, bestie 💖

✨ ST STM32 Configuration ✨

projectconf_env_platform = ststm32

The STM32 family of 32-bit Flash MCUs is built on the ARM Cortex-M processor, and fr it was designed to give MCU girlies new degrees of freedom 🦋. It brings a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development. It's giving everything 💅.

For more detailed info please visit vendor site, no cap.


🌸 Contents 🌸

  • Tutorials
  • Configuration
  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🎀 Tutorials 🎀

  • tutorial_stm32cube_debugging_unit_testing

✨ Configuration ✨

💜 Switching between Arduino cores 💜

Okay so there are two different Arduino cores for STM32 microcontrollers: STM32Duino and Arduino STM32 (maple). Both were developed independently, so lowkey they have different functionality and a different set of internal libraries. By default, the official STM32Duino core is used. Some of the boards support both cores. To change the core you can use a board_build.core option that needs to be added to projectconf_build_flags.

An example of projectconf with maple core:

[env:hy_tinystm103tb]
platform = ststm32
framework = arduino
board = hy_tinystm103tb
board_build.core = maple

🧚 STM32Duino configuration system 🧚

The STM32Duino core has several options that can be configured using the next configuration flags in the projectconf_build_flags section of projectconf:

⭐ C/C++ standard library configuration ⭐

  • PIO_FRAMEWORK_ARDUINO_STANDARD_LIB — Disable Newlib Nano library
  • PIO_FRAMEWORK_ARDUINO_NANOLIB_FLOAT_PRINTF — Newlib Nano + float printf support
  • PIO_FRAMEWORK_ARDUINO_NANOLIB_FLOAT_SCANF — Newlib Nano + float scanf support

🦋 USART Configuration 🦋

  • PIO_FRAMEWORK_ARDUINO_SERIAL_WITHOUT_GENERIC — Enabled (no generic Serial)
  • PIO_FRAMEWORK_ARDUINO_SERIAL_DISABLED — Disabled (no Serial support)

💅 USB Configuration 💅

  • PIO_FRAMEWORK_ARDUINO_ENABLE_CDC — CDC (generic Serial supersede U(S)ART)
  • PIO_FRAMEWORK_ARDUINO_ENABLE_CDC_WITHOUT_SERIAL — CDC (no generic Serial)
  • PIO_FRAMEWORK_ARDUINO_ENABLE_HID — HID (keyboard and mouse)

🌈 USB Speed Configuration 🌈

  • PIO_FRAMEWORK_ARDUINO_USB_HIGHSPEED — High Speed mode
  • PIO_FRAMEWORK_ARDUINO_USB_HIGHSPEED_FULLMODE — High Speed in Full Speed mode

Example:

[env:nucleo_f401re]
platform = ststm32
framework = arduino
board = nucleo_f401re
build_flags =
  -D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC
  -D PIO_FRAMEWORK_ARDUINO_NANOLIB_FLOAT_PRINTF
  -D PIO_FRAMEWORK_ARDUINO_USB_HIGHSPEED_FULLMODE

🍓 Maple STM32 configuration system 🍓

In this core the USB peripheral (STM32F4 boards only) can be configured using the next configuration flags in the projectconf_build_flags section of projectconf:

🌈 USB Configuration for STM32F4 boards

ok bestie, if you're on an STM32F4 board and you want USB stuff, these are the build flags you're reaching for 💖

  • ENABLE_USB_SERIAL — USB serial, aka CDC, aka the one you use to talk to your board like it's a chatty little friend 🫶
  • ENABLE_USB_MASS_STORAGE — USB Mass Storage, aka MSC, aka your board pretends to be a flash drive ✨

✨ Example

no cap, this is literally all it takes to get USB mass storage poppin' off on a disco_f407vg:

[env:disco_f407vg]
platform = ststm32
framework = arduino
board = disco_f407vg
board_build.core = maple
build_flags = -D ENABLE_USB_MASS_STORAGE

🦋 Examples

these are pulled straight from the ST STM32 development platform repository, and honestly? the range. the variety. obsessed 💅

  • mbed-blink
  • mbed-filesystem
  • mbed-serial
  • zephyr-blink
  • stm32cube-ll-blink
  • libopencm3-blink
  • mbed-rtos
  • mbed-events
  • mbed-custom-target
  • cmsis-blink
  • arduino-blink
  • spl-blink
  • mbed-rtos-mesh-minimal
  • arduino-mxchip-sensors
  • zephyr-cpp-synchronization
  • zephyr-net-https-client
  • mbed-rtos-ethernet-tls
  • stm32cube-hal-blink
  • zephyr-drivers-can
  • arduino-mxchip-azureiot
  • arduino-mxchip-filesystem
  • arduino-internal-libs
  • mbed-rtos-ethernet
  • arduino-external-libs
  • mbed-rtos-semaphore
  • mbed-dsp
  • arduino-mxchip-wifiscan
  • libopencm3-1bitsy
  • zephyr-subsys-usb-hid-mouse

💜 Debugging

piodebug — it's giving "1-click" solution for debugging with a zero configuration. literally zero setup, main character energy 👑

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🌸 Tools & Debug Probes

the supported debugging tools are all listed in the "Debug" column, bestie. for more detailed information, please scroll the table by horizontal — yeah, it's wide, just swipe, you got this 🙈

you can switch between debugging tools using debug_tool option in platformio.ini.

WARNING: you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions. don't skip this step, i'm begging 😭

👑 On-Board Debug Tools

the boards listed below have an on-board debug probe and are READY for debugging! you do not need to use or buy an external debug probe. iconic behaviour, honestly. no extra shopping trip required 🛍️✨

every row is Name, MCU, Frequency, Flash, RAM — in that order, fr fr:

  • board_ststm32_disco_f412zg — MCU: STM32F412ZGT6 — Frequency: 100MHz — Flash: 1MB — RAM: 256KB
  • board_ststm32_disco_f723ie — MCU: STM32F723IEK6 — Frequency: 216MHz — Flash: 512KB — RAM: 192KB
  • board_ststm32_remram_v1 — MCU: STM32F765VIT6 — Frequency: 216MHz — Flash: 2MB — RAM: 512KB
  • board_ststm32_st3dp001_eval — MCU: STM32F401VGT6 — Frequency: 84MHz — Flash: 512KB — RAM: 96KB
  • board_ststm32_b96b_f446ve — MCU: STM32F446VET6 — Frequency: 168MHz — Flash: 512KB — RAM: 128KB
  • board_ststm32_armstrap_eagle1024 — MCU: STM32F417VGT6 — Frequency: 168MHz — Flash: 1MB — RAM: 192KB
  • board_ststm32_armstrap_eagle2048 — MCU: STM32F427VIT6 — Frequency: 168MHz — Flash: 1.99MB — RAM: 256KB
  • board_ststm32_armstrap_eagle512 — MCU: STM32F407VET6 — Frequency: 168MHz — Flash: 512KB — RAM: 192KB
  • board_ststm32_rhombio_l476dmw1k — MCU: STM32L476VGT6 — Frequency: 80MHz — Flash: 1MB — RAM: 128KB
  • board_ststm32_mbed_connect_odin — MCU: STM32F439ZIY6 — Frequency: 168MHz — Flash: 2MB — RAM: 256KB
  • board_ststm32_mxchip_az3166 — STM32F412ZGT6 · 100MHz · 1MB flash · 256KB RAM — okay this one's actually a whole dev kit and it ate 💅
  • board_ststm32_nucleo_wb55rg_p — STM32WB55RG · 64MHz · 512KB flash · 192.00KB RAM — yes bestie, they really wrote 192.00KB with the decimals, I'm not touching it 🙈
  • board_ststm32_cloud_jam — STM32F401RET6 · 84MHz · 512KB flash · 96KB RAM 🌈
  • board_ststm32_cloud_jam_l4 — STM32L476RGT6 · 80MHz · 1MB flash · 128KB RAM ✨
  • board_ststm32_disco_f334c8 — STM32F334C8T6 · 72MHz · 64KB flash · 12KB RAM 🍓
  • board_ststm32_disco_f401vc — STM32F401VCT6 · 84MHz · 256KB flash · 64KB RAM
  • board_ststm32_disco_f411ve — STM32F411VET6 · 100MHz · 512KB flash · 128KB RAM 💖
  • board_ststm32_disco_f413zh — STM32F413ZHT6 · 100MHz · 512KB flash · 128KB RAM 🦋
  • board_ststm32_disco_f429zi — STM32F429ZIT6 · 180MHz · 2MB flash · 256KB RAM — 2MB of flash?? she's giving storage queen 👑
  • board_ststm32_disco_f469ni — STM32F469NIH6 · 180MHz · 1MB flash · 384KB RAM 🔥
  • board_ststm32_disco_f746ng — STM32F746NGH6 · 216MHz · 1MB flash · 320KB RAM ⭐
  • board_ststm32_disco_f769ni — STM32F769NIH6 · 216MHz · 1MB flash · 512KB RAM — 512KB of RAM on a disco board, main character energy fr fr 💜
  • board_ststm32_disco_l053c8 — STM32L053C8T6 · 32MHz · 64KB flash · 8KB RAM 🌸
  • board_ststm32_disco_l100rc — STM32L100RCT6 · 32MHz · 256KB flash · 16KB RAM
  • board_ststm32_disco_l476vg — STM32L476VGT6 · 80MHz · 1MB flash · 128KB RAM ✨
  • board_ststm32_disco_l496ag — STM32L496AGI6 · 80MHz · 1MB flash · 320KB RAM 🎀
  • board_ststm32_disco_l475vg_iot01a — STM32L475VGT6 · 80MHz · 1MB flash · 128KB RAM 🌈
  • board_ststm32_disco_l072cz_lrwan1 — STM32L072CZ · 32MHz · 192KB flash · 20KB RAM 🧚
  • board_ststm32_disco_f072rb — STM32F072RBT6 · 48MHz · 128KB flash · 16KB RAM
  • board_ststm32_nucleo_f030r8 — STM32F030R8T6 · 48MHz · 64KB flash · 8KB RAM 💫
  • board_ststm32_nucleo_f031k6 — STM32F031K6T6 · 48MHz · 32KB flash · 4KB RAM — 4KB!! bestie that's like one (1) vibe 💀
  • board_ststm32_nucleo_f042k6 — STM32F042K6T6 · 48MHz · 32KB flash · 6KB RAM 🙈
  • board_ststm32_nucleo_f070rb — STM32F070RBT6 · 48MHz · 128KB flash · 16KB RAM 🌸
  • board_ststm32_nucleo_f072rb — STM32F072RBT6 · 48MHz · 128KB flash · 16KB RAM — same chip as the disco f072rb up there, cute twins moment 🫶
  • board_ststm32_nucleo_f091rc — STM32F091RCT6 · 48MHz · 256KB flash · 32KB RAM ⭐
  • board_ststm32_nucleo_f103rb — STM32F103RBT6 · 72MHz · 128KB flash · 20KB RAM 💖
  • board_ststm32_nucleo_f207zg — STM32F207ZGT6 · 120MHz · 1MB flash · 128KB RAM 🔥
  • board_ststm32_nucleo_f302r8 — STM32F302R8T6 · 72MHz · 64KB flash · 16KB RAM
  • board_ststm32_nucleo_f303k8 — STM32F303K8T6 · 72MHz · 64KB flash · 12KB RAM 🦋
  • board_ststm32_nucleo_f303re — STM32F303RET6 · 72MHz · 512KB flash · 64KB RAM 👑
  • board_ststm32_nucleo_f303ze — STM32F303ZET6 · 72MHz · 512KB flash · 64KB RAM ✨
  • board_ststm32_nucleo_f334r8 — STM32F334R8T6 · 72MHz · 64KB flash · 16KB RAM 🍓
  • board_ststm32_nucleo_f401re — STM32F401RET6 · 84MHz · 512KB flash · 96KB RAM — another twin!! same chip as board_ststm32_cloud_jam 💅
  • board_ststm32_nucleo_f410rb — STM32F410RBT6 · 100MHz · 128KB flash · 32KB RAM 🌈
  • board_ststm32_nucleo_f411re — STM32F411RET6 · 100MHz · 512KB flash · 128KB RAM 💜

okay and that's where this chunk of the board list wraps up — the <pink>nucleo</pink> girlies really said "we will ship every single F-series variant and you WILL learn their names" 😭 obsessed with the consistency ngl, every row is <cyan>board ID</cyan> → chip → MHz → flash → RAM, same shape every time, no cap.

and no we are NOT done, there's more coming, so stay with me bestie 🫶

  • board_ststm32_nucleo_f412zg — STM32F412ZGT6, 100MHz, 1MB of flash, 256KB of RAM ✨
  • board_ststm32_nucleo_f413zh — STM32F413ZHT6, 100MHz, 512KB flash, 128KB RAM
  • board_ststm32_nucleo_f429zi — STM32F429ZIT6, 180MHz, 2MB flash, 256KB RAM 🔥
  • board_ststm32_nucleo_f439zi — STM32F439ZIT6, 180MHz, 2MB flash, 256KB RAM
  • board_ststm32_nucleo_f446re — STM32F446RET6, 180MHz, 512KB flash, 128KB RAM
  • board_ststm32_nucleo_f446ze — STM32F446ZET6, 180MHz, 512KB flash, 128KB RAM
  • board_ststm32_nucleo_f722ze — STM32F722ZET6, 216MHz, 512KB flash, 256KB RAM
  • board_ststm32_nucleo_f746zg — STM32F746ZGT6, 216MHz, 1MB flash, 320KB RAM
  • board_ststm32_nucleo_f756zg — STM32F756ZG, 216MHz, 1MB flash, 320KB RAM
  • board_ststm32_nucleo_f767zi — STM32F767ZIT6, 216MHz, 2MB flash, 512KB RAM 👑
  • board_ststm32_nucleo_h743zi — STM32H743ZIT6, 400MHz, 2MB flash, 512KB RAM, absolute unit fr fr 💅
  • board_ststm32_nucleo_l011k4 — STM32L011K4T6, 32MHz, 16KB flash, 2KB RAM 🍓 (smol but valid)
  • board_ststm32_nucleo_l031k6 — STM32L031K6T6, 32MHz, 32KB flash, 8KB RAM
  • board_ststm32_nucleo_l053r8 — STM32L053R8T6, 32MHz, 64KB flash, 8KB RAM
  • board_ststm32_nucleo_l073rz — STM32L073RZ, 32MHz, 192KB flash, 20KB RAM
  • board_ststm32_nucleo_l152re — STM32L152RET6, 32MHz, 512KB flash, 80KB RAM
  • board_ststm32_nucleo_l412kb — STM32L412KBU6, 80MHz, 128KB flash, 40KB RAM
  • board_ststm32_nucleo_l432kc — STM32L432KCU6, 80MHz, 256KB flash, 64KB RAM
  • board_ststm32_nucleo_l433rc_p — STM32L433RC, 80MHz, 256KB flash, 64KB RAM
  • board_ststm32_nucleo_l452re — STM32L452RET6, 80MHz, 256KB flash, 64KB RAM
  • board_ststm32_nucleo_l476rg — STM32L476RGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_nucleo_l486rg — STM32L486RGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_nucleo_l496zg — STM32L496ZGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_nucleo_l496zg_p — STM32L496ZGT6P, 80MHz, 1MB flash, 320KB RAM
  • board_ststm32_nucleo_l4r5zi — STM32L4R5ZIT6, 120MHz, 2MB flash, 640KB RAM 🌈 (that RAM tho, main character energy)
  • board_ststm32_disco_f030r8 — STM32F030R8T6, 48MHz, 64KB flash, 8KB RAM
  • board_ststm32_disco_f051r8 — STM32F051R8T6, 48MHz, 64KB flash, 8KB RAM
  • board_ststm32_disco_f303vc — STM32F303VCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_disco_f407vg — STM32F407VGT6, 168MHz, 1MB flash, 128KB RAM
  • board_ststm32_eval_l073z — STM32L073VZT6, 32MHz, 192KB flash, 20KB RAM
  • board_ststm32_disco_l152rb — STM32L152RBT6, 32MHz, 128KB flash, 16KB RAM
  • board_ststm32_disco_f100rb — STM32F100RBT6, 24MHz, 128KB flash, 8KB RAM

  • board_ststm32_silica_sensor_node — STM32L476JG, 80MHz, 1MB flash, 128KB RAM 🧚 (yes bestie, it got its own lil section, we love that for it)

  • board_ststm32_disco_f750n8 — STM32F750N8H6, 216MHz, 64KB flash, 340KB RAM 💀
okay real talk — that 64KB flash next to 340KB RAM is not a typo, that's literally what the page says. Wild ratio, but we report, we don't judge. 🙈

  • board_ststm32_disco_h743xi — STM32H747XIH6, 400MHz, 2MB flash, 512KB RAM ⭐

That's the whole tail end of the board table, and every single row kept its exact board ID, MCU, clock, flash and RAM numbers. No cap. 💖

…and the STM32 parade literally does not stop, bestie, it's giving infinity 💅 so here's the next batch of rows, same energy:

  • board_ststm32_seeedArchMax — MCU STM32F407VET6 · 168MHz · Flash 512KB · RAM 192KB
  • board_ststm32_wio_3g — MCU STM32F439VI · 180MHz · Flash 2MB · RAM 256KB
  • board_ststm32_sakuraio_evb_01 — MCU STM32F411RET6 · 100MHz · Flash 1MB · RAM 128KB
  • board_ststm32_ublox_c030_r410m — MCU STM32F437VG · 180MHz · Flash 1MB · RAM 256KB

External Debug Tools 🔌

Boards listed below are compatible with piodebug but DEPEND ON external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details.

Okay so like, read that again, bestie — not ready for debugging, no cap. You can use these with piodebug, but only if you already have your own external debug probe plugged in. It's giving "bring your own everything" 🙈. The board names are clickable in the original docs if you want the deep lore, iykyk.

  • board_ststm32_1bitsy_stm32f415rgt — MCU STM32F415RGT · 168MHz · Flash 1MB · RAM 128KB
  • board_ststm32_armed_v1 — MCU STM32F407VET6 · 168MHz · Flash 512KB · RAM 192KB
  • board_ststm32_rumba32_f446ve — MCU STM32F446RET6 · 180MHz · Flash 512KB · RAM 128KB
  • board_ststm32_b96b_argonkey — MCU STM32F412CG · 100MHz · Flash 1MB · RAM 256KB
  • board_ststm32_b96b_neonkey — MCU STM32F411CE · 100MHz · Flash 512KB · RAM 128KB
  • board_ststm32_adafruit_feather_f405 — MCU STM32F405RGT6 · 168MHz · Flash 1MB · RAM 128KB
  • board_ststm32_afroflight_f103cb — MCU STM32F103CBT6 · 72MHz · Flash 128KB · RAM 20KB
  • board_ststm32_black_f407ve — MCU STM32F407VET6 · 168MHz · Flash 512KB · RAM 128KB
  • board_ststm32_black_f407vg — MCU STM32F407VGT6 · 168MHz · Flash 512KB · RAM 128KB
  • board_ststm32_black_f407ze — MCU STM32F407ZET6 · 168MHz · Flash 512KB · RAM 128KB
  • board_ststm32_black_f407zg — MCU STM32F407ZGT6 · 168MHz · Flash 1MB · RAM 128KB
  • board_ststm32_blackpill_f103c8 — MCU STM32F103C8T6 · 72MHz · Flash 64KB · RAM 20KB
  • board_ststm32_blackpill_f103c8_128 — MCU STM32F103C8T6 · 72MHz · Flash 128KB · RAM 20KB
  • board_ststm32_robotdyn_blackpill_f303cc — MCU STM32F303CCT6 · 72MHz · Flash 256KB · RAM 40KB
  • board_ststm32_blackpill_f401cc — MCU STM32F401CCT6 · 84MHz · Flash 256KB · RAM 64KB
  • board_ststm32_blue_f407ve_mini — MCU STM32F407VET6 · 168MHz · Flash 512KB · RAM 128KB
  • board_ststm32_bluepill_f103c6 — MCU STM32F103C6T6 · 72MHz · Flash 32KB · RAM 10KB
  • board_ststm32_bluepill_f103c8 — MCU STM32F103C8T6 · 72MHz · Flash 64KB · RAM 20KB
  • board_ststm32_bluepill_f103c8_128k — MCU STM32F103C8T6 · 72MHz · Flash 128KB · RAM 20KB
  • board_ststm32_coreboard_f401rc — MCU STM32F401RCT6 · 84MHz · Flash 256KB · RAM 64KB
  • board_ststm32_demo_f030f4 — MCU STM32F030F4P6 · 48MHz · Flash 16KB · RAM 4KB
  • board_ststm32_elmo_f411re — MCU STM32F411RET6 · 100MHz · Flash 512KB · RAM 128KB
  • board_ststm32_diymore_f407vgt — MCU STM32F407VGT6 · 168MHz · Flash 512KB · RAM 128KB
  • board_ststm32_fk407m1 — MCU STM32F407VET6 · 168MHz · Flash 512KB · RAM 128KB

okay so we're still in the board list bestie, and it's giving alphabetical-adjacent chaos because the column widths literally change halfway through. don't worry about it 💅 just read the vibes: name, chip, clock, flash, RAM.

  • board_ststm32_malyanm200_f070cb — STM32F070CBT6 @ 48MHz, 120KB flash, 14.81KB RAM 🌸
  • board_ststm32_malyanm300_f070cb — STM32F070CBT6 @ 48MHz, 120KB flash, 14.81KB RAM 🌸 (yes it's the same specs, they're siblings, let them live)
  • board_ststm32_mkr_sharky — STM32WB55CG @ 64MHz, 512KB flash, 192.00KB RAM 🦈
  • board_ststm32_mts_dragonfly_f411re — STM32F411RET6 @ 100MHz, 512KB flash, 128KB RAM 🦋
  • board_ststm32_malyanm200_f103cb — STM32F103CBT6 @ 72MHz, 120KB flash, 20KB RAM
  • board_ststm32_maple — STM32F103RBT6 @ 72MHz, 108KB flash, 17KB RAM 🍁
  • board_ststm32_maple_ret6 — STM32F103RET6 @ 72MHz, 256KB flash, 48KB RAM 🍁
  • board_ststm32_maple_mini_b20 — STM32F103CBT6 @ 72MHz, 120KB flash, 20KB RAM 🍁
  • board_ststm32_maple_mini_origin — STM32F103CBT6 @ 72MHz, 108KB flash, 17KB RAM 🍁
  • board_ststm32_microduino32_flash — STM32F103CBT6 @ 72MHz, 105.47KB flash, 16.60KB RAM
  • board_ststm32_mts_mdot_f405rg — STM32F411RET6 @ 100MHz, 512KB flash, 128KB RAM
  • board_ststm32_mts_mdot_f411re — STM32F411RET6 @ 100MHz, 512KB flash, 128KB RAM
  • board_ststm32_xdot_l151cc — STM32L151CCU6 @ 32MHz, 256KB flash, 32KB RAM
  • board_ststm32_netduino2plus — STM32F405RGT6 @ 168MHz, 1MB flash, 192KB RAM 🔥
  • board_ststm32_mote_l152rc — STM32L152RC @ 32MHz, 256KB flash, 32KB RAM
  • board_ststm32_nucleo_g071rb — STM32G071RBT6 @ 64MHz, 128KB flash, 36KB RAM
  • board_ststm32_nucleo_g431kb — STM32G431KBT6 @ 170MHz, 128KB flash, 32KB RAM
  • board_ststm32_nucleo_g431rb — STM32G431RBT6 @ 170MHz, 128KB flash, 32KB RAM
  • board_ststm32_nucleo_g474re — STM32G474RET6 @ 170MHz, 512KB flash, 128KB RAM
  • board_ststm32_olimexino — STM32F103RBT6 @ 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_olimex_p405 — STM32F405RGT6 @ 168MHz, 1MB flash, 192KB RAM
  • board_ststm32_piconomix_px_her0 — STM32L072RB @ 32MHz, 128KB flash, 20KB RAM
  • board_ststm32_prntr_v2 — STM32F407RE @ 168MHz, 512KB flash, 192KB RAM
  • board_ststm32_rak811_tracker — STM32L151RBT6 @ 32MHz, 128KB flash, 16KB RAM
  • board_ststm32_rak811_tracker_32 — STM32L151RBT6 @ 32MHz, 128KB flash, 32KB RAM
  • board_ststm32_rhf76_052 — STM32L051C8T6 @ 32MHz, 64KB flash, 8KB RAM
  • board_ststm32_steval_fcu001v1 — STM32F401CCU6 @ 84MHz, 256KB flash, 64KB RAM
  • board_ststm32_olimex_e407 — STM32F407ZGT6 @ 168MHz, 1MB flash, 128KB RAM
  • board_ststm32_olimex_h407 — STM32F407ZGT6 @ 168MHz, 1MB flash, 128KB RAM
  • board_ststm32_eval_f107vc — STM32F107VCT6 @ 72MHz, 256KB flash, 64KB RAM
vibe check ⚠️ the column widths in this part of the table are lowkey inconsistent — the first chunk has extra blank columns, the second chunk is narrower. that's not me being messy, that's literally how the source is laid out, bestie 🫶

okay and like, notice how some of these are actual official boards and some are third-party boards that just borrow the STM32 identity? both get the board_ststm32_ prefix because that's the naming convention and we respect it 💖 no cap.


still deep in the board list bestie, no we are not done yet, grab a snack 🍓

okay so quick refresher on what these columns are, since we're mid-table and you might've lost the plot: it's the board ID, then the actual MCU chip, then the clock speed, then the flash size, then the RAM size. five little facts per board, all of them real, all of them yours 💖

  • board_ststm32_eval_f373vc — MCU is STM32F373VCT6, running at 72MHz, with 256KB of flash and 32KB of RAM
  • board_ststm32_eval_f072vb — MCU is STM32F072VBT6, running at 48MHz, with 128KB of flash and 16KB of RAM
  • board_ststm32_genericSTM32F103C8 — MCU is STM32F103C8T6, running at 72MHz, with 64KB of flash and 20KB of RAM
  • board_ststm32_genericSTM32F103CB — MCU is STM32F103CBT6, running at 72MHz, with 128KB of flash and 20KB of RAM
  • board_ststm32_genericSTM32F103R8 — MCU is STM32F103R8T6, running at 72MHz, with 64KB of flash and 20KB of RAM
  • board_ststm32_genericSTM32F103RB — MCU is STM32F103RBT6, running at 72MHz, with 128KB of flash and 20KB of RAM
  • board_ststm32_genericSTM32F103RC — MCU is STM32F103RCT6, running at 72MHz, with 256KB of flash and 48KB of RAM
  • board_ststm32_genericSTM32F103RE — MCU is STM32F103RET6, running at 72MHz, with 512KB of flash and 64KB of RAM
  • board_ststm32_genericSTM32F103T8 — MCU is STM32F103T8T6, running at 72MHz, with 64KB of flash and 20KB of RAM
  • board_ststm32_genericSTM32F103TB — MCU is STM32F103TBT6, running at 72MHz, with 128KB of flash and 20KB of RAM
  • board_ststm32_genericSTM32F103VB — MCU is STM32F103VBT6, running at 72MHz, with 128KB of flash and 20KB of RAM
  • board_ststm32_genericSTM32F103VC — MCU is STM32F103VCT6, running at 72MHz, with 256KB of flash and 48KB of RAM
  • board_ststm32_genericSTM32F103VD — MCU is STM32F103VDT6, running at 72MHz, with 384KB of flash and 64KB of RAM
  • board_ststm32_genericSTM32F103VE — MCU is STM32F103VET6, running at 72MHz, with 512KB of flash and 64KB of RAM
  • board_ststm32_genericSTM32F103ZC — MCU is STM32F103ZCT6, running at 72MHz, with 256KB of flash and 48KB of RAM
  • board_ststm32_genericSTM32F103ZD — MCU is STM32F103ZDT6, running at 72MHz, with 384KB of flash and 64KB of RAM
  • board_ststm32_genericSTM32F103ZE — MCU is STM32F103ZET6, running at 72MHz, with 512KB of flash and 64KB of RAM
  • board_ststm32_genericSTM32F303CB — MCU is STM32F303CBT6, running at 72MHz, with 128KB of flash and 32KB of RAM
  • board_ststm32_genericSTM32F401RB — MCU is STM32F401RB, running at 84MHz, with 128KB of flash and 64KB of RAM
  • board_ststm32_genericSTM32F401RC — MCU is STM32F401RC, running at 84MHz, with 256KB of flash and 64KB of RAM
  • board_ststm32_genericSTM32F401RE — MCU is STM32F401RE, running at 84MHz, with 512KB of flash and 96KB of RAM
  • board_ststm32_genericSTM32F407VET6 — MCU is STM32F407VET6, running at 168MHz, with 502.23KB of flash and 128KB of RAM
  • board_ststm32_genericSTM32F407VGT6 — MCU is STM32F407VGT6, running at 168MHz, with 1MB of flash and 192KB of RAM
  • board_ststm32_stm32f4stamp — MCU is STM32F405RGT6, running at 168MHz, with 1MB of flash and 192KB of RAM
  • board_ststm32_steval_mksboxv1 — MCU is STM32L4R9ZI, running at 120MHz, with 2MB of flash and 640KB of RAM
  • board_ststm32_sparky_v1 — MCU is STM32F303CCT6, running at 72MHz, with 256KB of flash and 40KB of RAM
  • board_ststm32_thunder_pack — MCU is STM32L072KZ, running at 32MHz, with 192KB of flash and 20KB of RAM
  • board_ststm32_hy_tinystm103tb — MCU is STM32F103TBU6, running at 72MHz, with 128KB of flash and 20KB of RAM
  • board_ststm32_vake_v1 — MCU is STM32F446RET6, running at 180MHz, with 512KB of flash and 128KB of RAM
  • board_ststm32_wraith32_v1 — MCU is STM32F051K6, running at 48MHz, with 32KB of flash and 7.75KB of RAM
  • board_ststm32_ublox_c030_n211 — MCU is STM32F437VG, running at 180MHz, with 1MB of flash and 256KB of RAM
ngl the 502.23KB on board_ststm32_genericSTM32F407VET6 and the 7.75KB on board_ststm32_wraith32_v1 are giving "who measured this" energy but bestie they are the values, so they stay exactly like that 💅

and we're still going, don't you dare close the terminal 🫶

├─────────────────────────────────────────┼───────────────┼───────────┼──────────┼──────────┤
│ board_ststm32_ublox_c030_u201           │ STM32F437VG   │ 180MHz    │ 1MB      │ 256KB    │
├─────────────────────────────────────────┼───────────────┼───────────┼──────────┼──────────┤
│ board_ststm32_ublox_evk_odin_w2         │ STM32F439ZIY6 │ 168MHz    │ 2MB      │ 256KB    │
├─────────────────────────────────────────┼───────────────┼───────────┼──────────┼──────────┤
│ board_ststm32_mtb_ublox_odin_w2         │ STM32F439ZIY6 │ 168MHz    │ 2MB      │ 256KB    │
└─────────────────────────────────────────┴───────────────┴───────────┴──────────┴──────────┘

okayyy bestie we're STILL in the board table and yes it is still going, the STM32 ecosystem is literally infinite, we love her for that 💖 Three more U-blox girlies just dropped: the board_ststm32_ublox_c030_u201 rocking an STM32F437VG at 180MHz with 1MB of flash and 256KB of RAM, then the board_ststm32_ublox_evk_odin_w2 and the board_ststm32_mtb_ublox_odin_w2, both of which are giving STM32F439ZIY6, 168MHz, 2MB, 256KB. Matching specs, matching energy, twin icons fr fr 👑


Stable and upstream versions 🌈

Okay so here's the tea 🍓 — you can absolutely switch between the stable releases of the ST STM32 development platform and the latest upstream version whenever you want. The way you do it is with the projectconf_env_platform option in projectconf, and yes, it works exactly as described below. Main character config energy only 💅

Stable ✨

For when you want the vibes to be, like, known good: 🫶

; Latest stable version
[env:latest_stable]
platform = ststm32
board = ...

; Custom stable version
[env:custom_stable]
platform = ststm32@x.y.z
board = ...

So the first one, [env:latest_stable], just goes platform = ststm32 and you get whatever the latest stable version is — she'll pick for you, no cap. 🎀

And the second one, [env:custom_stable], is for when you have opinions about exactly which release you want, so you pin it with platform = ststm32@x.y.z. The x.y.z is literally just the version number, and you swap in the actual digits. Very demure, very mindful 🧚

Heads up bestie: that x.y.z is a placeholder — put a real version number there, don't just leave the letters in your file 💀

Upstream 🦋

And for the girlies who simply cannot wait and need the bleeding-edge develop branch RIGHT NOW: 🔥

[env:upstream_develop]
platform = https://github.com/platformio/platform-ststm32.git
board = ...

Yeah so you literally just point platform at the Git URL https://github.com/platformio/platform-ststm32.git and it grabs the upstream version straight from the source. It's giving "I live on the edge and the edge lives in me" 😭 Which, iconic behavior, but also bestie — upstream means upstream, so, you know, vibe check accordingly.

And the board = ... line? Same in all three envs, you just fill in your actual board name, because obviously the platform needs to know what it's building for 💜 ⭐


  • framework-arduinostm32mxchip — Arduino Wiring-based Framework (ST STM32 MXChip Core) 🎀
  • framework-arduinoststm32 — Arduino Wiring-based Framework (STM32 Core) ✨
  • framework-arduinostm32-maple — Arduino Wiring-based Framework (ST STM32 Maple Core) 🍁
  • framework-cmsis — Vendor-independent hardware abstraction layer for the Cortex-M processor series 💜
  • framework-libopencm3 — libOpenCM3 Framework 🌸
  • framework-mbed — mbed Framework 🦋
  • framework-spl — Standard Peripheral Library for STM32 MCUs ⭐
  • framework-stm32cube — STM32Cube embedded software libraries 🧊 (cube, get it)
  • framework-zephyr — Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. 👑
ok bestie this is where the Zephyr extended universe begins and it is long, buckle up 🫶
  • framework-zephyr-canopennode — Zephyr module for CANopenNode - a free and open source CANopen Stack 🚌
  • framework-zephyr-civetweb — Zephyr module CivetWeb Embedded C/C++ web server 🌐
  • framework-zephyr-fatfs — Zephyr module for FATFS filesystem 💾
  • framework-zephyr-hal-st — Zephyr module for the official libraries provided by STMicroelectronics 🏭
  • framework-zephyr-hal-stm32 — ST STM32 HAL for Zephyr framework 🔧
  • framework-zephyr-libmetal — Zephyr module for HAL abstraction layer used by open-amp 🪙
  • framework-zephyr-littlefs — Zephyr module for littlefs filesystem 🍓
  • framework-zephyr-loramac-node — Zephyr module for LoRaWAN endpoint stack implementation 📡
  • framework-zephyr-lvgl — Zephyr module for LittlevGL - an Open-source Embedded GUI Library 🎨
  • framework-zephyr-mbedtls — mbedTLS module for Zephyr 🔐
  • framework-zephyr-mcuboot — Zephyr module for MCUboot - a secure bootloader for 32-bit MCUs 🥾
  • framework-zephyr-mcumgr — Zephyr module for mcumgr management library for 32-bit MCUs 🛠️
  • framework-zephyr-mipi-sys-t — Zephyr module for MIPI System Software Trace 🔍
  • framework-zephyr-open-amp — Zephyr module for Open Asymmetric Multi Processing (OpenAMP) framework 🧠
  • framework-zephyr-openthread — OpenThread module for Zephyr 🧵
  • framework-zephyr-segger — Zephyr module for Segger RTT 📶
  • framework-zephyr-tinycbor — Zephyr module for Concise Binary Object Representation Library 🪶

and then we slide into the tools, which are the little helpers doing the actual heavy lifting 💅

  • tool-cmake — CMake is an open-source, cross-platform family of tools designed to build, test and package software. 🏗️
  • tool-dfuutil — Host side implementation of the DFU 1.0 and DFU 1.1 specifications ⚡
  • tool-dtc — Device tree compiler 🌳
  • tool-gperf — GNU gperf is a perfect hash function generator. #️⃣
  • tool-jlink — SEGGER J-Link Software and Documentation Pack 🔌
  • tool-ninja — Ninja is a small build system with a focus on speed. ⚡
  • tool-openocd — OpenOCD 🌸
  • tool-stm32duino — STM32Duino Tools 🦋
  • toolchain-gccarmnoneeabi — gcc-arm-embedded 💜

⚠️ WARNING ⚠️ — okay bestie, read this part, it's giving important: Linux Users: 🐧 - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: 🪟 Please check that you have a correctly installed USB driver from board manufacturer

🧚 Frameworks 🧚

no cap, this is the whole framework menu. every single one. 💖

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
  • framework_cmsis — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices.
  • framework_libopencm3 — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. 🌈
  • framework_mbed — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 👑
  • framework_spl — The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers. 💅
  • framework_stm32cube — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥
  • framework_zephyr — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and

│ │ │ security in mind. │ │ │ └──────────────────────┴────┼───────────────────────┘ │ │ │ │


🦋 Boards 🦋

NOTE bestie, read this before you scroll, it's important fr fr:
  • You can list all the pre-configured boards with the cmd_boards command, or by using the PlatformIO Boards Explorer ✨
  • For more detailed board info, pls scroll the tables below horizontally — yes, sideways, I know, it's giving chaos but it works 💅

1BitSquared 🌸

  • board_ststm32_1bitsy_stm32f415rgt — Debug: External · MCU: STM32F415RGT · Frequency: 168MHz · Flash: 1MB · RAM: 128KB

96Boards 🎀

  • board_ststm32_b96b_argonkey — Debug: External · MCU: STM32F412CG · Frequency: 100MHz · Flash: 1MB · RAM: 256KB
  • board_ststm32_b96b_f446ve — Debug: On-board · MCU: STM32F446VET6 · Frequency: 168MHz · Flash: 512KB · RAM: 128KB
  • board_ststm32_b96b_neonkey — Debug: External · MCU: STM32F411CE · Frequency: 100MHz · Flash: 512KB · RAM: 128KB

Adafruit 💜

  • board_ststm32_adafruit_feather_f405 — Debug: External · MCU: STM32F405RGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 128KB

AfroFlight 🦋

  • board_ststm32_afroflight_f103cb — Debug: External · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB

Airbot ⭐

  • board_ststm32_wraith32_v1 — Debug: External · MCU: STM32F051K6 · Frequency: 48MHz · Flash: 32KB · RAM: 7.75KB

Armed 🔥

  • board_ststm32_armed_v1 — Debug: External · MCU: STM32F407VET6 · Frequency: 168MHz · Flash: 512KB · RAM: 192KB

Armstrap 💖

  • board_ststm32_armstrap_eagle1024 — Debug: On-board · MCU: STM32F417VGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 192KB
  • board_ststm32_armstrap_eagle2048 — Debug: On-board · MCU: STM32F427VIT6 · Frequency: 168MHz · Flash: 1.99MB · RAM: 256KB
  • board_ststm32_armstrap_eagle512 — Debug: On-board · MCU: STM32F407VET6 · Frequency: 168MHz · Flash: 512KB · RAM: 192KB

Avnet Silica 🧚

  • board_ststm32_silica_sensor_node — Debug: On-board · MCU: STM32L476JG · Frequency: 80MHz · Flash: 1MB · RAM: 128KB

💫 Diymore 💫

okay so this one's a whole vibe, a chunky F4 with room to breathe ✨

  • board_ststm32_diymore_f407vgt — Debug: External · MCU: STM32F407VGT6 · 168MHz · Flash: 512KB · RAM: 128KB

🫶 Espotel 🫶

one board, one job, and she's serving 💅

  • board_ststm32_elmo_f411re — Debug: External · MCU: STM32F411RET6 · 100MHz · Flash: 512KB · RAM: 128KB

🌈 Generic 🌈

bestie this is the big shelf, the bluepill/blackpill family reunion, so many flavors of the exact same chip energy 😭 literally all of them are External debug, no cap 🎀

  • board_ststm32_blackpill_f103c8 — Debug: External · MCU: STM32F103C8T6 · 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_blackpill_f103c8_128 — Debug: External · MCU: STM32F103C8T6 · 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_bluepill_f103c6 — Debug: External · MCU: STM32F103C6T6 · 72MHz · Flash: 32KB · RAM: 10KB
  • board_ststm32_bluepill_f103c8 — Debug: External · MCU: STM32F103C8T6 · 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_bluepill_f103c8_128k — Debug: External · MCU: STM32F103C8T6 · 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_demo_f030f4 — Debug: External · MCU: STM32F030F4P6 · 48MHz · Flash: 16KB · RAM: 4KB
  • board_ststm32_fk407m1 — Debug: External · MCU: STM32F407VET6 · 168MHz · Flash: 512KB · RAM: 128KB
  • board_ststm32_genericSTM32F103C8 — Debug: External · MCU: STM32F103C8T6 · 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_genericSTM32F103CB — Debug: External · MCU: STM32F103CBT6 · 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_genericSTM32F103R8 — Debug: External · MCU: STM32F103R8T6 · 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_genericSTM32F103RB — Debug: External · MCU: STM32F103RBT6 · 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_genericSTM32F103RC — Debug: External · MCU: STM32F103RCT6 · 72MHz · Flash: 256KB · RAM: 48KB
  • board_ststm32_genericSTM32F103RE — Debug: External · MCU: STM32F103RET6 · 72MHz · Flash: 512KB · RAM: 64KB
  • board_ststm32_genericSTM32F103T8 — Debug: External · MCU: STM32F103T8T6 · 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_genericSTM32F103TB — Debug: External · MCU: STM32F103TBT6 · 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_genericSTM32F103VB — Debug: External · MCU: STM32F103VBT6 · 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_genericSTM32F103VC — Debug: External · MCU: STM32F103VCT6 · 72MHz · Flash: 256KB · RAM: 48KB
  • board_ststm32_genericSTM32F103VD — Debug: External · MCU: STM32F103VDT6 · 72MHz · Flash: 384KB · RAM: 64KB
  • board_ststm32_genericSTM32F103VE — Debug: External · MCU: STM32F103VET6 · 72MHz · Flash: 512KB · RAM: 64KB
  • board_ststm32_genericSTM32F103ZC — Debug: External · MCU: STM32F103ZCT6 · 72MHz · Flash: 256KB · RAM: 48KB
  • board_ststm32_genericSTM32F103ZD — Debug: External · MCU: STM32F103ZDT6 · 72MHz · Flash: 384KB · RAM: 64KB
ngl the way that the entire Generic block is just the same 72MHz F103 core wearing different hats... it's giving ✨one chip, infinite lewks✨ and honestly? we're obsessed 💖
  • board_ststm32_genericSTM32F103ZE — Debug: External · MCU: STM32F103ZET6 · Frequency: 72MHz · Flash: 512KB · RAM: 64KB 💖
  • board_ststm32_genericSTM32F303CB — Debug: External · MCU: STM32F303CBT6 · Frequency: 72MHz · Flash: 128KB · RAM: 32KB
  • board_ststm32_genericSTM32F401RB — Debug: External · MCU: STM32F401RB · Frequency: 84MHz · Flash: 128KB · RAM: 64KB
  • board_ststm32_genericSTM32F401RC — Debug: External · MCU: STM32F401RC · Frequency: 84MHz · Flash: 256KB · RAM: 64KB
  • board_ststm32_genericSTM32F401RE — Debug: External · MCU: STM32F401RE · Frequency: 84MHz · Flash: 512KB · RAM: 96KB
  • board_ststm32_genericSTM32F407VET6 — Debug: External · MCU: STM32F407VET6 · Frequency: 168MHz · Flash: 502.23KB · RAM: 128KB
  • board_ststm32_genericSTM32F407VGT6 — Debug: External · MCU: STM32F407VGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 192KB
  • board_ststm32_stm32f4stamp — Debug: External · MCU: STM32F405RGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 192KB ✨

🌸 HY 🌸

  • board_ststm32_hy_tinystm103tb — Debug: External · MCU: STM32F103TBU6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB 🎀

🦋 LeafLabs 🦋

  • board_ststm32_maple — Debug: External · MCU: STM32F103RBT6 · Frequency: 72MHz · Flash: 108KB · RAM: 17KB
  • board_ststm32_maple_ret6 — Debug: External · MCU: STM32F103RET6 · Frequency: 72MHz · Flash: 256KB · RAM: 48KB
  • board_ststm32_maple_mini_b20 — Debug: External · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 120KB · RAM: 20KB
  • board_ststm32_maple_mini_origin — Debug: External · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 108KB · RAM: 17KB

🌈 MXChip 🌈

  • board_ststm32_mxchip_az3166 — Debug: On-board · MCU: STM32F412ZGT6 · Frequency: 100MHz · Flash: 1MB · RAM: 256KB 👑

💅 Malyan 💅

  • board_ststm32_malyanm200_f070cb — Debug: External · MCU: STM32F070CBT6 · Frequency: 48MHz · Flash: 120KB · RAM: 14.81KB
  • board_ststm32_malyanm300_f070cb — Debug: External · MCU: STM32F070CBT6 · Frequency: 48MHz · Flash: 120KB · RAM: 14.81KB
  • board_ststm32_malyanm200_f103cb — Debug: External · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 120KB · RAM: 20KB

🫶 Microduino 🫶

  • board_ststm32_microduino32_flash — Debug: External · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 105.47KB · RAM: 16.60KB 🍓

✨ Midatronics ✨

  • board_ststm32_mkr_sharky — debug: External · MCU: STM32WB55CG · frequency: 64MHz · flash: 512KB · RAM: 192.00KB

✨ MultiTech ✨

  • board_ststm32_mts_dragonfly_f411re — debug: External · MCU: STM32F411RET6 · frequency: 100MHz · flash: 512KB · RAM: 128KB
  • board_ststm32_mts_mdot_f405rg — debug: External · MCU: STM32F411RET6 · frequency: 100MHz · flash: 512KB · RAM: 128KB
  • board_ststm32_mts_mdot_f411re — debug: External · MCU: STM32F411RET6 · frequency: 100MHz · flash: 512KB · RAM: 128KB
  • board_ststm32_xdot_l151cc — debug: External · MCU: STM32L151CCU6 · frequency: 32MHz · flash: 256KB · RAM: 32KB

✨ Netduino ✨

  • board_ststm32_netduino2plus — debug: External · MCU: STM32F405RGT6 · frequency: 168MHz · flash: 1MB · RAM: 192KB

✨ Olimex ✨

  • board_ststm32_olimexino — debug: External · MCU: STM32F103RBT6 · frequency: 72MHz · flash: 128KB · RAM: 20KB
  • board_ststm32_olimex_p405 — debug: External · MCU: STM32F405RGT6 · frequency: 168MHz · flash: 1MB · RAM: 192KB
  • board_ststm32_olimex_e407 — debug: External · MCU: STM32F407ZGT6 · frequency: 168MHz · flash: 1MB · RAM: 128KB
  • board_ststm32_olimex_h407 — debug: External · MCU: STM32F407ZGT6 · frequency: 168MHz · flash: 1MB · RAM: 128KB

✨ Piconomix ✨

  • board_ststm32_piconomix_px_her0 — debug: External · MCU: STM32L072RB · frequency: 32MHz · flash: 128KB · RAM: 20KB

✨ PrntrBoard ✨

  • board_ststm32_prntr_v2 — debug: External · MCU: STM32F407RE · frequency: 168MHz · flash: 512KB · RAM: 192KB

✨ RAK ✨

  • board_ststm32_rak811_tracker — debug: External · MCU: STM32L151RBT6 · frequency: 32MHz · flash: 128KB · RAM: 16KB
  • board_ststm32_rak811_tracker_32 — debug: External · MCU: STM32L151RBT6 · frequency: 32MHz · flash: 128KB · RAM: 32KB

🫶 RUMBA 🫶

  • board_ststm32_rumba32_f446ve — debug via External, MCU is STM32F446RET6, running at 180MHz, with 512KB of Flash and 128KB of RAM 💖

🦋 RemRam 🦋

  • board_ststm32_remram_v1 — debug is On-board, MCU is STM32F765VIT6, running at 216MHz, with 2MB of Flash and 512KB of RAM ✨

🌸 RobotDyn 🌸

  • board_ststm32_robotdyn_blackpill_f303cc — debug via External, MCU is STM32F303CCT6, running at 72MHz, with 256KB of Flash and 40KB of RAM 🎀

💅 RushUp 💅

  • board_ststm32_cloud_jam — debug is On-board, MCU is STM32F401RET6, running at 84MHz, with 512KB of Flash and 96KB of RAM
  • board_ststm32_cloud_jam_l4 — debug is On-board, MCU is STM32L476RGT6, running at 80MHz, with 1MB of Flash and 128KB of RAM 👑

👑 ST 👑

okay bestie, this one's the main character of the whole list, look at this roster 😭

  • board_ststm32_disco_f412zg — debug is On-board, MCU is STM32F412ZGT6, running at 100MHz, with 1MB of Flash and 256KB of RAM
  • board_ststm32_disco_f723ie — debug is On-board, MCU is STM32F723IEK6, running at 216MHz, with 512KB of Flash and 192KB of RAM
  • board_ststm32_st3dp001_eval — debug is On-board, MCU is STM32F401VGT6, running at 84MHz, with 512KB of Flash and 96KB of RAM
  • board_ststm32_black_f407ve — debug via External, MCU is STM32F407VET6, running at 168MHz, with 512KB of Flash and 128KB of RAM
  • board_ststm32_black_f407vg — debug via External, MCU is STM32F407VGT6, running at 168MHz, with 512KB of Flash and 128KB of RAM
  • board_ststm32_black_f407ze — debug via External, MCU is STM32F407ZET6, running at 168MHz, with 512KB of Flash and 128KB of RAM
  • board_ststm32_black_f407zg — debug via External, MCU is STM32F407ZGT6, running at 168MHz, with 1MB of Flash and 128KB of RAM
  • board_ststm32_blackpill_f401cc — debug via External, MCU is STM32F401CCT6, running at 84MHz, with 256KB of Flash and 64KB of RAM
  • board_ststm32_blue_f407ve_mini — debug via External, MCU is STM32F407VET6, running at 168MHz, with 512KB of Flash and 128KB of RAM
  • board_ststm32_coreboard_f401rc — debug via External, MCU is STM32F401RCT6, running at 84MHz, with 256KB of Flash and 64KB of RAM
  • board_ststm32_nucleo_g071rb — debug via External, MCU is STM32G071RBT6, running at 64MHz, with 128KB of Flash and 36KB of RAM
  • board_ststm32_nucleo_g431kb — debug via External, MCU is STM32G431KBT6, running at 170MHz, with 128KB of Flash and 32KB of RAM
  • board_ststm32_nucleo_g431rb — debug via External, MCU is STM32G431RBT6, running at 170MHz, with 128KB of Flash and 32KB of RAM
  • board_ststm32_nucleo_g474re — debug via External, MCU is STM32G474RET6, running at 170MHz, with 512KB of Flash and 128KB of RAM

okay so we're deep in the STM32 board buffet and it's still going, bestie. same columns, same energy: board ID, whether the chip is baked onto the dev board (On-board) or chillin' externally (External), the MCU, the clock speed, flash, and RAM. every single one, no skips, periodt. 💅

  • board_ststm32_nucleo_wb55rg_p — On-board · STM32WB55RG · 64MHz · 512KB flash · 192.00KB RAM ✨ (yes the RAM really is written as 192.00KB, we do not round, we respect the decimals 💖)
  • board_ststm32_rhf76_052 — External · STM32L051C8T6 · 32MHz · 64KB flash · 8KB RAM 🌸 (the only External one in this lil stretch, she's special like that)
  • board_ststm32_disco_f334c8 — On-board · STM32F334C8T6 · 72MHz · 64KB flash · 12KB RAM
  • board_ststm32_disco_f401vc — On-board · STM32F401VCT6 · 84MHz · 256KB flash · 64KB RAM
  • board_ststm32_disco_f411ve — On-board · STM32F411VET6 · 100MHz · 512KB flash · 128KB RAM
  • board_ststm32_disco_f413zh — On-board · STM32F413ZHT6 · 100MHz · 512KB flash · 128KB RAM
  • board_ststm32_disco_f429zi — On-board · STM32F429ZIT6 · 180MHz · 2MB flash · 256KB RAM 🔥 (2 megabytes of flash?? she ate and left no crumbs)
  • board_ststm32_disco_f469ni — On-board · STM32F469NIH6 · 180MHz · 1MB flash · 384KB RAM 👑
  • board_ststm32_disco_f746ng — On-board · STM32F746NGH6 · 216MHz · 1MB flash · 320KB RAM 🦋 (216MHz is giving main character energy fr fr)
  • board_ststm32_disco_f769ni — On-board · STM32F769NIH6 · 216MHz · 1MB flash · 512KB RAM 💜
  • board_ststm32_disco_l053c8 — On-board · STM32L053C8T6 · 32MHz · 64KB flash · 8KB RAM
  • board_ststm32_disco_l100rc — On-board · STM32L100RCT6 · 32MHz · 256KB flash · 16KB RAM
  • board_ststm32_disco_l476vg — On-board · STM32L476VGT6 · 80MHz · 1MB flash · 128KB RAM
  • board_ststm32_disco_l496ag — On-board · STM32L496AGI6 · 80MHz · 1MB flash · 320KB RAM
  • board_ststm32_disco_l475vg_iot01a — On-board · STM32L475VGT6 · 80MHz · 1MB flash · 128KB RAM 🌈
  • board_ststm32_disco_l072cz_lrwan1 — On-board · STM32L072CZ · 32MHz · 192KB flash · 20KB RAM
  • board_ststm32_disco_f072rb — On-board · STM32F072RBT6 · 48MHz · 128KB flash · 16KB RAM
  • board_ststm32_nucleo_f030r8 — On-board · STM32F030R8T6 · 48MHz · 64KB flash · 8KB RAM
  • board_ststm32_nucleo_f031k6 — On-board · STM32F031K6T6 · 48MHz · 32KB flash · 4KB RAM 🍓 (tiny but mighty, ok)
  • board_ststm32_nucleo_f042k6 — On-board · STM32F042K6T6 · 48MHz · 32KB flash · 6KB RAM
  • board_ststm32_nucleo_f070rb — On-board · STM32F070RBT6 · 48MHz · 128KB flash · 16KB RAM
  • board_ststm32_nucleo_f072rb — On-board · STM32F072RBT6 · 48MHz · 128KB flash · 16KB RAM
  • board_ststm32_nucleo_f091rc — On-board · STM32F091RCT6 · 48MHz · 256KB flash · 32KB RAM
  • board_ststm32_nucleo_f103rb — On-board · STM32F103RBT6 · 72MHz · 128KB flash · 20KB RAM
  • board_ststm32_nucleo_f207zg — On-board · STM32F207ZGT6 · 120MHz · 1MB flash · 128KB RAM
  • board_ststm32_nucleo_f302r8 — On-board · STM32F302R8T6 · 72MHz · 64KB flash · 16KB RAM
  • board_ststm32_nucleo_f303k8 — On-board · STM32F303K8T6 · 72MHz · 64KB flash · 12KB RAM
  • board_ststm32_nucleo_f303re — On-board · STM32F303RET6 · 72MHz · 512KB flash · 64KB RAM
  • board_ststm32_nucleo_f303ze — On-board · STM32F303ZET6 · 72MHz · 512KB flash · 64KB RAM
  • board_ststm32_nucleo_f334r8 — On-board · STM32F334R8T6 · 72MHz · 64KB flash · 16KB RAM
  • board_ststm32_nucleo_f401re — On-board · STM32F401RET6 · 84MHz · 512KB flash · 96KB RAM ✨

and the list just keeps going, so hold on bestie, we are not done yet 💖

okay continuing the board list bestie, we're fully in STM32 territory now and it is giving 🦋 same deal as before: board ID, the chip soldered on it, clock speed, flash, RAM. no cap ✨


  • board_ststm32_nucleo_f410rb — on-board STM32F410RBT6, 100MHz, 128KB flash, 32KB RAM 💖
  • board_ststm32_nucleo_f411re — on-board STM32F411RET6, 100MHz, 512KB flash, 128KB RAM ✨
  • board_ststm32_nucleo_f412zg — on-board STM32F412ZGT6, 100MHz, 1MB flash, 256KB RAM 🎀
  • board_ststm32_nucleo_f413zh — on-board STM32F413ZHT6, 100MHz, 512KB flash, 128KB RAM 🦋
  • board_ststm32_nucleo_f429zi — on-board STM32F429ZIT6, 180MHz, 2MB flash, 256KB RAM 🌸
  • board_ststm32_nucleo_f439zi — on-board STM32F439ZIT6, 180MHz, 2MB flash, 256KB RAM 💅
  • board_ststm32_nucleo_f446re — on-board STM32F446RET6, 180MHz, 512KB flash, 128KB RAM 🫶
  • board_ststm32_nucleo_f446ze — on-board STM32F446ZET6, 180MHz, 512KB flash, 128KB RAM 😭
  • board_ststm32_nucleo_f722ze — on-board STM32F722ZET6, 216MHz, 512KB flash, 256KB RAM 🔥
  • board_ststm32_nucleo_f746zg — on-board STM32F746ZGT6, 216MHz, 1MB flash, 320KB RAM 👑
  • board_ststm32_nucleo_f756zg — on-board STM32F756ZG, 216MHz, 1MB flash, 320KB RAM 🌈
  • board_ststm32_nucleo_f767zi — on-board STM32F767ZIT6, 216MHz, 2MB flash, 512KB RAM ⭐
  • board_ststm32_nucleo_h743zi — on-board STM32H743ZIT6, 400MHz, 2MB flash, 512KB RAM 💀

like, 400MHz?? she's booked and busy fr fr 🙈


  • board_ststm32_nucleo_l011k4 — on-board STM32L011K4T6, 32MHz, 16KB flash, 2KB RAM 🍓
  • board_ststm32_nucleo_l031k6 — on-board STM32L031K6T6, 32MHz, 32KB flash, 8KB RAM 🧚
  • board_ststm32_nucleo_l053r8 — on-board STM32L053R8T6, 32MHz, 64KB flash, 8KB RAM 💜
  • board_ststm32_nucleo_l073rz — on-board STM32L073RZ, 32MHz, 192KB flash, 20KB RAM 💖
  • board_ststm32_nucleo_l152re — on-board STM32L152RET6, 32MHz, 512KB flash, 80KB RAM ✨
  • board_ststm32_nucleo_l412kb — on-board STM32L412KBU6, 80MHz, 128KB flash, 40KB RAM 🎀
  • board_ststm32_nucleo_l432kc — on-board STM32L432KCU6, 80MHz, 256KB flash, 64KB RAM 🦋
  • board_ststm32_nucleo_l433rc_p — on-board STM32L433RC, 80MHz, 256KB flash, 64KB RAM 🌸
  • board_ststm32_nucleo_l452re — on-board STM32L452RET6, 80MHz, 256KB flash, 64KB RAM 💅
  • board_ststm32_nucleo_l476rg — on-board STM32L476RGT6, 80MHz, 1MB flash, 128KB RAM 🫶
  • board_ststm32_nucleo_l486rg — on-board STM32L486RGT6, 80MHz, 1MB flash, 128KB RAM 😭
  • board_ststm32_nucleo_l496zg — on-board STM32L496ZGT6, 80MHz, 1MB flash, 128KB RAM 🔥
  • board_ststm32_nucleo_l496zg_p — on-board STM32L496ZGT6P, 80MHz, 1MB flash, 320KB RAM 👑
  • board_ststm32_nucleo_l4r5zi — on-board STM32L4R5ZIT6, 120MHz, 2MB flash, 640KB RAM 🌈
bestie note: yes, board_ststm32_nucleo_l496zg and board_ststm32_nucleo_l496zg_p are two separate boards, they are not a typo, do not merge them in ur head 💀

and now the disco girlies enter the chat 💃

  • board_ststm32_disco_f030r8 — on-board STM32F030R8T6, 48MHz, 64KB flash, 8KB RAM ⭐
  • board_ststm32_disco_f051r8 — on-board STM32F051R8T6, 48MHz, 64KB flash, 8KB RAM 💜
  • board_ststm32_disco_f303vc — on-board STM32F303VCT6, 72MHz, 256KB flash, 48KB RAM 🍓
  • board_ststm32_disco_f407vg — on-board STM32F407VGT6, 168MHz, 1MB flash, 128KB RAM 🧚

still more where that came from, don't go anywhere 💖

  • board_ststm32_eval_l073z — On-board chip situation, it's giving STM32L073VZT6, clocking along at 32MHz, with 192KB of flash and 20KB of RAM 💖
  • board_ststm32_disco_l152rb — On-board bestie STM32L152RBT6, 32MHz, 128KB flash, 16KB RAM ✨
  • board_ststm32_disco_f100rb — On-board STM32F100RBT6 living its 24MHz truth, 128KB flash, 8KB RAM 🎀
  • board_ststm32_steval_fcu001v1 — External cutie, STM32F401CCU6, 84MHz, 256KB flash, 64KB RAM 🦋
  • board_ststm32_eval_f107vc — External, STM32F107VCT6, 72MHz, 256KB flash, 64KB RAM 🌸
  • board_ststm32_eval_f373vc — External, STM32F373VCT6, 72MHz, 256KB flash, 32KB RAM 💅
  • board_ststm32_eval_f072vb — External, STM32F072VBT6, 48MHz, 128KB flash, 16KB RAM 🫶
  • board_ststm32_disco_f750n8 — On-board and honestly kind of a flex, STM32F750N8H6 at 216MHz, 64KB flash, 340KB RAM 😭🔥
  • board_ststm32_disco_h743xi — On-board main character energy fr, STM32H747XIH6 at 400MHz, 2MB flash, 512KB RAM 👑
  • board_ststm32_steval_mksboxv1 — External, STM32L4R9ZI, 120MHz, 2MB flash, 640KB RAM 🌈

bestie reminder: that's the board, the chip it's rockin', the clock speed, the flash, and the RAM — in that exact order, no cap. Don't shuffle them, iykyk 💀

🫶 SeeedStudio

  • board_ststm32_seeedArchMax — debug: On-board · MCU: STM32F407VET6 · Frequency: 168MHz · Flash: 512KB · RAM: 192KB
  • board_ststm32_wio_3g — debug: On-board · MCU: STM32F439VI · Frequency: 180MHz · Flash: 2MB · RAM: 256KB

the way Wio 3G is just sitting there with 2MB of flash like it's nothing… she's got range fr 💖


✨ Semtech

  • board_ststm32_mote_l152rc — debug: External · MCU: STM32L152RC · Frequency: 32MHz · Flash: 256KB · RAM: 32KB

32MHz bestie, she's lowkey a slow queen but she gets there 🌸


💅 TauLabs

  • board_ststm32_sparky_v1 — debug: External · MCU: STM32F303CCT6 · Frequency: 72MHz · Flash: 256KB · RAM: 40KB

🦋 ThunderPack

  • board_ststm32_thunder_pack — debug: External · MCU: STM32L072KZ · Frequency: 32MHz · Flash: 192KB · RAM: 20KB

named ThunderPack and running at 32MHz, the audacity, I'm obsessed 😭💜


🎀 VAE

  • board_ststm32_vake_v1 — debug: External · MCU: STM32F446RET6 · Frequency: 180MHz · Flash: 512KB · RAM: 128KB

🌈 rhomb.io

  • board_ststm32_rhombio_l476dmw1k — debug: On-board · MCU: STM32L476VGT6 · Frequency: 80MHz · Flash: 1MB · RAM: 128KB

🍓 sakura.io

  • board_ststm32_sakuraio_evb_01 — debug: On-board · MCU: STM32F411RET6 · Frequency: 100MHz · Flash: 1MB · RAM: 128KB

👑 u-blox

okay this whole family is giving main character energy, four boards, three of them rocking the same STM32F437VG, no cap:

  • board_ststm32_mbed_connect_odin — debug: On-board · MCU: STM32F439ZIY6 · Frequency: 168MHz · Flash: 2MB · RAM: 256KB
  • board_ststm32_ublox_c030_n211 — debug: External · MCU: STM32F437VG · Frequency: 180MHz · Flash: 1MB · RAM: 256KB
  • board_ststm32_ublox_c030_r410m — debug: On-board · MCU: STM32F437VG · Frequency: 180MHz · Flash: 1MB · RAM: 256KB
  • board_ststm32_ublox_c030_u201 — debug: External · MCU: STM32F437VG · Frequency: 180MHz · Flash: 1MB · RAM: 256KB
ngl the c030_n211 and the c030_u201 are debug-twins (both External) while c030_r410m keeps her debug On-board. same MCU, different vibe check 💅

and the list just… keeps going, so stay tuned bestie, there's more board lore coming 🌟

  • board_ststm32_ublox_evk_odin_w2 — Debug: External · MCU: STM32F439ZIY6 · Frequency: 168MHz · Flash: 2MB · RAM: 256KB
  • board_ststm32_mtb_ublox_odin_w2 — Debug: External · MCU: STM32F439ZIY6 · Frequency: 168MHz · Flash: 2MB · RAM: 256KB

💖 ST STM8 💖

⚙️ Configuration ⚙️

projectconf_env_platform = ststm8

The STM8 is an 8-bit microcontroller family by STMicroelectronics, and it's literally an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller — like, budget baddie energy fr fr. 💅

For more detailed information please visit vendor site. 🫶


📋 Contents 📋

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

✨ Examples ✨

Examples are listed from ST STM8 development platform repository:

  • spl-blink
  • arduino-fade-all-pins
  • spl-uart
  • spl-flash
  • arduino-internal-lib
  • arduino-ping-hc04

🐛 Debugging 🐛

piodebug — "1-click" solution for debugging with a zero configuration. Iconic behaviour honestly. ✨

  • Tools & Debug Probes
    • On-Board Debug Tools

🔍 Tools & Debug Probes 🔍

Supported debugging tools are listed in the "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

👑 On-Board Debug Tools 👑

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe. No cap, they come prepped and ready. 💖

  • board_ststm8_stm8sdisco — MCU: STM8S105C6T6 · Frequency: 16MHz · Flash: 32KB · RAM: 2KB

🌈 Stable and upstream versions 🌈

You can switch between stable releases of ST STM8 development platform and the latest upstream version using projectconf_env_platform option in projectconf as described below.

⭐ Stable ⭐

; Latest stable version
[env:latest_stable]
platform = ststm8
board = ...

; Custom stable version
[env:custom_stable]
platform = ststm8@x.y.z
board = ...

🦋 Upstream 🦋

[env:upstream_develop]
platform = https://github.com/platformio/platform-ststm8.git
board = ...

📦 Packages 📦

  • framework-arduinoststm8 — Arduino Wiring-based Framework (STM8 Core)
  • framework-ststm8spl — STM8S/A Standard peripheral library
  • tool-openocd — OpenOCD
  • tool-stm8binutils — STM8 GNU binutils
  • tool-stm8tools — STM8 upload tools
  • toolchain-sdcc — Small Device C Compiler
WARNING: Linux Users: - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Please check that you have a correctly installed USB driver from board manufacturer

🧚 Frameworks 🧚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
  • framework_spl — The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers.

🎀 Boards 🎀

NOTE: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

🍓 ST 🍓

  • board_ststm8_stm8sdisco — Debug: On-board · MCU: STM8S105C6T6 · Frequency: 16MHz · Flash: 32KB · RAM: 2KB
  • board_ststm8_stm8sblue — Debug: No · MCU: STM8S103F3P6 · Frequency: 16MHz · Flash: 8KB · RAM: 1KB
  • board_ststm8_stm8sblack — Debug: No · MCU: STM8S105K4T6 · Frequency: 16MHz · Flash: 16KB · RAM: 2KB
  • board_ststm8_mb208 — debug: No · MCU: STM8S208MBT6 · frequency: 16MHz · flash: 128KB · RAM: 6KB
  • board_ststm8_s8uno — debug: No · MCU: STM8S105K6T6 · frequency: 16MHz · flash: 32KB · RAM: 2KB

🌈 Teensy 🌈

Configuration

projectconf_env_platform = teensy

okay so Teensy is a whole entire USB-based microcontroller development system — and bestie, it is TINY 🦋. Like, a very small footprint, but it can still implement so many types of projects, no cap. All the programming happens over the USB port. You do not need a special programmer — literally just a standard USB cable and a PC or Macintosh with a USB port. That's it. That's the whole setup. 💅

For more detailed information please visit vendor site.

📖 Contents

  • Configuration
  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

⚙️ Configuration

  • Optimization
  • USB Features

🔥 Optimization

(valid only for Teensy LC, Teensy 3.0-3.6)

So you can control firmware optimization via a special macro/define using projectconf_build_flags in projectconf:

  • -D TEENSY_OPT_FASTER, default
  • -D TEENSY_OPT_FASTER_LTO
  • -D TEENSY_OPT_FAST
  • -D TEENSY_OPT_FAST_LTO
  • -D TEENSY_OPT_FASTEST
  • -D TEENSY_OPT_FASTEST_LTO
  • -D TEENSY_OPT_FASTEST_PURE_CODE, valid only for Teensy 3.5-3.6
  • -D TEENSY_OPT_FASTEST_PURE_CODE_LTO, valid only for Teensy 3.5-3.6
  • -D TEENSY_OPT_DEBUG
  • -D TEENSY_OPT_DEBUG_LTO
  • -D TEENSY_OPT_SMALLEST_CODE
  • -D TEENSY_OPT_SMALLEST_CODE_LTO
⚠️ The only one macro can be used in per one build environment. Like, pick ONE, not the whole buffet, bestie 😭

Also, you can see verbose build using -v, --verbose option for cmd_run command.

Example:

Let's set optimization for the smallest code

[env:teensy_hid_device]
platform = teensy
framework = arduino
board = teensy36
build_flags = -D TEENSY_OPT_SMALLEST_CODE

🔌 USB Features

If you want to use Teensy USB Features, you need to add special macro/define using projectconf_build_flags:

  • -D USB_SERIAL
  • -D USB_KEYBOARDONLY
  • -D USB_TOUCHSCREEN
  • -D USB_HID_TOUCHSCREEN
  • -D USB_HID
  • -D USB_SERIAL_HID
  • -D USB_MIDI
  • -D USB_MIDI4
  • -D USB_MIDI16
  • -D USB_MIDI_SERIAL
  • -D USB_MIDI4_SERIAL
  • -D USB_MIDI16_SERIAL
  • -D USB_AUDIO
  • -D USB_MIDI_AUDIO_SERIAL
  • -D USB_MIDI16_AUDIO_SERIAL
  • -D USB_MTPDISK
  • -D USB_RAWHID
  • -D USB_FLIGHTSIM
  • -D USB_FLIGHTSIM_JOYSTICK
  • -D USB_EVERYTHING
  • -D USB_DISABLED

A default macro is set to -D USB_SERIAL if no one is specified. (So if you say nothing, you get serial. The default is lowkey doing the most for you 🫶)

Example:

[env:teensy_hid_device]
platform = teensy
framework = arduino
board = teensy20
build_flags = -D USB_RAWHID

See Teensy USB Examples.


🎀 Examples

Examples are listed from Teensy development platform repository:

  • mbed-blink
  • mbed-serial
  • mbed-events
  • arduino-blink
  • arduino-hid-usb-mouse
  • arduino-internal-libs
  • mbed-dsp

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. Iconic behaviour honestly ✨

  • Tools & Debug Probes
    • External Debug Tools

🛠️ Tools & Debug Probes

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. (yeah, it's a wide one, bestie — swipe sideways 💅)

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

🔎 External Debug Tools

Boards listed below are compatible with piodebug but DEPEND ON external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details.

  • board_teensy_teensy31 — MCU: MK20DX256 · frequency: 72MHz · flash: 256KB · RAM: 64KB
  • board_teensy_teensy35 — MCU: MK64FX512 · frequency: 120MHz · flash: 512KB · RAM: 255.99KB
  • board_teensy_teensy36 — MCU: MK66FX1M0 · frequency: 180MHz · flash: 1MB · RAM: 256KB
  • board_teensy_teensy40 — MCU: IMXRT1062 · frequency: 600MHz · flash: 1.94MB · RAM: 512KB
  • board_teensy_teensy41 — MCU: IMXRT1062 · frequency: 600MHz · flash: 7.75MB · RAM: 512KB
  • board_teensy_teensylc — MCU: MKL26Z64 · frequency: 48MHz · flash: 62KB · RAM: 8KB

🦋 Stable and upstream versions

You can switch between stable releases of Teensy development platform and the latest upstream version using projectconf_env_platform option in projectconf as described below.

💖 Stable

; Latest stable version
[env:latest_stable]
platform = teensy
board = ...

; Custom stable version
[env:custom_stable]
platform = teensy@x.y.z
board = ...

🌸 Upstream

[env:upstream_develop]
platform = https://github.com/platformio/platform-teensy.git
board = ...

📦 Packages

  • framework-arduinoteensy — Arduino Wiring-based Framework
  • framework-mbed — mbed Framework
  • tool-jlink — SEGGER J-Link Software and Documentation Pack
  • tool-teensy — Teensy Loader
  • toolchain-atmelavr — avr-gcc
  • toolchain-gccarmnoneeabi — gcc-arm-embedded
⚠️ WARNING: Linux Users: - Install "udev" rules faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users: Teensy programming uses only Windows built-in HID drivers. When Teensy is programmed to act as a USB Serial device, Windows XP, Vista, 7 and 8 require this serial driver is needed to access the COM port your program uses. No special driver installation is necessary on Windows 10.

Frameworks 🌈

Two frameworks live here, and they're both kinda iconic in their own way:

  • framework_arduino — bestie, this is the Arduino Wiring-based Framework 💖 it lets you write cross-platform software that controls devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving maker energy fr fr.
  • framework_mbed — the mbed framework 🧚 the mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. periodt.

Boards 🎀

NOTE: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer ✨ - For more detailed board information please scroll the tables below by horizontally. (yes really, scroll sideways bestie, the tables are wide 😭)

Teensy 💜

okay so here's the whole Teensy lineup, no cap:

  • board_teensy_teensy2 — Debug: No · MCU: ATMEGA32U4 · Frequency: 16MHz · Flash: 31.50KB · RAM: 2.50KB
  • board_teensy_teensy30 — Debug: No · MCU: MK20DX128 · Frequency: 48MHz · Flash: 128KB · RAM: 16KB
  • board_teensy_teensy31 — Debug: External · MCU: MK20DX256 · Frequency: 72MHz · Flash: 256KB · RAM: 64KB
  • board_teensy_teensy35 — Debug: External · MCU: MK64FX512 · Frequency: 120MHz · Flash: 512KB · RAM: 255.99KB
  • board_teensy_teensy36 — Debug: External · MCU: MK66FX1M0 · Frequency: 180MHz · Flash: 1MB · RAM: 256KB
  • board_teensy_teensy40 — Debug: External · MCU: IMXRT1062 · Frequency: 600MHz · Flash: 1.94MB · RAM: 512KB
  • board_teensy_teensy41 — Debug: External · MCU: IMXRT1062 · Frequency: 600MHz · Flash: 7.75MB · RAM: 512KB
  • board_teensy_teensylc — Debug: External · MCU: MKL26Z64 · Frequency: 48MHz · Flash: 62KB · RAM: 8KB
  • board_teensy_teensy2pp — Debug: No · MCU: AT90USB1286 · Frequency: 16MHz · Flash: 127KB · RAM: 8KB

slay. 💅


TI MSP430 🌸

Configuration ⭐

projectconf_env_platform = timsp430

MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications. lowkey obsessed with how power-efficient these lil guys are 🦋

For more detailed information please visit vendor site.


Contents 📚

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

Examples ✨

Examples are listed from TI MSP430 development platform repository:

  • arduino-blink
  • native-blink
  • arduino-internal-libs

Debugging 🔥

piodebug - "1-click" solution for debugging with a zero configuration.

  • Tools & Debug Probes
    • On-Board Debug Tools

Tools & Debug Probes 💖

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions. (yes this one's on you bestie, no skipping 😭)

🦋 On-Board Debug Tools 🦋

okay bestie, listen up — the boards in this list have an on-board debug probe and they are ARE READY for debugging! 💅 That means you do NOT need to use or buy an external debug probe. not now, not ever, not even a little. you're literally set. 🫶

  • board_timsp430_lpmsp430fr5739 — MCU MSP430FR5739, 16MHz, 15.37KB flash, 1KB RAM
  • board_timsp430_lpmsp430f5529 — MCU MSP430F5529, 25MHz, 47KB flash, 8KB RAM
  • board_timsp430_lpmsp430fr2311 — MCU MSP430FR2311, 16MHz, 3.75KB flash, 1KB RAM
  • board_timsp430_lpmsp430fr2433 — MCU MSP430FR2433, 8MHz, 15KB flash, 4KB RAM
  • board_timsp430_lpmsp430fr4133 — MCU MSP430FR4133, 8MHz, 15KB flash, 2KB RAM
  • board_timsp430_lpmsp430fr5969 — MCU MSP430FR5969, 8MHz, 47KB flash, 2KB RAM
  • board_timsp430_lpmsp430fr5994 — MCU MSP430FR5994, 16MHz, 256KB flash, 4KB RAM
  • board_timsp430_lpmsp430fr6989 — MCU MSP430FR6989, 8MHz, 47KB flash, 2KB RAM
  • board_timsp430_lpmsp430g2231 — MCU MSP430G2231, 1MHz, 2KB flash, 256B RAM
  • board_timsp430_lpmsp430g2452 — MCU MSP430G2452, 16MHz, 8KB flash, 256B RAM
  • board_timsp430_lpmsp430g2553 — MCU MSP430G2553, 16MHz, 16KB flash, 512B RAM

✨ Stable and upstream versions ✨

bestie you have options and honestly? iconic of you. you can switch between stable releases of the TI MSP430 development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. 👑

Stable — you got two flavors here, and both are serving:

; Latest stable version
[env:latest_stable]
platform = timsp430
board = ...

; Custom stable version
[env:custom_stable]
platform = timsp430@x.y.z
board = ...

Upstream — for the girlies who like living on the edge 🦋:

[env:upstream_develop]
platform = https://github.com/platformio/platform-timsp430.git
board = ...

🎀 Packages 🎀

the lil toolkit that makes it all work, no cap:

  • framework-energiamsp430 — Energia Wiring-based Framework (MSP430 Core)
  • tool-dslite — Uniflash Standalone Flash Tool for TI Microcontrollers, Sitara Processors & SimpleLink devices
  • tool-mspdebug — MSPDebug
  • toolchain-timsp430 — msp-gcc

⚠️ WARNING: read this part, i'm so serious 😭

Linux Users:

  • Install "udev" rules → faq_udev_rules 💖
  • Raspberry Pi users, please read this article Enable serial port on Raspberry Pi.

Windows Users:

  • Please check that you have a correctly installed USB driver from board manufacturer 🔌

🌸 Frameworks 🌸

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. like… it's giving main character energy for your hardware fr fr ✨

💅 Boards 💅

NOTE: 💛
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer 👑
💡 FYI bestie: for more detailed board information please scroll the tables below by horizontally. (Yes the original literally says "by horizontally". We respect the source. 🫶)

🧡 TI — the MSP430 lineup, aka the little low-power icons

Okay so these are the TI boards, and every single one of them has On-board debug — no external probe needed, she comes ready to slay. Here's the full roster, no skips, no skimming, all the specs fr fr:

  • board_timsp430_lpmsp430fr5739 — Debug: On-board · MCU: MSP430FR5739 · Frequency: 16MHz · Flash: 15.37KB · RAM: 1KB
  • board_timsp430_lpmsp430f5529 — Debug: On-board · MCU: MSP430F5529 · Frequency: 25MHz · Flash: 47KB · RAM: 8KB
  • board_timsp430_lpmsp430fr2311 — Debug: On-board · MCU: MSP430FR2311 · Frequency: 16MHz · Flash: 3.75KB · RAM: 1KB
  • board_timsp430_lpmsp430fr2433 — Debug: On-board · MCU: MSP430FR2433 · Frequency: 8MHz · Flash: 15KB · RAM: 4KB
  • board_timsp430_lpmsp430fr4133 — Debug: On-board · MCU: MSP430FR4133 · Frequency: 8MHz · Flash: 15KB · RAM: 2KB
  • board_timsp430_lpmsp430fr5969 — Debug: On-board · MCU: MSP430FR5969 · Frequency: 8MHz · Flash: 47KB · RAM: 2KB
  • board_timsp430_lpmsp430fr5994 — Debug: On-board · MCU: MSP430FR5994 · Frequency: 16MHz · Flash: 256KB · RAM: 4KB
  • board_timsp430_lpmsp430fr6989 — Debug: On-board · MCU: MSP430FR6989 · Frequency: 8MHz · Flash: 47KB · RAM: 2KB
  • board_timsp430_lpmsp430g2231 — Debug: On-board · MCU: MSP430G2231 · Frequency: 1MHz · Flash: 2KB · RAM: 256B
  • board_timsp430_lpmsp430g2452 — Debug: On-board · MCU: MSP430G2452 · Frequency: 16MHz · Flash: 8KB · RAM: 256B
  • board_timsp430_lpmsp430g2553 — Debug: On-board · MCU: MSP430G2553 · Frequency: 16MHz · Flash: 16KB · RAM: 512B

Lowkey obsessed with how the lpmsp430fr5994 is out here flexing 256KB flash while the lpmsp430g2231 is giving 2KB and 256B of RAM like... humble. Both valid. Both iconic. 👑

And yes — every single board in this list rocks On-board debug, so no cap, you can just plug in and go. ✨

✨ TI TIVA ✨

  • Configuration — projectconf_env_platform = titiva
  • The vibe — Texas Instruments TM4C12x MCUs are serving the industry's most popular ARM Cortex-M4 core, with scalable memory and package options, unparalleled connectivity peripherals, advanced application functions, industry-leading analog integration, and extensive software solutions. Like, the whole buffet. 💅

For more detailed information, please visit vendor site. 🫶


🎀 Contents 🎀

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🦋 Examples 🦋

Bestie, the examples are listed straight from the TI TIVA development platform repository, no cap:

  • libopencm3-blink
  • arduino-blink
  • native-blink
  • arduino-internal-libs

🔥 Debugging 🔥

pio debug is the "1-click" solution for debugging with a zero configuration. Literally just click. That's the whole thing. 👑

💜 Tools & Debug Probes 💜

Supported debugging tools are listed in the "Debug" column. For more detailed information, please scroll the table horizontally (yes, sideways, she's wide 😭). You can switch between debugging tools using the projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions. Do not skip this, I am begging. 🙈

🌸 On-Board Debug Tools 🌸

Boards listed below have an on-board debug probe and ARE READY for debugging! You do not need to use or buy an external debug probe. She comes with everything already. Periodt. ✨

  • board_titiva_lplm4f120h5qr — MCU LPLM4F120H5QR, Frequency 80MHz, Flash 256KB, RAM 32KB
  • board_titiva_lptm4c1230c3pm — MCU LPTM4C1230C3PM, Frequency 80MHz, Flash 256KB, RAM 32KB
  • board_titiva_lptm4c1294ncpdt — MCU LPTM4C1294NCPDT, Frequency 120MHz, Flash 1MB, RAM 256KB

🧚 Stable and upstream versions 🧚

You can switch between stable releases of the TI TIVA development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. Pick your fighter. 💖

⭐ Stable ⭐

; Latest stable version
[env:latest_stable]
platform = titiva
board = ...

; Custom stable version
[env:custom_stable]
platform = titiva@x.y.z
board = ...

🌈 Upstream 🌈

[env:upstream_develop]
platform = https://github.com/platformio/platform-titiva.git
board = ...

🍓 Packages 🍓

  • framework-energiativa — Energia Wiring-based Framework (LM4F Core)
  • framework-libopencm3 — libOpenCM3 Framework
  • tool-openocd — OpenOCD
  • toolchain-gccarmnoneeabi — gcc-arm-embedded
WARNING: Linux Users: - Install "udev" rules — faq_udev_rules - Raspberry Pi users, please read this article Enable serial port on Raspberry Pi. Windows Users:
  • 💡 Please check that you have a correctly installed USB driver from board manufacturer

✨ Frameworks ✨

Okay bestie, this is the part where PlatformIO shows you which frameworks it can build your stuff on top of. Two of them in this chunk, and they are so different in vibe:

  • framework_arduino — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. (yes that is literally the official description and honestly? it ate. interactive objects?? physical experiences?? main character energy fr fr 🎀)
  • framework_libopencm3 — the libOpenCM3 framework. Its whole goal is to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. free/libre/open-source? we love to see it 💜

🌸 Boards 🌸

NOTE: 📌
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally. (yes, horizontally — the tables are wide, bestie, just drag that scrollbar like it owes you money 🦋)

🌈 TI 🌈

So this is the Texas Instruments board lineup in this chunk. Heads up, these tables have columns for Name, Debug, MCU, Frequency, Flash and RAM — here's each board with all its specs, no details skipped:

  • board_titiva_lplm4f120h5qr — Debug: On-board · MCU: LPLM4F120H5QR · Frequency: 80MHz · Flash: 256KB · RAM: 32KB
  • board_titiva_lptm4c1230c3pm — Debug: On-board · MCU: LPTM4C1230C3PM · Frequency: 80MHz · Flash: 256KB · RAM: 32KB
  • board_titiva_lptm4c1294ncpdt — Debug: On-board · MCU: LPTM4C1294NCPDT · Frequency: 120MHz · Flash: 1MB · RAM: 256KB
👑 Not the last one being the overachiever with 120MHz and a whole 1MB of flash. She's giving main character energy, the other two are giving supporting cast. No cap. 🔥

💖 WIZNet W7500

  • WIZNet W7500 — Configuration: projectconf_env_platform = wiznet7500

okay so bestie, meet the WIZNet W7500 🫶 the IOP (Internet Offload Processor) W7500 is the one-chip solution that integrates an ARM Cortex-M0, 128KB Flash and a hardwired TCP/IP core, and it's built for all kinds of embedded application platforms — especially the ones that need the Internet of things. it's giving tiny-but-connected ✨

want the full lore? for more detailed information please visit the vendor site 👑


🌸 Contents

  • Examples
  • Debugging
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🌈 Examples

Examples are listed from the WIZNet W7500 development platform repository:

  • mbed-blink
  • mbed-serial
  • mbed-rtos
  • mbed-events
  • mbed-dsp

🎀 Debugging

pio debug — the "1-click" solution for debugging with a zero configuration. no cap, that's the whole vibe 💅

  • Tools & Debug Probes
    • On-Board Debug Tools

✨ Tools & Debug Probes

Supported debugging tools are listed in the "Debug" column. For more detailed information, please scroll the table by horizontal. You can switch between debugging tools using the projectconf_debug_tool option in projectconf. lowkey the easiest glow-up ever 🔥

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions.

🦋 On-Board Debug Tools

Boards listed below have an on-board debug probe and ARE READY for debugging! You do not need to use/buy an external debug probe. periodt 💖

  • board_wiznet7500_wizwiki_w7500 — MCU: WIZNET7500, Frequency: 48MHz, Flash: 128KB, RAM: 48KB
  • board_wiznet7500_wizwiki_w7500eco — MCU: WIZNET7500ECO, Frequency: 48MHz, Flash: 128KB, RAM: 48KB
  • board_wiznet7500_wizwiki_w7500p — MCU: WIZNET7500P, Frequency: 48MHz, Flash: 128KB, RAM: 48KB

👑 Stable and upstream versions

You can switch between stable releases of the WIZNet W7500 development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. pick your fighter 🧚

💜 Stable

; Latest stable version
[env:latest_stable]
platform = wiznet7500
board = ...

; Custom stable version
[env:custom_stable]
platform = wiznet7500@x.y.z
board = ...

⭐ Upstream

[env:upstream_develop]
platform = https://github.com/platformio/platform-wiznet7500.git
board = ...

🍓 Packages

  • framework-mbed — mbed Framework
  • tool-jlink — SEGGER J-Link Software and Documentation Pack
  • tool-pyocd — Open source python library for programming and

…and it's all about debugging ARM Cortex-M microcontrollers using CMSIS-DAP bestie, like that's literally what this row is doing here 💅

  • toolchain-gccarmnoneeabi → pairs up with gcc-arm-embedded, they're giving iconic duo energy ✨

🚨 WARNING 🚨

okay bestie this part is IMPORTANT, do not scroll past it, I'm so serious 😭

Linux Users:

  • Install udev rules — there's a whole page for it, it's faq_udev_rules 📝
  • Raspberry Pi girlies, please go read this article: Enable serial port on Raspberry Pi 🍓

Windows Users:

  • Please check that you have a correctly installed USB driver from the board manufacturer 🫶 (yes this is the classic "why is nothing showing up" moment, no cap)

🌸 Frameworks 🌸

Here's the framework table, and it's literally just one entry but she's a main character 👑

framework_mbed

The mbed framework 💜 — and here's the whole vibe, straight up:

The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

Like… she said "I contain multitudes" and meant it 💅✨


👑 Boards 👑

NOTE: - You can list pre-configured boards by running the platformio boards command, or by checking out the PlatformIO Boards Explorer 🌈 - For more detailed board information please scroll the tables below horizontally (yes fr fr, they're wide, swipe side to side bestie) 👉

🦋 WIZNet 🦋

The columns are: Name, Debug, MCU, Frequency, Flash, RAM — and here's every single row, no skipping, periodt:

  • board_wiznet7500_wizwiki_w7500 — Debug: On-board · MCU: WIZNET7500 · Frequency: 48MHz · Flash: 128KB · RAM: 48KB
  • board_wiznet7500_wizwiki_w7500eco — Debug: On-board · MCU: WIZNET7500ECO · Frequency: 48MHz · Flash: 128KB · RAM: 48KB
  • board_wiznet7500_wizwiki_w7500p — Debug: On-board · MCU: WIZNET7500P · Frequency: 48MHz · Flash: 128KB · RAM: 48KB

three siblings, same specs, different MCU name, it's giving triplets with matching outfits 🎀✨

...and that's the bottom edge of that table bestie 💅 thank u, next.


🖥️ Desktop Native 🖥️

⚙️ Configuration

projectconf_env_platform = native

📖 the vibe

So the Native development platform is literally built to be used for desktop OS, periodt. It rolls with built-in toolchains (preferable based on GCC), frameworks, and libs taken straight from whatever OS it's running on. No extra baggage, just the OS's own stuff. ✨🖥️

Want the deep lore? For more detailed information please visit vendor site. 🫶

📦 Contents

  • Examples
  • Stable and upstream versions

🌸 Examples

Examples are listed from Native development platform repository:

  • hello-world

🔀 Stable and upstream versions

You can switch between stable releases of Native development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. 👑

Stable 🌈

; Latest stable version
[env:latest_stable]
platform = native
board = ...

; Custom stable version
[env:custom_stable]
platform = native@x.y.z
board = ...

Upstream 🦋

[env:upstream_develop]
platform = https://github.com/platformio/platform-native.git
board = ...

🐧 Linux ARM 🐧

⚙️ Configuration

projectconf_env_platform = linux_arm

📖 the vibe

Linux ARM is a Unix-like and mostly POSIX-compliant computer operating system (OS), assembled under the model of free and open-source software development and distribution. The way that it works: using your host OS (Mac OS X, Linux ARM) you can build native applications for the Linux ARM platform. Iconic fr. 💜🐧

For more detailed information please visit vendor site. 🫶

📦 Contents

  • Examples
  • Stable and upstream versions
  • Packages
  • Frameworks
  • Boards

🌸 Examples

Examples are listed from Linux ARM development platform repository:

  • wiringpi-serial
  • wiringpi-blink

🔀 Stable and upstream versions

You can switch between stable releases of Linux ARM development platform and the latest upstream version using the projectconf_env_platform option in projectconf, as described below. 👑

Stable 🌈

; Latest stable version
[env:latest_stable]
platform = linux_arm
board = ...

; Custom stable version
[env:custom_stable]
platform = linux_arm@x.y.z
board = ...

Upstream 🦋

[env:upstream_develop]
platform = https://github.com/platformio/platform-linux_arm.git
board = ...

📦 Packages

  • framework-wiringpi — GPIO Interface library for the Raspberry Pi
  • toolchain-gccarmlinuxgnueabi — GCC for Linux ARM GNU EABI

🧩 Frameworks

  • framework_wiringpi — WiringPi is a GPIO access library written in C for the BCM2835 used in the Raspberry Pi. It's designed to be familiar to people who have used the Arduino "wiring" system.

🔌 Boards

NOTE: 👀
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally.

<span>the tables are coming bestie, brace urself 🎀</span>

  • board_ststm32_remram_v1 — platform platform_ststm32, MCU STM32F765VIT6, 216MHz, flash 2MB, RAM 512KB
  • board_ststm32_st3dp001_eval — platform platform_ststm32, MCU STM32F401VGT6, 84MHz, flash 512KB, RAM 96KB
  • board_atmelavr_ATmega128 — platform platform_atmelavr, MCU ATMEGA128, 16MHz, flash 127KB, RAM 4KB
  • board_atmelavr_ATmega1280 — platform platform_atmelavr, MCU ATMEGA1280, 16MHz, flash 127KB, RAM 8KB

bestie the VIBE of this table is immaculate 💅 look at the columns: Name, Platform, MCU, Frequency, Flash, RAM. That's the whole squad right there. ✨

And yeah — the rest of the table keeps going, so keep scrolling, we're not done yet 🫶

  • board_atmelavr_ATmega1281 — platform platform_atmelavr, chip ATMEGA1281, 16MHz, 127KB flash, 8KB RAM 💖
  • board_atmelavr_ATmega1284 — platform platform_atmelavr, chip ATMEGA1284, 16MHz, 127KB flash, 16KB RAM
  • board_atmelavr_ATmega1284P — platform platform_atmelavr, chip ATMEGA1284P, 16MHz, 127KB flash, 16KB RAM
  • board_atmelavr_ATmega16 — platform platform_atmelavr, chip ATMEGA16, 16MHz, 15.50KB flash, 1KB RAM
  • board_atmelavr_ATmega164P — platform platform_atmelavr, chip ATMEGA164P, 16MHz, 15.50KB flash, 1KB RAM
  • board_atmelavr_ATmega168 — platform platform_atmelavr, chip ATMEGA168, 16MHz, 15.50KB flash, 1KB RAM
  • board_atmelavr_ATmega168P — platform platform_atmelavr, chip ATMEGA168P, 16MHz, 15.50KB flash, 1KB RAM
  • board_atmelavr_ATmega2560 — platform platform_atmelavr, chip ATMEGA2560, 16MHz, 255KB flash, 8KB RAM 👑
  • board_atmelavr_ATmega324A — platform platform_atmelavr, chip ATMEGA324A, 16MHz, 31.50KB flash, 2KB RAM
  • board_atmelavr_ATmega324P — platform platform_atmelavr, chip ATMEGA324P, 16MHz, 31.50KB flash, 2KB RAM
  • board_atmelavr_ATmega324PA — platform platform_atmelavr, chip ATMEGA324PA, 16MHz, 31.50KB flash, 2KB RAM
  • board_atmelavr_ATmega328 — platform platform_atmelavr, chip ATMEGA328, 16MHz, 31.50KB flash, 2KB RAM
  • board_atmelavr_ATmega328P — platform platform_atmelavr, chip ATMEGA328P, 16MHz, 31.50KB flash, 2KB RAM 🌟
  • board_atmelavr_ATmega48 — platform platform_atmelavr, chip ATMEGA48, 16MHz, 4KB flash, 512B RAM
  • board_atmelavr_ATmega644P — platform platform_atmelavr, chip ATMEGA644P, 16MHz, 63KB flash, 4KB RAM
  • board_atmelavr_ATmega8 — platform platform_atmelavr, chip ATMEGA8, 16MHz, 7.50KB flash, 1KB RAM
  • board_atmelavr_ATmega88 — platform platform_atmelavr, chip ATMEGA88, 16MHz, 7.50KB flash, 1KB RAM
  • board_atmelavr_ATmega88P — platform platform_atmelavr, chip ATMEGA88P, 16MHz, 7.50KB flash, 1KB RAM
  • board_atmelavr_ATmega48P — platform platform_atmelavr, chip ATMEGA48P, 16MHz, 4KB flash, 512B RAM

okay so now we're getting into the cute lil dev-board era bestie, and I am obsessed 😭✨ these ones drop down to 8MHz and that is not a downgrade, that is a whole vibe — lower clock, more chill, still slaying

  • board_atmelavr_bluefruitmicro — platform platform_atmelavr, chip ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM 🦋
  • board_atmelavr_circuitplay_classic — platform platform_atmelavr, chip ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM 🌈
  • board_atmelavr_feather328p — platform platform_atmelavr, chip ATMEGA328P, 8MHz, 31.50KB flash, 2KB RAM 🪶
  • board_atmelavr_feather32u4 — platform platform_atmelavr, chip ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM 🪶
  • board_atmelavr_flora8 — platform platform_atmelavr, chip ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM 🌸
ngl the way these 32U4 boards all share that exact 8MHz / 28KB / 2.50KB energy? it's giving squad goals fr fr 💅

  • board_atmelavr_gemma — platform platform_atmelavr, MCU ATTINY85, clock 8MHz, flash 8KB, RAM 512B 💖 so smol bestie, it's giving tiny main character energy.
  • board_atmelavr_itsybitsy32u4_3V — platform platform_atmelavr, MCU ATMEGA32U4, clock 8MHz, flash 28KB, RAM 2.50KB ✨ 3V version, slay.
  • board_atmelavr_itsybitsy32u4_5V — platform platform_atmelavr, MCU ATMEGA32U4, clock 16MHz, flash 28KB, RAM 2.50KB 🦋 5V version, highkey iconic.
  • board_atmelavr_metro — platform platform_atmelavr, MCU ATMEGA328P, clock 16MHz, flash 31.50KB, RAM 2KB 🌸 the way this one has 31.50KB flash, not me obsessing.
  • board_atmelavr_protrinket3ftdi — platform platform_atmelavr, MCU ATMEGA328P, clock 12MHz, flash 28KB, RAM 2KB 🎀 12MHz? lowkey quirky, fr fr.
  • board_atmelavr_protrinket3 — platform platform_atmelavr, MCU ATMEGA328P, clock 12MHz, flash 28KB, RAM 2KB 💅 twin of the ftdi one, periodt.
  • board_atmelavr_protrinket5ftdi — platform platform_atmelavr, MCU ATMEGA328P, clock 16MHz, flash 28KB, RAM 2KB 🫶 16MHz, now we're talking.
  • board_atmelavr_protrinket5 — platform platform_atmelavr, MCU ATMEGA328P, clock 16MHz, flash 28KB, RAM 2KB 😭 same vibe, no ftdi.
  • board_atmelavr_trinket3 — platform platform_atmelavr, MCU ATTINY85, clock 8MHz, flash 8KB, RAM 512B 🔥 tiny but fierce.
  • board_atmelavr_trinket5 — platform platform_atmelavr, MCU ATTINY85, clock 16MHz, flash 8KB, RAM 512B 👑 16MHz on an ATTINY85? ate.
  • board_atmelavr_alorium_hinj — platform platform_atmelavr, MCU ATMEGA328P, clock 16MHz, flash 31.50KB, RAM 2KB 🌈 alorium crew, iykyk.
  • board_atmelavr_alorium_sno — platform platform_atmelavr, MCU ATMEGA328P, clock 16MHz, flash 31.50KB, RAM 2KB ⭐ sno as in snow? cute.
  • board_atmelavr_alorium_xlr8 — platform platform_atmelavr, MCU ATMEGA328P, clock 16MHz, flash 31.50KB, RAM 2KB 💀 xlr8 like accelerate, slay.
  • board_atmelavr_miniwireless — platform platform_atmelavr, MCU ATMEGA328P, clock 16MHz, flash 31.50KB, RAM 2KB 🙈 mini wireless, the name says it all.
  • board_atmelavr_arduboy — platform platform_atmelavr, MCU ATMEGA32U4, clock 16MHz, flash 28KB, RAM 2.50KB 🍓 arduboy gaming vibes, obsessed.
  • board_atmelavr_arduboy_devkit — platform platform_atmelavr, MCU ATMEGA32U4, clock 16MHz, flash 28KB, RAM 2.50KB 🧚 devkit version, for the girlies who prototype.
  • board_atmelavr_btatmega168 — platform platform_atmelavr, MCU ATMEGA168, clock 16MHz, flash 14KB, RAM 1KB 💜 168 with 14KB flash, retro moment.
  • board_atmelavr_btatmega328 — platform platform_atmelavr, MCU ATMEGA328P, clock 16MHz, flash 28KB, RAM 2KB ✨ bt but with 328P, upgrade era.
  • board_atmelavr_diecimilaatmega168 — platform platform_atmelavr, MCU ATMEGA168, clock 16MHz, flash 14KB, RAM 1KB 💖 diecimila atmega168, a classic.
  • board_atmelavr_diecimilaatmega328 — platform platform_atmelavr, MCU ATMEGA328P, clock 16MHz, flash 30KB, RAM 2KB 🦋 30KB flash, not 31.50, still cute.
  • board_atmelavr_esplora — platform platform_atmelavr, MCU ATMEGA32U4, clock 16MHz, flash 28KB, RAM 2.50KB 🌸 esplora is giving explorer energy.
  • board_atmelavr_ethernet — platform platform_atmelavr, MCU ATMEGA328P, clock 16MHz, flash 31.50KB, RAM 2KB 🎀 ethernet board, plugged in and ready.
  • board_atmelavr_fio — platform platform_atmelavr, MCU ATMEGA328P, clock 8MHz, flash 30KB, RAM 2KB 💅 fio with 8MHz, lowkey chill.
  • board_atmelavr_chiwawa — platform platform_atmelavr, MCU ATMEGA32U4, clock 16MHz, flash 28KB, RAM 2.50KB 🫶 chiwawa like chihuahua, tiny and loud, periodt.

okay bestie the board list keeps going and honestly? it's giving ✨*catalog of every microcontroller under the sun*✨. same columns as before — platform, chip, clock speed, flash, RAM — so let's speedrun these 💅

  • board_atmelavr_leonardo — platform platform_atmelavr, chip ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🦋
  • board_atmelavr_leonardoeth — platform platform_atmelavr, chip ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🔥
  • board_atmelavr_lilypadatmega168 — platform platform_atmelavr, chip ATMEGA168, 8MHz, flash 14KB, RAM 1KB 🌸
  • board_atmelavr_lilypadatmega328 — platform platform_atmelavr, chip ATMEGA328P, 8MHz, flash 30KB, RAM 2KB 🎀
  • board_atmelavr_LilyPadUSB — platform platform_atmelavr, chip ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB (yes the capital letters are load-bearing, don't touch them) 💖
  • board_atmelsam_mzeropro — platform platform_atmelsam, chip SAMD21G18A, 48MHz, flash 256KB, RAM 32KB — not me clocking the ARM board in a sea of AVRs 👑
  • board_atmelavr_megaADK — platform platform_atmelavr, chip ATMEGA2560, 16MHz, flash 248KB, RAM 8KB 🧚
  • board_atmelavr_megaatmega1280 — platform platform_atmelavr, chip ATMEGA1280, 16MHz, flash 124KB, RAM 8KB 🌈
  • board_atmelavr_megaatmega2560 — platform platform_atmelavr, chip ATMEGA2560, 16MHz, flash 248KB, RAM 8KB ⭐
  • board_atmelavr_micro — platform platform_atmelavr, chip ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 💜
  • board_atmelavr_miniatmega168 — platform platform_atmelavr, chip ATMEGA168, 16MHz, flash 14KB, RAM 1KB 🍓
  • board_atmelavr_miniatmega328 — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 28KB, RAM 2KB 🦋
  • board_atmelavr_atmegangatmega168 — platform platform_atmelavr, chip ATMEGA168, 16MHz, flash 14KB, RAM 1KB 🔥
  • board_atmelavr_atmegangatmega8 — platform platform_atmelavr, chip ATMEGA8, 16MHz, flash 7KB, RAM 1KB 🌸
  • board_atmelavr_nanoatmega168 — platform platform_atmelavr, chip ATMEGA168, 16MHz, flash 14KB, RAM 1KB 🎀
  • board_atmelavr_nanoatmega328 — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 30KB, RAM 2KB 💖
  • board_atmelavr_nanoatmega328new — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 30KB, RAM 2KB — it's the same specs as the one above but with new in the name, main character energy honestly ✨
  • board_atmelavr_pro8MHzatmega168 — platform platform_atmelavr, chip ATMEGA168, 8MHz, flash 14KB, RAM 1KB 🧚
  • board_atmelavr_pro16MHzatmega168 — platform platform_atmelavr, chip ATMEGA168, 16MHz, flash 14KB, RAM 1KB 🌈
  • board_atmelavr_pro8MHzatmega328 — platform platform_atmelavr, chip ATMEGA328P, 8MHz, flash 30KB, RAM 2KB ⭐
  • board_atmelavr_pro16MHzatmega328 — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 30KB, RAM 2KB 💜
  • board_atmelavr_robotControl — platform platform_atmelavr, chip ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🍓
  • board_atmelavr_robotMotor — platform platform_atmelavr, chip ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🦋
  • board_atmelavr_uno — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB 👑
bestie notice how board_atmelavr_uno is the only one in this whole batch with 31.50KB of flash and not 30KB? not me zooming in on the decimals 💀 keep them exactly as written, no rounding, no "fixing" — the numbers are sacred fr fr 💅

and the list just keeps going, so don't go anywhere 🫶

  • board_atmelavr_yun — platform_atmelavr ✨ MCU ATMEGA32U4, clocking 16MHz, with 28KB of flash and 2.50KB of RAM 💖
  • board_atmelavr_yunmini — platform_atmelavr ✨ MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🎀
  • board_atmelsam_zero — platform_atmelsam ✨ MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB 🦋
  • board_atmelsam_samd21g18a — platform_atmelsam ✨ MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB 🌸
  • board_nordicnrf51_bbcmicrobit — platform_nordicnrf51 ✨ MCU NRF51822, 16MHz, flash 256KB, RAM 16KB 💅
  • board_atmelavr_zumbt328 — platform_atmelavr ✨ MCU ATMEGA328P, 16MHz, flash 28KB, RAM 2KB 🫶
  • board_atmelavr_raspduino — platform_atmelavr ✨ MCU ATMEGA328P, 16MHz, flash 30KB, RAM 2KB 😭 (okay 30KB she's thriving)
  • board_nordicnrf51_calliope_mini — platform_nordicnrf51 ✨ MCU NRF51822, 16MHz, flash 256KB, RAM 16KB 🔥
  • board_atmelavr_controllino_maxi — platform_atmelavr ✨ MCU ATMEGA2560, 16MHz, flash 248KB, RAM 8KB 👑
  • board_atmelavr_controllino_maxi_automation — platform_atmelavr ✨ MCU ATMEGA2560, 16MHz, flash 248KB, RAM 8KB 🌈
  • board_atmelavr_controllino_mega — platform_atmelavr ✨ MCU ATMEGA2560, 16MHz, flash 248KB, RAM 8KB ⭐
  • board_atmelavr_controllino_mini — platform_atmelavr ✨ MCU ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB 💀 (31.50 bestie, they really said precision)
  • board_nordicnrf52_delta_dfbm_nq620 — platform_nordicnrf52 ✨ MCU NRF52832, 64MHz, flash 512KB, RAM 64KB 💜
  • board_atmelavr_digispark-tiny — platform_atmelavr ✨ MCU ATTINY85, 16MHz, flash 5.87KB, RAM 512B 🙈 (tiny tiny tiny)
  • board_atmelavr_engduinov3 — platform_atmelavr ✨ MCU ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB 🍓
  • board_atmelavr_mayfly — platform_atmelavr ✨ MCU ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB 🧚
  • board_espressif32_esp-wrover-kit — platform_espressif32 ✨ MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🔥 (240MHz?? main character energy fr fr)
  • board_atmelavr_fysetc_f6_13 — platform_atmelavr ✨ MCU ATMEGA2560, 16MHz, flash 252KB, RAM 8KB 🎀
  • board_atmelavr_attiny13 — platform_atmelavr ✨ MCU ATTINY13, 1MHz, flash 1KB, RAM 64B 😭 (64 BYTES. the restraint. the minimalism.)
  • board_atmelavr_attiny13a — platform_atmelavr ✨ MCU ATTINY13A, 1MHz, flash 1KB, RAM 64B 💖
  • board_atmelavr_attiny2313 — platform_atmelavr ✨ MCU ATTINY2313, 8MHz, flash 2KB, RAM 128B ✨
  • board_atmelavr_attiny24 — platform_atmelavr ✨ MCU ATTINY24, 8MHz, flash 2KB, RAM 128B 🦋
  • board_atmelavr_attiny25 — platform_atmelavr ✨ MCU ATTINY25, 8MHz, flash 2KB, RAM 128B 🌸
  • board_atmelavr_attiny4313 — platform_atmelavr ✨ MCU ATTINY4313, 8MHz, flash 4KB, RAM 256B 💅
  • board_atmelavr_attiny44 — platform platform_atmelavr, chip ATTINY44, 8MHz, flash 4KB, RAM 256B 🦋
  • board_atmelavr_attiny45 — platform platform_atmelavr, chip ATTINY45, 8MHz, flash 4KB, RAM 256B 🦋
  • board_atmelavr_attiny84 — platform platform_atmelavr, chip ATTINY84, 8MHz, flash 8KB, RAM 512B 🦋
  • board_atmelavr_attiny85 — platform platform_atmelavr, chip ATTINY85, 8MHz, flash 8KB, RAM 512B 🦋
  • board_nordicnrf52_adafruit_itsybitsy_nrf52840 — platform platform_nordicnrf52, chip NRF52840, 64MHz, flash 796KB, RAM 243KB 🔥
  • board_atmelavr_lightblue-bean — platform platform_atmelavr, chip ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB 💙
  • board_atmelavr_lightblue-beanplus — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB 💙
  • board_atmelavr_lightup — platform platform_atmelavr, chip ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB ✨
  • board_atmelavr_one — platform platform_atmelavr, chip ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB ✨
  • board_atmelavr_smart7688 — platform platform_atmelavr, chip ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB ✨
  • board_atmelavr_lora32u4II — platform platform_atmelavr, chip ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB 📡
  • board_atmelavr_mightyhat — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 31KB, RAM 2KB 🎩
  • board_atmelavr_moteino — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB 🍓
  • board_atmelavr_moteino8mhz — platform platform_atmelavr, chip ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB 🍓
  • board_atmelavr_moteinomega — platform platform_atmelavr, chip ATMEGA1284P, 16MHz, flash 127KB, RAM 16KB 👑
  • board_atmelavr_168pa16m — platform platform_atmelavr, chip ATMEGA168P, 16MHz, flash 15.50KB, RAM 1KB 🌸
  • board_atmelavr_168pa8m — platform platform_atmelavr, chip ATMEGA168P, 8MHz, flash 15.50KB, RAM 1KB 🌸
  • board_atmelavr_328p16m — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB 💜
  • board_atmelavr_328p8m — platform platform_atmelavr, chip ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB 💜
  • board_atmelavr_32u416m — platform platform_atmelavr, chip ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🌈
  • board_atmelavr_1284p16m — platform platform_atmelavr, chip ATMEGA1284P, 16MHz, flash 127KB, RAM 16KB 👑
  • board_atmelavr_1284p8m — platform platform_atmelavr, chip ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB 👑
  • board_atmelavr_644pa16m — platform platform_atmelavr, chip ATMEGA644P, 16MHz, flash 63KB, RAM 4KB 🎀
  • board_atmelavr_644pa8m — platform platform_atmelavr, chip ATMEGA644P, 8MHz, flash 63KB, RAM 4KB 🎀
  • board_ststm32_mxchip_az3166 — platform_ststm32, MCU STM32F412ZGT6, 100MHz, flash 1MB, RAM 256KB 🦋
  • board_nordicnrf51_nrf51_beacon — platform_nordicnrf51, MCU NRF51822, 32MHz, flash 256KB, RAM 32KB
  • board_nordicnrf51_nrf51_dongle — platform_nordicnrf51, MCU NRF51822, 32MHz, flash 256KB, RAM 32KB
  • board_nordicnrf51_nrf51_dk — platform_nordicnrf51, MCU NRF51822, 32MHz, flash 256KB, RAM 32KB
  • board_nordicnrf52_nrf52_dk — platform_nordicnrf52, MCU NRF52832, 64MHz, flash 512KB, RAM 64KB
  • board_nordicnrf52_nrf52840_dk — platform_nordicnrf52, MCU NRF52840, 64MHz, flash 1MB, RAM 256KB 👑

okay bestie, we have officially entered the Nordic / Adafruit / AVR extended universe and it is a lot of boards, but every single one of them is here, no skips, no cap 💅

  • board_nordicnrf52_nrf52840_dk_adafruit — platform_nordicnrf52, MCU NRF52840, 64MHz, flash 796KB, RAM 243KB
  • board_atmelavr_emonpi — platform_atmelavr, MCU ATMEGA328P, 16MHz, flash 30KB, RAM 2KB
  • board_atmelavr_prusa_mm_control — platform_atmelavr, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB
  • board_ststm32_nucleo_wb55rg_p — platform_ststm32, MCU STM32WB55RG, 64MHz, flash 512KB, RAM 192.00KB ✨
  • board_atmelavr_panStampAVR — platform_atmelavr, MCU ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB
  • board_atmelavr_a-star32U4 — platform_atmelavr, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB
  • board_atmelavr_prusa_rambo — platform_atmelavr, MCU ATMEGA2560, 16MHz, flash 252KB, RAM 8KB
  • board_atmelavr_quirkbot — platform_atmelavr, MCU ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB 🎀
  • board_nordicnrf51_redBearLabBLENano — platform_nordicnrf51, MCU NRF51822, 16MHz, flash 256KB, RAM 32KB
  • board_nordicnrf52_redbear_blenano2 — platform_nordicnrf52, MCU NRF52832, 64MHz, flash 512KB, RAM 64KB
  • board_atmelavr_blend — platform_atmelavr, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB
  • board_nordicnrf52_redbear_blend2 — platform_nordicnrf52, MCU NRF52832, 64MHz, flash 512KB, RAM 64KB
  • board_atmelavr_blendmicro16 — platform_atmelavr, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB
  • board_atmelavr_blendmicro8 — platform_atmelavr, MCU ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB
  • board_nordicnrf51_redBearLab — platform_nordicnrf51, MCU NRF51822, 16MHz, flash 256KB, RAM 16KB
  • board_atmelavr_reprap_rambo — platform_atmelavr, MCU ATMEGA2560, 16MHz, flash 252KB, RAM 8KB
  • board_atmelavr_sodaq_galora — platform_atmelavr, MCU ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB 🫶
not me cataloguing every single one of these like a board sommelier 🍓 but fr fr, the numbers matter — that flash and RAM column is your whole personality when you're trying to fit your sketch in, so vibe check it before you commit, iykyk 😭

and yes, the 2.50KB, 192.00KB, 31.50KB, 796KB and 243KB are exactly as written — trailing zeros and all, bestie, we do not round in this house 💅✨


okay the SodaQ besties first, they're adorable:

  • board_atmelavr_sodaq_mbili — platform platform_atmelavr, MCU ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB 🦋
  • board_atmelavr_sodaq_moja — platform platform_atmelavr, MCU ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB 🍓
  • board_atmelavr_sodaq_ndogo — platform platform_atmelavr, MCU ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB 🦋
  • board_atmelavr_sodaq_tatu — platform platform_atmelavr, MCU ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB 🦋

and then STM32 pulls up like, hold my sparkling water 💅

  • board_ststm32_disco_f746ng — platform platform_ststm32, MCU STM32F746NGH6, 216MHz, flash 1MB, RAM 320KB 🔥
  • board_ststm32_disco_l475vg_iot01a — platform platform_ststm32, MCU STM32L475VGT6, 80MHz, flash 1MB, RAM 128KB 🌈
  • board_ststm32_disco_l072cz_lrwan1 — platform platform_ststm32, MCU STM32L072CZ, 32MHz, flash 192KB, RAM 20KB 🌸
  • board_ststm32_disco_f072rb — platform platform_ststm32, MCU STM32F072RBT6, 48MHz, flash 128KB, RAM 16KB 🎀

now the Nucleo girlies, they're giving "I have every variant" energy:

  • board_ststm32_nucleo_f030r8 — platform platform_ststm32, MCU STM32F030R8T6, 48MHz, flash 64KB, RAM 8KB 💜
  • board_ststm32_nucleo_f091rc — platform platform_ststm32, MCU STM32F091RCT6, 48MHz, flash 256KB, RAM 32KB 💜
  • board_ststm32_nucleo_f103rb — platform platform_ststm32, MCU STM32F103RBT6, 72MHz, flash 128KB, RAM 20KB 💜
  • board_ststm32_nucleo_f207zg — platform platform_ststm32, MCU STM32F207ZGT6, 120MHz, flash 1MB, RAM 128KB ✨
  • board_ststm32_nucleo_f302r8 — platform platform_ststm32, MCU STM32F302R8T6, 72MHz, flash 64KB, RAM 16KB 💜
  • board_ststm32_nucleo_f303k8 — platform platform_ststm32, MCU STM32F303K8T6, 72MHz, flash 64KB, RAM 12KB 💜
  • board_ststm32_nucleo_f303re — platform platform_ststm32, MCU STM32F303RET6, 72MHz, flash 512KB, RAM 64KB ✨
  • board_ststm32_nucleo_f401re — platform platform_ststm32, MCU STM32F401RET6, 84MHz, flash 512KB, RAM 96KB ✨
  • board_ststm32_nucleo_f411re — platform platform_ststm32, MCU STM32F411RET6, 100MHz, flash 512KB, RAM 128KB ✨
  • board_ststm32_nucleo_f429zi — platform platform_ststm32, MCU STM32F429ZIT6, 180MHz, flash 2MB, RAM 256KB 🔥
  • board_ststm32_nucleo_f446re — platform platform_ststm32, MCU STM32F446RET6, 180MHz, flash 512KB, RAM 128KB 🔥
  • board_ststm32_nucleo_f767zi — platform platform_ststm32, MCU STM32F767ZIT6, 216MHz, flash 2MB, RAM 512KB 🔥
  • board_ststm32_nucleo_h743zi — platform platform_ststm32, MCU STM32H743ZIT6, 400MHz, flash 2MB, RAM 512KB 👑
  • board_ststm32_nucleo_l031k6 — platform platform_ststm32, MCU STM32L031K6T6, 32MHz, flash 32KB, RAM 8KB 🫶
  • board_ststm32_nucleo_l053r8 — platform platform_ststm32, MCU STM32L053R8T6, 32MHz, flash 64KB, RAM 8KB 🫶
lowkey notice how board_ststm32_nucleo_h743zi is out here at 400MHz with 2MB flash and 512KB RAM like it's not even trying to be humble 💀

okay more boards, let's keep this list rolling bestie, we're literally not even halfway 💅

  • board_ststm32_nucleo_l073rz — platform platform_ststm32, chip STM32L073RZ, 32MHz, flash 192KB, RAM 20KB ✨
  • board_ststm32_nucleo_l152re — platform platform_ststm32, chip STM32L152RET6, 32MHz, flash 512KB, RAM 80KB 💖
  • board_ststm32_nucleo_l412kb — platform platform_ststm32, chip STM32L412KBU6, 80MHz, flash 128KB, RAM 40KB 🌸
  • board_ststm32_nucleo_l432kc — platform platform_ststm32, chip STM32L432KCU6, 80MHz, flash 256KB, RAM 64KB 🦋
  • board_ststm32_nucleo_l452re — platform platform_ststm32, chip STM32L452RET6, 80MHz, flash 256KB, RAM 64KB 💜
  • board_ststm32_nucleo_l476rg — platform platform_ststm32, chip STM32L476RGT6, 80MHz, flash 1MB, RAM 128KB 🔥

the Nucleo L4 lineup is giving main character energy, ngl — look at that RAM going up with the L496 and L4R5, we love a glow-up 😭

  • board_ststm32_nucleo_l496zg — platform platform_ststm32, chip STM32L496ZGT6, 80MHz, flash 1MB, RAM 128KB ✨
  • board_ststm32_nucleo_l496zg_p — platform platform_ststm32, chip STM32L496ZGT6P, 80MHz, flash 1MB, RAM 320KB 👑
  • board_ststm32_nucleo_l4r5zi — platform platform_ststm32, chip STM32L4R5ZIT6, 120MHz, flash 2MB, RAM 640KB 🔥
not the _p variant flexing 320KB of RAM while its sibling only has 128KB. the way that a single letter changes everything 💀

and now we're onto the disco boards, which is a whole different vibe fr fr 🕺

  • board_ststm32_disco_f030r8 — platform platform_ststm32, chip STM32F030R8T6, 48MHz, flash 64KB, RAM 8KB 🎀
  • board_ststm32_disco_f407vg — platform platform_ststm32, chip STM32F407VGT6, 168MHz, flash 1MB, RAM 128KB ⚡
  • board_ststm32_disco_f100rb — platform platform_ststm32, chip STM32F100RBT6, 24MHz, flash 128KB, RAM 8KB 🌈

okay and then a lil STM8 moment, switching families on you bestie, don't panic:

  • board_ststm8_stm8sdisco — platform platform_ststm8, chip STM8S105C6T6, 16MHz, flash 32KB, RAM 2KB 💫

now entering: the Sanguino era. these are all ATmega parts and they come in 16MHz and 8MHz flavors, so peep the _8m suffix, that's the tell 👀

  • board_atmelavr_sanguino_atmega1284p — platform platform_atmelavr, chip ATMEGA1284P, 16MHz, flash 127KB, RAM 16KB 💖
  • board_atmelavr_sanguino_atmega1284_8m — platform platform_atmelavr, chip ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB 💖
  • board_atmelavr_sanguino_atmega644 — platform platform_atmelavr, chip ATMEGA644, 16MHz, flash 63KB, RAM 4KB 🌸
  • board_atmelavr_sanguino_atmega644_8m — platform platform_atmelavr, chip ATMEGA644, 8MHz, flash 63KB, RAM 4KB 🌸
  • board_atmelavr_sanguino_atmega644p — platform platform_atmelavr, chip ATMEGA644P, 16MHz, flash 63KB, RAM 4KB 🦋
  • board_atmelavr_sanguino_atmega644p_8m — platform platform_atmelavr, chip ATMEGA644P, 8MHz, flash 63KB, RAM 4KB 🦋

same chip, same specs, only the clock speed differs — the _8m twins are literally the chill versions of their 16MHz siblings, no cap 😌

  • board_nordicnrf51_seeedTinyBLE — platform platform_nordicnrf51, chip NRF51822, 16MHz, flash 256KB, RAM 16KB 🧚

ooh a Nordic BLE board sneaking in between all the AVRs, we love a plot twist 🫶

  • board_atmelavr_seeeduino — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB 🌿
yes bestie, 31.50KB not 32KB — that's exactly what it says, don't come for me, I'm just the messenger 💀
  • board_atmelavr_sparkfun_satmega128rfa1 — platform platform_atmelavr, chip ATMEGA128RFA1, 16MHz, flash 16KB, RAM 124KB 😳

the way that this one has MORE RAM than flash is genuinely sending me — 16KB flash, 124KB RAM. iconic behavior. no further questions.

  • board_atmelavr_sparkfun_digitalsandbox — platform platform_atmelavr, chip ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB 🏖️

and that's this chunk of the board list, more coming so stay tuned bestie, we're still deep in the tables 💖✨

  • board_atmelavr_sparkfun_fiov3 — platform: platform_atmelavr 🌸 MCU: ATMEGA32U4 ⚡ clock: 8MHz 💾 flash: 28KB 🧠 RAM: 2.50KB
  • board_atmelavr_sparkfun_makeymakey — platform: platform_atmelavr 🎹 MCU: ATMEGA32U4 ⚡ clock: 16MHz 💾 flash: 28KB 🧠 RAM: 2.50KB — yes bestie, the makey makey one, the banana piano board, iconic
  • board_atmelavr_sparkfun_megapro8MHz — platform: platform_atmelavr 💜 MCU: ATMEGA2560 ⚡ clock: 8MHz 💾 flash: 252KB 🧠 RAM: 8KB
  • board_atmelavr_sparkfun_megapro16MHz — platform: platform_atmelavr 💜 MCU: ATMEGA2560 ⚡ clock: 16MHz 💾 flash: 248KB 🧠 RAM: 8KB — notice the flash is 248KB here vs 252KB on the 8MHz twin, that's literally not a typo, that's what the page says 🙈
  • board_atmelavr_sparkfun_megamini — platform: platform_atmelavr ✨ MCU: ATMEGA2560 ⚡ clock: 8MHz 💾 flash: 252KB 🧠 RAM: 8KB
  • board_atmelavr_uview — platform: platform_atmelavr 🦋 MCU: ATMEGA328P ⚡ clock: 16MHz 💾 flash: 31.50KB 🧠 RAM: 2KB
  • board_atmelavr_sparkfun_promicro8 — platform: platform_atmelavr 🎀 MCU: ATMEGA32U4 ⚡ clock: 8MHz 💾 flash: 28KB 🧠 RAM: 2.50KB
  • board_atmelavr_sparkfun_promicro16 — platform: platform_atmelavr 🎀 MCU: ATMEGA32U4 ⚡ clock: 16MHz 💾 flash: 28KB 🧠 RAM: 2.50KB
  • board_atmelavr_sparkfun_qduinomini — platform: platform_atmelavr 🌈 MCU: ATMEGA32U4 ⚡ clock: 8MHz 💾 flash: 28KB 🧠 RAM: 2.50KB
  • board_atmelavr_sparkfun_redboard — platform: platform_atmelavr 🔥 MCU: ATMEGA328P ⚡ clock: 16MHz 💾 flash: 31.50KB 🧠 RAM: 2KB
  • board_atmelavr_sparkfun_serial7seg — platform: platform_atmelavr 🍓 MCU: ATMEGA328P ⚡ clock: 8MHz 💾 flash: 31.50KB 🧠 RAM: 2KB
  • board_atmelavr_sleepypi — platform: platform_atmelavr 😴 MCU: ATMEGA328P ⚡ clock: 8MHz 💾 flash: 30KB 🧠 RAM: 2KB

okay and now we're sliding into the MSP430 territory and the Tiva-C girls, main character energy incoming 👑

  • board_timsp430_lpmsp430fr5739 — platform: platform_timsp430 ⭐ MCU: MSP430FR5739 ⚡ clock: 16MHz 💾 flash: 15.37KB 🧠 RAM: 1KB
  • board_titiva_lplm4f120h5qr — platform: platform_titiva 💅 MCU: LPLM4F120H5QR ⚡ clock: 80MHz 💾 flash: 256KB 🧠 RAM: 32KB
  • board_titiva_lptm4c1230c3pm — platform: platform_titiva 💅 MCU: LPTM4C1230C3PM ⚡ clock: 80MHz 💾 flash: 256KB 🧠 RAM: 32KB
  • board_titiva_lptm4c1294ncpdt — platform: platform_titiva 👑 MCU: LPTM4C1294NCPDT ⚡ clock: 120MHz 💾 flash: 1MB 🧠 RAM: 256KB — a whole 1MB of flash?? she ate, no crumbs
  • board_timsp430_lpmsp430f5529 — platform: platform_timsp430 ⭐ MCU: MSP430F5529 ⚡ clock: 25MHz 💾 flash: 47KB 🧠 RAM: 8KB
  • board_timsp430_lpmsp430fr2311 — platform: platform_timsp430 🧚 MCU: MSP430FR2311 ⚡ clock: 16MHz 💾 flash: 3.75KB 🧠 RAM: 1KB — smol. tiny. pocket-sized. still valid, still slaying
  • board_timsp430_lpmsp430fr2433 — platform: platform_timsp430 🧚 MCU: MSP430FR2433 ⚡ clock: 8MHz 💾 flash: 15KB 🧠 RAM: 4KB
  • board_timsp430_lpmsp430fr4133 — platform: platform_timsp430 🧚 MCU: MSP430FR4133 ⚡ clock: 8MHz 💾 flash: 15KB 🧠 RAM: 2KB
  • board_timsp430_lpmsp430fr5969 — platform: platform_timsp430 💜 MCU: MSP430FR5969 ⚡ clock: 8MHz 💾 flash: 47KB 🧠 RAM: 2KB
  • board_timsp430_lpmsp430fr5994 — platform: platform_timsp430 💜 MCU: MSP430FR5994 ⚡ clock: 16MHz 💾 flash: 256KB 🧠 RAM: 4KB
  • board_timsp430_lpmsp430fr6989 — platform: platform_timsp430 💜 MCU: MSP430FR6989 ⚡ clock: 8MHz 💾 flash: 47KB 🧠 RAM: 2KB
💡 quick reminder bestie: every single one of these names, platforms, MCUs, clock speeds, flash sizes and RAM sizes are copied character for character. Don't go "correcting" the ones that look sus — they're the real deal, fr fr.
  • board_timsp430_lpmsp430g2231 — platform platform_timsp430, chip MSP430G2231, running at 1MHz, with 2KB of flash and 256B of RAM 🫶
  • board_timsp430_lpmsp430g2452 — platform platform_timsp430, chip MSP430G2452, 16MHz, flash 8KB, RAM 256B ✨
  • board_timsp430_lpmsp430g2553 — platform platform_timsp430, chip MSP430G2553, 16MHz, flash 16KB, RAM 512B 💖
  • board_atmelavr_whispernode — platform platform_atmelavr, chip ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB 🦋
  • board_atmelavr_the_things_uno — platform platform_atmelavr, chip ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🌸
  • board_atmelavr_tinyduino — platform platform_atmelavr, chip ATMEGA328P, 8MHz, flash 30KB, RAM 2KB 🎀
  • board_atmelavr_tinylily — platform platform_atmelavr, chip ATMEGA328P, 8MHz, flash 30KB, RAM 2KB 💅
  • board_atmelavr_usbasp — platform platform_atmelavr, chip ATMEGA8, 12MHz, flash 8KB, RAM 1KB ⭐
  • board_atmelavr_wildfirev2 — platform platform_atmelavr, chip ATMEGA1284P, 16MHz, flash 120.00KB, RAM 16KB 🔥
  • board_atmelavr_wildfirev3 — platform platform_atmelavr, chip ATMEGA1284P, 16MHz, flash 127KB, RAM 16KB 🔥
  • board_infineonxmc_xmc1100_boot_kit — platform platform_infineonxmc, chip XMC1100, 32MHz, flash 64KB, RAM 16KB 💜
  • board_infineonxmc_xmc1100_h_bridge2go — platform platform_infineonxmc, chip XMC1100, 32MHz, flash 64KB, RAM 16KB 💜
  • board_infineonxmc_xmc1100_xmc2go — platform platform_infineonxmc, chip XMC1100, 32MHz, flash 64KB, RAM 16KB 💜
  • board_infineonxmc_xmc1300_boot_kit — platform platform_infineonxmc, chip XMC1300, 32MHz, flash 64KB, RAM 16KB 🌈
  • board_infineonxmc_xmc1300_sense2gol — platform platform_infineonxmc, chip XMC1300, 32MHz, flash 32KB, RAM 16KB 🌈
  • board_infineonxmc_xmc1400_boot_kit — platform platform_infineonxmc, chip XMC1400, 48MHz, flash 1.95MB, RAM 16KB 👑
  • board_infineonxmc_xmc4200_distance2go — platform platform_infineonxmc, chip XMC4200, 80MHz, flash 256KB, RAM 40KB 👑
  • board_infineonxmc_xmc4700_relax_kit — platform platform_infineonxmc, chip XMC4700, 144MHz, flash 2.00MB, RAM 1.95MB 👑
  • board_atmelavr_ftduino — platform platform_atmelavr, chip ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🍓
  • board_atmelavr_bob3 — platform platform_atmelavr, chip ATMEGA88, 8MHz, flash 8KB, RAM 1KB 🧚
  • board_atmelavr_nibo2 — platform platform_atmelavr, chip ATMEGA128, 16MHz, flash 128KB, RAM 4KB 🦋
  • board_atmelavr_niboburger — platform platform_atmelavr, chip ATMEGA16, 15MHz, flash 16KB, RAM 1KB 🌸
  • board_atmelavr_niboburger_1284 — platform platform_atmelavr, chip ATMEGA1284P, 20MHz, flash 128KB, RAM 16KB 🌸

okay and the list just keeps going, bestie — we're literally mid-roll-call of every board PlatformIO knows about 😭 Each row is giving board id, platform, chip, clock, flash, RAM — that's the whole vibe check, no filler. Not one of these got skipped, not one number got rounded, periodt. 💅

keep scrolling, there's more where this came from ✨

  • board_atmelavr_nibobee 🌸 — platform platform_atmelavr · MCU ATMEGA16 · 15MHz · flash 16KB · RAM 1KB
  • board_atmelavr_nibobee_1284 🌸 — platform platform_atmelavr · MCU ATMEGA1284P · 20MHz · flash 128KB · RAM 16KB
  • board_nordicnrf52_ublox_evk_nina_b1 🦋 — platform platform_nordicnrf52 · MCU NRF52832 · 64MHz · flash 512KB · RAM 64KB
  • board_atmelavr_ardhat 🎀 — platform platform_atmelavr · MCU ATMEGA328P · 16MHz · flash 31.50KB · RAM 2KB

🛠️ External Debug Tools 🛠️

okay bestie, listen up because this next batch comes with a whole disclaimer, and I need you to actually read it 💅

The boards listed below are compatible with piodebug but they DEPEND ON an external debug probe. They ARE NOT READY for debugging. Please click on the board name for further details.

like… they're compatible, they're not ready, and those are two very different energy levels, no cap 😭 Don't come crying to me when your debug session ghosts you. Read the board docs first, fr fr.

NamePlatformMCUFrequencyFlashRAM

(not me putting that up there just so you remember the columns — here's the actual tea 👇)

  • board_ststm32_armed_v1 🔥 — platform platform_ststm32 · MCU STM32F407VET6 · 168MHz · flash 512KB · RAM 192KB
  • board_ststm32_rumba32_f446ve 🔥 — platform platform_ststm32 · MCU STM32F446RET6 · 180MHz · flash 512KB · RAM 128KB
  • board_espressif32_esp32cam 👑 — platform platform_espressif32 · MCU ESP32 · 240MHz · flash 4MB · RAM 320KB
  • board_espressif32_alksesp32 👑 — platform platform_espressif32 · MCU ESP32 · 240MHz · flash 4MB · RAM 320KB
  • board_espressif32_az-delivery-devkit-v4 ⭐ — platform platform_espressif32 · MCU ESP32 · 240MHz · flash 16MB · RAM 520KB
  • board_nordicnrf52_adafruit_feather_nrf52832 🦋 — platform platform_nordicnrf52 · MCU NRF52832 · 64MHz · flash 512KB · RAM 64KB
  • board_atmelsam_adafruit_circuitplayground_m0 🎀 — platform platform_atmelsam · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_crickit_m0 🎀 — platform platform_atmelsam · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB
  • board_espressif32_featheresp32 ✨ — platform platform_espressif32 · MCU ESP32 · 240MHz · flash 4MB · RAM 320KB
  • board_nordicnrf52_adafruit_feather_nrf52840_sense 🦋 — platform platform_nordicnrf52 · MCU NRF52840 · 64MHz · flash 796KB · RAM 243KB
  • board_atmelsam_adafruit_feather_m0 💜 — platform platform_atmelsam · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_feather_m0_express 💜 — platform platform_atmelsam · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_feather_m4 💜 — platform platform_atmelsam · MCU SAMD51J19A · 120MHz · flash 512KB · RAM 192KB
  • board_ststm32_adafruit_feather_f405 🔥 — platform platform_ststm32 · MCU STM32F405RGT6 · 168MHz · flash 1MB · RAM 128KB
  • board_nordicnrf52_adafruit_feather_nrf52840 🦋 — platform platform_nordicnrf52 · MCU NRF52840 · 64MHz · flash 796KB · RAM 243KB
  • board_atmelsam_adafruit_gemma_m0 🌸 — platform platform_atmelsam · MCU SAMD21E18A · 48MHz · flash 256KB · RAM 32KB
  • board_atmelsam_adafruit_grandcentral_m4 🌈 — platform platform_atmelsam · MCU SAMD51P20A · 120MHz · flash 1MB · RAM 256KB

okay bestie we're still deep in the board roster and the SAMD51 girlies are THRIVING ✨ every single one of these is platform_atmelsam unless noted, and the format is board id → MCU → clock → flash → RAM, no cap:

  • board_atmelsam_adafruit_hallowing — platform_atmelsam · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 🎀
  • board_atmelsam_adafruit_hallowing_m4 — platform_atmelsam · MCU SAMD51J19A · 120MHz · flash 496KB · RAM 192KB 💅
  • board_atmelsam_adafruit_itsybitsy_m0 — platform_atmelsam · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 🦋
  • board_atmelsam_adafruit_itsybitsy_m4 — platform_atmelsam · MCU SAMD51G19A · 120MHz · flash 512KB · RAM 192KB ✨
  • board_atmelsam_adafruit_monster_m4sk — platform_atmelsam · MCU SAMD51G19A · 120MHz · flash 496KB · RAM 192KB 👑
  • board_atmelsam_adafruit_metro_m0 — platform_atmelsam · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 🌸
  • board_atmelsam_adafruit_metro_m4 — platform_atmelsam · MCU SAMD51J19A · 120MHz · flash 512KB · RAM 192KB 💖
  • board_atmelsam_adafruit_metro_m4_airliftlite — platform_atmelsam · MCU SAMD51J19A · 120MHz · flash 512KB · RAM 192KB 🌈
  • board_atmelsam_adafruit_pygamer_advance_m4 — platform_atmelsam · MCU SAMD51J20A · 120MHz · flash 1MB · RAM 256KB 🔥
  • board_atmelsam_adafruit_pygamer_m4 — platform_atmelsam · MCU SAMD51J19A · 120MHz · flash 512KB · RAM 192KB 🎮
  • board_atmelsam_adafruit_pyportal_m4 — platform_atmelsam · MCU SAMD51J20A · 120MHz · flash 1MB · RAM 256KB ⭐
  • board_atmelsam_adafruit_pyportal_m4_titano — platform_atmelsam · MCU SAMD51J20A · 120MHz · flash 1MB · RAM 256KB 🧚
  • board_atmelsam_adafruit_trellis_m4 — platform_atmelsam · MCU SAMD51J19A · 120MHz · flash 512KB · RAM 192KB 💜
  • board_atmelsam_adafruit_trinket_m0 — platform_atmelsam · MCU SAMD21E18A · 48MHz · flash 256KB · RAM 32KB 🍓
  • board_atmelsam_adafruit_pirkey — platform_atmelsam · MCU SAMD21E18A · 48MHz · flash 256KB · RAM 32KB 🙈
  • board_atmelsam_adafruit_pybadge_airlift_m4 — platform_atmelsam · MCU SAMD51J20A · 120MHz · flash 1008KB · RAM 192KB 😭 (yes bestie, 1008KB, we don't round in this house)
  • board_atmelsam_adafruit_pybadge_m4 — platform_atmelsam · MCU SAMD51J19A · 120MHz · flash 512KB · RAM 192KB 💅

and THEN the plot twist, the platforms switch up on us mid-list, so pay attention 🫶

  • board_ststm32_afroflight_f103cb — platform platform_ststm32 · MCU STM32F103CBT6 · 72MHz · flash 128KB · RAM 20KB 🌊

back to the SAM fam for the OGs 💀

  • board_atmelsam_due — platform_atmelsam · MCU AT91SAM3X8E · 84MHz · flash 512KB · RAM 96KB 👑
  • board_atmelsam_dueUSB — platform_atmelsam · MCU AT91SAM3X8E · 84MHz · flash 512KB · RAM 96KB 🦋
  • board_atmelsam_mzeroUSB — platform_atmelsam · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB ✨
  • board_atmelsam_mzeroproUSB — platform_atmelsam · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 🎀
  • board_atmelsam_mkrfox1200 — platform_atmelsam · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 🌸

that's the vibe check for this chunk and the list is still going, so don't go anywhere bestie 💖

  • board_atmelsam_mkrgsm1400 — platform_atmelsam · SAMD21G18A · 48MHz · 256KB · 32KB ✨ the MKR that texts, bestie
  • board_atmelsam_mkrnb1500 — platform_atmelsam · SAMD21G18A · 48MHz · 256KB · 32KB 📶 narrowband era
  • board_atmelsam_mkrwan1300 — platform_atmelsam · SAMD21G18A · 48MHz · 256KB · 32KB 🌈 LoRa energy
  • board_atmelsam_mkrwan1310 — platform_atmelsam · SAMD21G18A · 48MHz · 256KB · 32KB 🌈 the glow-up version, same specs tho
  • board_atmelsam_mkrwifi1010 — platform_atmelsam · SAMD21G18A · 48MHz · 256KB · 32KB 🦋 wifi queen
  • board_atmelsam_mkr1000USB — platform_atmelsam · SAMD21G18A · 48MHz · 256KB · 32KB
  • board_atmelsam_mkrzero — platform_atmelsam · SAMD21G18A · 48MHz · 256KB · 32KB 🎀 the little one that could
  • board_nordicnrf52_nano33ble — platform_nordicnrf52 · NRF52840 · 64MHz · 960KB · 256KB 👑 bluetooth icon, honestly
  • board_atmelsam_tian — platform_atmelsam · SAMD21G18A · 48MHz · 256KB · 32KB
  • board_atmelsam_zeroUSB — platform_atmelsam · SAMD21G18A · 48MHz · 256KB · 32KB
  • board_ststm32_black_f407ve — platform_ststm32 · STM32F407VET6 · 168MHz · 512KB · 128KB 🔥
  • board_ststm32_black_f407vg — platform_ststm32 · STM32F407VGT6 · 168MHz · 512KB · 128KB 🔥
  • board_ststm32_black_f407ze — platform_ststm32 · STM32F407ZET6 · 168MHz · 512KB · 128KB 🔥
  • board_ststm32_black_f407zg — platform_ststm32 · STM32F407ZGT6 · 168MHz · 1MB · 128KB 💅 a whole megabyte, periodt
  • board_ststm32_blackpill_f103c8 — platform_ststm32 · STM32F103C8T6 · 72MHz · 64KB · 20KB
  • board_ststm32_blackpill_f103c8_128 — platform_ststm32 · STM32F103C8T6 · 72MHz · 128KB · 20KB — yes bestie, same chip, bigger flash, no I will not explain it
  • board_ststm32_robotdyn_blackpill_f303cc — platform_ststm32 · STM32F303CCT6 · 72MHz · 256KB · 40KB
  • board_ststm32_blackpill_f401cc — platform_ststm32 · STM32F401CCT6 · 84MHz · 256KB · 64KB ⭐
  • board_ststm32_blue_f407ve_mini — platform_ststm32 · STM32F407VET6 · 168MHz · 512KB · 128KB 💙 mini but not mini in spirit
  • board_ststm32_bluepill_f103c6 — platform_ststm32 · STM32F103C6T6 · 72MHz · 32KB · 10KB 😭 baby board, be gentle with it
  • board_ststm32_bluepill_f103c8 — platform_ststm32 · STM32F103C8T6 · 72MHz · 64KB · 20KB 👑 the classic blue pill, main character of cheap dev boards
  • board_ststm32_bluepill_f103c8_128k — platform_ststm32 · STM32F103C8T6 · 72MHz · 128KB · 20KB
  • board_nordicnrf52_bluey — platform_nordicnrf52 · NRF52832 · 64MHz · 512KB · 64KB 🦋 named Bluey, lives on the nRF52 platform, we love an unbothered queen

  • board_nordicnrf51_bluz_dk — running platform_nordicnrf51, the chip is a lil NRF51822 cruising at 32MHz, packing 256KB of flash and 32KB of RAM 🦋
  • board_espressif32_briki_abc_esp32 — on platform_espressif32, ESP32 energy at 240MHz, 3.25MB flash, 320KB RAM ✨
  • board_atmelsam_briki_abc_samd21 — platform_atmelsam bestie, SAMD21G18A doing 48MHz, 256KB flash, 32KB RAM 🎀
  • board_espressif32_briki_mbc-wb_esp32 — also platform_espressif32, ESP32 at 240MHz, 3.25MB flash, 320KB RAM 💖
  • board_atmelsam_briki_mbcwb_samd21 — platform_atmelsam, SAMD21G18A at 48MHz, 256KB flash, 32KB RAM 🌸
  • board_nordicnrf52_adafruit_cplaynrf52840 — platform_nordicnrf52, NRF52840 at 64MHz, 796KB flash, 243KB RAM, lowkey beefy 💜
  • board_ststm32_coreboard_f401rc — platform_ststm32, STM32F401RCT6 at 84MHz, 256KB flash, 64KB RAM ⭐
  • board_espressif32_d-duino-32 — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM 🔥
  • board_espressif32_esp32doit-devkit-v1 — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM 👑
  • board_ststm32_demo_f030f4 — platform_ststm32, STM32F030F4P6 at 48MHz, and okay she's tiny: 16KB flash, 4KB RAM, it's giving baby 💀
  • board_atmelsam_digix — platform_atmelsam, AT91SAM3X8E at 84MHz, 512KB flash, 96KB RAM 🌈
  • board_espressif32_pocket_32 — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM 🫶
  • board_espressif32_fm-devkit — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM 🍓
  • board_espressif32_esp32vn-iot-uno — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM 🧚
  • board_espressif32_espectro32 — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM 💅
  • board_espressif32_espino32 — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM ✨
  • board_espressif32_esp32dev — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM, the classic fr fr 👑
  • board_ststm32_diymore_f407vgt — platform_ststm32, STM32F407VGT6 at 168MHz, 512KB flash, 128KB RAM 🔥
  • board_ststm32_fk407m1 — platform_ststm32, STM32F407VET6 at 168MHz, 512KB flash, 128KB RAM ⭐
  • board_espressif32_firebeetle32 — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM 🎀
  • board_espressif32_frogboard — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM 🐸✨
  • board_gd32v_gd32vf103v-eval — platform_gd32v, GD32VF103VBT6 at 108MHz, 128KB flash, 32KB RAM 💜
  • board_espressif32_heltec_wifi_lora_32 — platform_espressif32, ESP32 at 240MHz, 4MB flash, 320KB RAM 🌸

okay so we are deep in the board roster now, bestie, and this stretch is giving pure data-table realness 🫶 — no prose, just chip names and numbers. But you know I'm gonna hype every single one anyway. Here's the exact block, character for character, no cap:

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_espressif32_heltec_wifi_lora_32_V2            platform_espressif32   ESP32           240MHz      8MB        320KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_espressif32_heltec_wireless_stick             platform_espressif32   ESP32           240MHz      8MB        320KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_espressif32_hornbill32dev                     platform_espressif32   ESP32           240MHz      4MB        320KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_espressif32_hornbill32minima                  platform_espressif32   ESP32           240MHz      4MB        320KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_espressif32_iotaap_magnolia                   platform_espressif32   ESP32           240MHz      4MB        320KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_ststm32_malyanm200_f070cb                     platform_ststm32       STM32F070CBT6   48MHz       120KB      14.81KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_ststm32_malyanm300_f070cb                     platform_ststm32       STM32F070CBT6   48MHz       120KB      14.81KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_espressif32_mhetesp32devkit                   platform_espressif32   ESP32           240MHz      4MB        320KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_espressif32_mhetesp32minikit                  platform_espressif32   ESP32           240MHz      4MB        320KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_ststm32_mkr_sharky                            platform_ststm32       STM32WB55CG     64MHz       512KB      192.00KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelsam_mkrvidor4000                         platform_atmelsam      SAMD21G18A      48MHz       256KB      32KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_ststm32_malyanm200_f103cb                     platform_ststm32       STM32F103CBT6   72MHz       120KB      20KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_ststm32_maple                                 platform_ststm32       STM32F103RBT6   72MHz       108KB      17KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_ststm32_maple_ret6                            platform_ststm32       STM32F103RET6   72MHz       256KB      48KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_ststm32_maple_mini_b20                        platform_ststm32       STM32F103CBT6   72MHz       120KB      20KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_ststm32_maple_mini_origin                     platform_ststm32       STM32F103CBT6   72MHz       108KB      17KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_nordicnrf52_adafruit_metro_nrf52840           platform_nordicnrf52   NRF52840        64MHz       796KB      243KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_ststm32_microduino32_flash                    platform_ststm32       STM32F103CBT6   72MHz       105.47KB   16.60KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelsam_minitronics20                        platform_atmelsam      SAMD21J18A      48MHz       256KB      32KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelsam_moteino_zero                         platform_atmelsam      SAMD21G18A      48MHz       256KB      32KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_ststm32_netduino2plus                         platform_ststm32       STM32F405RGT6   168MHz      1MB        192KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_atmelsam_nano_33_iot                          platform_atmelsam      SAMD21G18A      48MHz       256KB      32KB
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  board_espressif32_node32s                           platform_espressif32   ESP32           240MHz      4MB        320KB

✨ the vibe check on each of these queens ✨

  • board_espressif32_heltec_wifi_lora_32_V2 — Heltec's LoRa-flavoured ESP32 situation. platform_espressif32, chip ESP32, 240MHz, 8MB flash, 320KB RAM. eight whole megabytes, she's eating 💅
  • board_espressif32_heltec_wireless_stick — the stick-shaped sibling, same spec sheet energy: platform_espressif32, ESP32, 240MHz, 8MB, 320KB. twinsies fr fr 🦋
  • board_espressif32_hornbill32dev — Hornbill's dev board, platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM. solid, dependable, lowkey the group project MVP
  • board_espressif32_hornbill32minima — the "minima" cut, but the numbers are identical: platform_espressif32, ESP32, 240MHz, 4MB, 320KB. name said minimal, spec said no ❤️
  • board_espressif32_iotaap_magnolia — IOTAAP's Magnolia, platform_espressif32, ESP32, 240MHz, 4MB, 320KB. magnolia is such a pretty board name I'm obsessed 🌸
  • board_ststm32_malyanm200_f070cb — now we're in STM32 land: platform_ststm32, chip STM32F070CBT6, 48MHz, 120KB flash, 14.81KB RAM. not the flashiest but she's doing her best and that's enough
  • board_ststm32_malyanm300_f070cb — M300 edition, same exact sheet: platform_ststm32, STM32F070CBT6, 48MHz, 120KB, 14.81KB. copy-paste queens 👑
  • board_espressif32_mhetesp32devkit — MHE-T's ESP32 devkit, platform_espressif32, ESP32, 240MHz, 4MB, 320KB. classic. iconic. no notes ⭐
  • board_espressif32_mhetesp32minikit — the mini variant, still platform_espressif32, ESP32, 240MHz, 4MB, 320KB. mini but make it same specs 😭
  • board_ststm32_mkr_sharky — the name is SHARKY and honestly that alone is main character energy. platform_ststm32, chip STM32WB55CG, 64MHz, 512KB flash, 192.00KB RAM. big RAM, big bite 🦈
  • board_atmelsam_mkrvidor4000 — Vidor 4000! platform_atmelsam, chip SAMD21G18A, 48MHz, 256KB, 32KB. the FPGA-adjacent girlie of the lineup 🧚
  • board_ststm32_malyanm200_f103cb — M200 on the STM32F103CBT6, platform_ststm32, 72MHz, 120KB flash, 20KB RAM. that clock speed glow-up from 48 to 72 is real 🔥
  • board_ststm32_maple — the literal legend herself. platform_ststm32, STM32F103RBT6, 72MHz, 108KB, 17KB. Maple walked so a whole ecosystem could run 💖
  • board_ststm32_maple_ret6 — RET6 remix: platform_ststm32, STM32F103RET6, 72MHz, 256KB flash, 48KB RAM. she upgraded and she knows it ✨
  • board_ststm32_maple_mini_b20 — platform_ststm32, STM32F103CBT6, 72MHz, 120KB, 20KB. small board, big personality 🎀
  • board_ststm32_maple_mini_origin — the origin mini: platform_ststm32, STM32F103CBT6, 72MHz, 108KB, 17KB. note the flash/RAM diffs vs _b20 — they are NOT the same, bestie, do not mix them up 💀
  • board_nordicnrf52_adafruit_metro_nrf52840 — different platform entirely! platform_nordicnrf52, chip NRF52840, 64MHz, 796KB flash, 243KB RAM. Adafruit said let there be RAM and there was 🫶
  • board_ststm32_microduino32_flash — platform_ststm32, STM32F103CBT6, 72MHz, 105.47KB, 16.60KB. look at those decimals being all precise and cute 😭
  • board_atmelsam_minitronics20 — platform_atmelsam, SAMD21J18A, 48MHz, 256KB, 32KB. the J18A variant said hi 🌈
  • board_atmelsam_moteino_zero — Moteino Zero, platform_atmelsam, SAMD21G18A, 48MHz, 256KB, 32KB. low-power legend behaviour 🔥
  • board_ststm32_netduino2plus — Netduino 2 Plus going BIG: platform_ststm32, STM32F405RGT6, 168MHz, 1MB flash, 192KB RAM. one megabyte of flash?? she ate and left no crumbs 👑
  • board_atmelsam_nano_33_iot — the Nano 33 IoT, platform_atmelsam, SAMD21G18A, 48MHz, 256KB, 32KB. tiny board, big "IoT" on the label 🦋
  • board_espressif32_node32s — Node32s closing us out: platform_espressif32, ESP32, 240MHz, 4MB, 320KB. a strong finisher, periodt 💅

heads up bestie: these rows are the boards as listed — the numbers above are exactly what's in the table, so if you're picking a board for a build, read the platform_* prefix AND the chip string together. Two boards can have the same chip and still not be the same board. iykyk 🙈

and yes we are still going, there's more list where that came from — don't go anywhere 💖

  • board_espressif32_nodemcu-32s — platform: platform_espressif32 ✨ MCU ESP32, 240MHz, 4MB flash, 320KB RAM 💖
  • board_ststm32_nucleo_g071rb — platform: platform_ststm32 ✨ MCU STM32G071RBT6, 64MHz, 128KB flash, 36KB RAM 🎀
  • board_ststm32_nucleo_g431kb — platform: platform_ststm32 ✨ MCU STM32G431KBT6, 170MHz, 128KB flash, 32KB RAM 🦋
  • board_ststm32_nucleo_g431rb — platform: platform_ststm32 ✨ MCU STM32G431RBT6, 170MHz, 128KB flash, 32KB RAM 🌸
  • board_ststm32_nucleo_g474re — platform: platform_ststm32 ✨ MCU STM32G474RET6, 170MHz, 512KB flash, 128KB RAM 💅
  • board_espressif32_esp32-devkitlipo — platform: platform_espressif32 ✨ MCU ESP32, 240MHz, 4MB flash, 320KB RAM 🫶
  • board_espressif32_esp32-evb — platform: platform_espressif32 ✨ MCU ESP32, 240MHz, 4MB flash, 320KB RAM 😭
  • board_espressif32_esp32-gateway — platform: platform_espressif32 ✨ MCU ESP32, 240MHz, 4MB flash, 320KB RAM 🔥
  • board_ststm32_olimexino — platform: platform_ststm32 ✨ MCU STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM 👑
  • board_nordicnrf51_oshchip — platform: platform_nordicnrf51 ✨ MCU NRF51822, 32MHz, 256KB flash, 32KB RAM 🌈
  • board_nordicnrf52_particle_xenon — platform: platform_nordicnrf52 ✨ MCU NRF52840, 64MHz, 796KB flash, 243KB RAM ⭐
  • board_ststm32_piconomix_px_her0 — platform: platform_ststm32 ✨ MCU STM32L072RB, 32MHz, 128KB flash, 20KB RAM 💀
  • board_ststm32_prntr_v2 — platform: platform_ststm32 ✨ MCU STM32F407RE, 168MHz, 512KB flash, 192KB RAM 🙈
  • board_espressif32_lopy — platform: platform_espressif32 ✨ MCU ESP32, 240MHz, 4MB flash, 320KB RAM 🍓
  • board_espressif32_lopy4 — platform: platform_espressif32 ✨ MCU ESP32, 240MHz, 4MB flash, 1.25MB RAM 🧚
  • board_ststm32_rak811_tracker — platform: platform_ststm32 ✨ MCU STM32L151RBT6, 32MHz, 128KB flash, 16KB RAM 💜
  • board_ststm32_rak811_tracker_32 — platform: platform_ststm32 ✨ MCU STM32L151RBT6, 32MHz, 128KB flash, 32KB RAM 💖
  • board_ststm32_rhf76_052 — platform: platform_ststm32 ✨ MCU STM32L051C8T6, 32MHz, 64KB flash, 8KB RAM ✨
  • board_espressif32_sg-o_airMon — platform: platform_espressif32 ✨ MCU ESP32, 240MHz, 4MB flash, 320KB RAM 🎀
  • board_atmelsam_sodaq_autonomo — platform: platform_atmelsam ✨ MCU SAMD21J18A, 48MHz, 256KB flash, 32KB RAM 🦋
  • board_atmelsam_sodaq_explorer — platform: platform_atmelsam ✨ MCU SAMD21J18A, 48MHz, 256KB flash, 32KB RAM 🌸
  • board_atmelsam_sodaq_one — platform: platform_atmelsam ✨ MCU SAMD21G18A, 48MHz, 256KB flash, 32KB RAM 💅
  • board_atmelsam_sodaq_sara — platform: platform_atmelsam ✨ MCU SAMD21J18A, 48MHz, 256KB flash, 32KB RAM 🫶

okay bestie, like — look at all these little silicon cuties 🥹 every single one of them has its own platform, its own MCU, its own clock speed, and its own lil memory situation. no cap, the vibes are immaculate and the specs are exact — don't you dare round any of these numbers, they're literally the whole point 💖

fr fr, do NOT eyeball these values. If you're copy-pasting a board name, grab it character for character — one wrong underscore and the tool will be like "who? never heard of her" 💀

and yes, the numbers are giving what they need to give: 240MHz here, 32MHz there, 1.25MB for the one that's lowkey eating 💅 every single row matters, periodt.

okay bestie the table said "and I took that personally" because it is STILL going 💅 same columns, same energy, no skips, let's get it

  • board_atmelsam_sodaq_sff — platform platform_atmelsam, chip SAMD21G18A, 48MHz, 256KB flash, 32KB RAM ✨
  • board_ststm32_olimex_e407 — platform platform_ststm32, chip STM32F407ZGT6, 168MHz, 1MB flash, 128KB RAM
  • board_ststm32_olimex_h407 — platform platform_ststm32, chip STM32F407ZGT6, 168MHz, 1MB flash, 128KB RAM

two Olimex twins, same chip, same numbers, different names — they're giving identical twin main character energy fr fr 👑


and now, the moment you've all been waiting for: the STM32F103 section, which is literally the longest glow-up in this entire table, no cap

  • board_ststm32_genericSTM32F103C8 — platform platform_ststm32, chip STM32F103C8T6, 72MHz, 64KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103CB — platform platform_ststm32, chip STM32F103CBT6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103R8 — platform platform_ststm32, chip STM32F103R8T6, 72MHz, 64KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103RB — platform platform_ststm32, chip STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103RC — platform platform_ststm32, chip STM32F103RCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_genericSTM32F103RE — platform platform_ststm32, chip STM32F103RET6, 72MHz, 512KB flash, 64KB RAM
  • board_ststm32_genericSTM32F103T8 — platform platform_ststm32, chip STM32F103T8T6, 72MHz, 64KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103TB — platform platform_ststm32, chip STM32F103TBT6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103VB — platform platform_ststm32, chip STM32F103VBT6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103VC — platform platform_ststm32, chip STM32F103VCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_genericSTM32F103VD — platform platform_ststm32, chip STM32F103VDT6, 72MHz, 384KB flash, 64KB RAM
  • board_ststm32_genericSTM32F103VE — platform platform_ststm32, chip STM32F103VET6, 72MHz, 512KB flash, 64KB RAM
  • board_ststm32_genericSTM32F103ZC — platform platform_ststm32, chip STM32F103ZCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_genericSTM32F103ZD — platform platform_ststm32, chip STM32F103ZDT6, 72MHz, 384KB flash, 64KB RAM
  • board_ststm32_genericSTM32F103ZE — platform platform_ststm32, chip STM32F103ZET6, 72MHz, 512KB flash, 64KB RAM

not me counting them all 😭 that's 72MHz across the board, flash climbing from 64KB all the way up to 512KB, and RAM going 20KB → 48KB → 64KB depending on which one you pick. the letters in the chip name are lowkey doing a whole alphabet thing and I respect the commitment 💖


then we level up to the F4 squad and suddenly everything's got more MHz and more room:

  • board_ststm32_genericSTM32F401RB — platform platform_ststm32, chip STM32F401RB, 84MHz, 128KB flash, 64KB RAM
  • board_ststm32_genericSTM32F401RC — platform platform_ststm32, chip STM32F401RC, 84MHz, 256KB flash, 64KB RAM
  • board_ststm32_genericSTM32F401RE — platform platform_ststm32, chip STM32F401RE, 84MHz, 512KB flash, 96KB RAM
  • board_ststm32_genericSTM32F407VET6 — platform platform_ststm32, chip STM32F407VET6, 168MHz, 502.23KB flash, 128KB RAM
  • board_ststm32_genericSTM32F407VGT6 — platform platform_ststm32, chip STM32F407VGT6, 168MHz, 1MB flash, 192KB RAM

the way 502.23KB just showed up next to a bunch of clean round numbers... not a single one of us is okay 🫠 but yes bestie, that is the number, 502.23KB, character for character, I am NOT rounding it, that would be a crime and I would simply pass away 🙈

and 1MB flash with 192KB RAM on the STM32F407VGT6?? that's the 168MHz big sister of the group and she ATE 👑

the platform_ststm32 takeover is real and it is not slowing down — more to come, don't go anywhere 🌸

  • board_ststm32_stm32f4stamp — platform platform_ststm32 · chip STM32F405RGT6 · 168MHz · flash 1MB · RAM 192KB 💖
  • board_atmelsam_sainSmartDue — platform platform_atmelsam · chip AT91SAM3X8E · 84MHz · flash 512KB · RAM 96KB
  • board_atmelsam_sainSmartDueUSB — platform platform_atmelsam · chip AT91SAM3X8E · 84MHz · flash 512KB · RAM 96KB
  • board_atmelsam_seeeduino_lorawan — platform platform_atmelsam · chip SAMD21G18A · 48MHz · flash 256KB · RAM 32KB
  • board_ststm32_steval_mksboxv1 — platform platform_ststm32 · chip STM32L4R9ZI · 120MHz · flash 2MB · RAM 640KB 👑 that RAM tho
  • board_espressif32_wesp32 — platform platform_espressif32 · chip ESP32 · 240MHz · flash 4MB · RAM 320KB 🔥
  • board_nordicnrf51_Sinobit — platform platform_nordicnrf51 · chip NRF51822 · 32MHz · flash 256KB · RAM 32KB
  • board_gd32v_sipeed-longan-nano — platform platform_gd32v · chip GD32VF103CBT6 · 108MHz · flash 128KB · RAM 32KB 🦋
  • board_gd32v_sipeed-longan-nano-lite — platform platform_gd32v · chip GD32VF103C8T6 · 108MHz · flash 64KB · RAM 20KB
  • board_kendryte210_sipeed-maix-bit — platform platform_kendryte210 · chip K210 · 400MHz · flash 16MB · RAM 6MB 😭 bestie is FAST
  • board_kendryte210_sipeed-maix-bit-mic — platform platform_kendryte210 · chip K210 · 400MHz · flash 16MB · RAM 6MB
  • board_kendryte210_sipeed-maix-go — platform platform_kendryte210 · chip K210 · 400MHz · flash 16MB · RAM 6MB
  • board_kendryte210_sipeed-maix-one-dock — platform platform_kendryte210 · chip K210 · 400MHz · flash 16MB · RAM 6MB
  • board_kendryte210_sipeed-maixduino — platform platform_kendryte210 · chip K210 · 400MHz · flash 16MB · RAM 6MB ✨ the whole maix family ate
  • board_atmelsam_sparkfun_samd21_9dof — platform platform_atmelsam · chip SAMD21G18A · 48MHz · flash 256KB · RAM 32KB
  • board_espressif32_esp32thing — platform platform_espressif32 · chip ESP32 · 240MHz · flash 4MB · RAM 320KB
  • board_espressif32_sparkfun_lora_gateway_1-channel — platform platform_espressif32 · chip ESP32 · 240MHz · flash 4MB · RAM 320KB 🌈 lora gateway said lemme handle ur whole network
  • board_atmelsam_sparkfun_qwiic_micro_samd21e — platform platform_atmelsam · chip SAMD21E18A · 48MHz · flash 256KB · RAM 32KB
  • board_atmelsam_sparkfun_redboard_turbo — platform platform_atmelsam · chip SAMD21G18A · 48MHz · flash 256KB · RAM 32KB
  • board_atmelsam_sparkfun_samd21_dev_usb — platform platform_atmelsam · chip SAMD21G18A · 48MHz · flash 256KB · RAM 32KB
  • board_atmelsam_sparkfun_samd21_mini_usb — platform platform_atmelsam · chip SAMD21G18A · 48MHz · flash 256KB · RAM 32KB
  • board_atmelsam_sparkfun_samd21_proRF — platform platform_atmelsam · chip SAMD21G18A · 48MHz · flash 256KB · RAM 32KB
  • board_ststm32_sparky_v1 — platform platform_ststm32 · chip STM32F303CCT6 · 72MHz · flash 256KB · RAM 40KB 🎀

okay real talk bestie, the pattern here is board id → platform → chip → clock → flash → RAM and once u clock it you're literally never lost again 💅 the platform_* bit is the platform package it rides with, the chip is the silicon doing the work, and the last three are the speed + storage you're working with, no cap 🫶

okay bestie, we're still deep in the board buffet and honestly? the selection is chef's kiss ✨ same order as always: board id, platform, chip, clock, flash, RAM. no cap, every number below is exactly what the tool prints 💅

  • board_espressif32_ttgo-lora32-v1 — platform_espressif32 · ESP32 · 240MHz · 4MB · 320KB 🦋
  • board_espressif32_ttgo-lora32-v2 — platform_espressif32 · ESP32 · 240MHz · 4MB · 320KB 🦋
  • board_espressif32_ttgo-t-beam — platform_espressif32 · ESP32 · 240MHz · 4MB · 1.25MB 👀 that RAM tho
  • board_espressif32_ttgo-t1 — platform_espressif32 · ESP32 · 240MHz · 4MB · 320KB
  • board_nordicnrf52_stct_nrf52_minidev — platform_nordicnrf52 · NRF52832 · 64MHz · 512KB · 64KB 🧚
  • board_teensy_teensy31 — platform_teensy · MK20DX256 · 72MHz · 256KB · 64KB
  • board_teensy_teensy35 — platform_teensy · MK64FX512 · 120MHz · 512KB · 255.99KB — yes bestie, .99. the decimals are real, do not round her 💀
  • board_teensy_teensy36 — platform_teensy · MK66FX1M0 · 180MHz · 1MB · 256KB
  • board_teensy_teensy40 — platform_teensy · IMXRT1062 · 600MHz · 1.94MB · 512KB 🔥
  • board_teensy_teensy41 — platform_teensy · IMXRT1062 · 600MHz · 7.75MB · 512KB — the way she ate 💅✨
  • board_teensy_teensylc — platform_teensy · MKL26Z64 · 48MHz · 62KB · 8KB 🫶 lil baby, tiny but valid
  • board_ststm32_thunder_pack — platform_ststm32 · STM32L072KZ · 32MHz · 192KB · 20KB
  • board_ststm32_hy_tinystm103tb — platform_ststm32 · STM32F103TBU6 · 72MHz · 128KB · 20KB
  • board_atmelsam_tuinozero96 — platform_atmelsam · SAMD21G18A · 48MHz · 256KB · 32KB 🌸
  • board_ststm32_vake_v1 — platform_ststm32 · STM32F446RET6 · 180MHz · 512KB · 128KB
  • board_espressif32_vintlabs-devkit-v1 — platform_espressif32 · ESP32 · 240MHz · 4MB · 320KB
  • board_espressif32_lolin_d32 — platform_espressif32 · ESP32 · 240MHz · 4MB · 320KB
  • board_espressif32_lolin_d32_pro — platform_espressif32 · ESP32 · 240MHz · 4MB · 320KB
  • board_espressif32_lolin32 — platform_espressif32 · ESP32 · 240MHz · 4MB · 320KB
  • board_nordicnrf51_waveshare_ble400 — platform_nordicnrf51 · NRF51822 · 32MHz · 256KB · 32KB 🧚
  • board_espressif32_wemos_d1_mini32 — platform_espressif32 · ESP32 · 240MHz · 4MB · 320KB
  • board_espressif32_wemosbat — platform_espressif32 · ESP32 · 240MHz · 4MB · 320KB
  • board_gd32v_wio_lite_risc-v — platform_gd32v · GD32VF103CBT6 · 108MHz · 128KB · 32KB 🌈 risc-v girlies rise

okay and that's this little chunk of the list, bestie 💖 the ESP32s are giving main character energy as per usual, the teensy 4.1 is out here with 7.75MB of flash living her best life, and the teensylc is just doing her best with 8KB. iconic behaviour all around, no notes. more boards incoming so don't touch that dial 🎀

okay bestie the roster keeps going and honestly the variety?? immaculate. same six slots every time: board id, platform, MCU, clock speed, flash, RAM. let's get into it 💖


  • board_ststm32_wraith32_v1 — platform: platform_ststm32, chip: STM32F051K6, clock: 48MHz, flash: 32KB, RAM: 7.75KB (that 7.75KB is SO specific and i respect it)
  • board_espressif32_xinabox_cw02 — platform: platform_espressif32, chip: ESP32, clock: 240MHz, flash: 4MB, RAM: 320KB ✨
  • board_nordicnrf52_hackaBLE — platform: platform_nordicnrf52, chip: NRF52832, clock: 64MHz, flash: 512KB, RAM: 64KB the name is giving hacker energy fr
  • board_nordicnrf51_ng_beacon — platform: platform_nordicnrf51, chip: NRF51822, clock: 16MHz, flash: 256KB, RAM: 32KB 🦋
  • board_espressif32_iotbusio — platform: platform_espressif32, chip: ESP32, clock: 240MHz, flash: 4MB, RAM: 320KB 🔥
  • board_espressif32_iotbusproteus — platform: platform_espressif32, chip: ESP32, clock: 240MHz, flash: 4MB, RAM: 320KB 💜

not me noticing board_espressif32_iotbusio and board_espressif32_iotbusproteus are literally twins — same platform_espressif32, same ESP32, same 240MHz, same 4MB, same 320KB 🫶 and then board_nordicnrf51_ng_beacon out here on 16MHz with 256KB flash and 32KB RAM just doing its lil thing, highkey humble of it. and board_ststm32_wraith32_v1 with STM32F051K6 at 48MHz, 32KB flash, 7.75KB RAM — baby's first microcontroller vibes, we love a compact icon 👑

the way the list just KEEPS going though?? more boards incoming, stay tuned bestie 🎀

  • Arduino for Atmel AVR
  • Arduino for Atmel megaAVR
  • Arduino for Atmel SAM
  • Arduino for Espressif 32
  • Arduino for Espressif 8266
  • Arduino for GigaDevice GD32V
  • Arduino for Infineon XMC
  • Arduino for Intel ARC32
  • Arduino for Kendryte K210
  • Arduino for Microchip PIC32
  • Arduino for Nordic nRF51
  • Arduino for Nordic nRF52
  • Arduino for ST STM32
  • Arduino for ST STM8
  • Arduino for Teensy
  • Arduino for TI MSP430
  • Arduino for TI TIVA

🌸 Platforms 🌸

okay bestie, here's the roster of platforms, with their lil glow-up descriptions 💅

  • platform_atmelavr — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming ✨
  • platform_atmelmegaavr — 8-bit MCUs Built for Real-time Control with Core Independent Peripherals combining intelligent hardware peripherals along with the low-power capability of an AVR core, megaAVR microcontrollers (MCUs) broaden the effectiveness of your real-time control systems. 🎀
  • platform_atmelsam — Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 💖
  • platform_espressif32 — Espressif Systems is a</

…a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <em>(yes bestie this is still the same entry from before, the table just wrapped, we move 💅)</em>


  • platform_espressif8266 — so Espressif Systems is a privately held fabless semiconductor company, and they make wireless communications and Wi-Fi chips that are literally everywhere — mobile devices, the Internet of Things, the whole vibe. 🦋
  • platform_gd32v — the GigaDevice GD32V is a 32-bit general-purpose microcontroller built on the RISC-V core, and it's giving an impressive balance of processing power, reduced power consumption and peripheral set. main character energy fr. 👑
  • platform_infineonxmc — Infineon designed the XMC microcontrollers for real-time critical applications with an industry-standard core. And plot twist: the XMC microcontrollers can be integrated with the Arduino platform. 🌸
  • platform_intel_arc32 — ARC embedded processors are a whole family of 32-bit CPUs, widely used in SoC devices for storage, home, mobile, automotive, and Internet of Things applications. versatile queen. ✨
  • platform_kendryte210 — Kendryte K210 is an AI capable RISCV64 dual core SoC. that's it, that's the whole flex. 🔥
  • platform_microchippic32 — Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offers high performance microcontrollers, plus all the tools you need to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! not them ending on an exclamation mark, iconic. 💖
  • platform_nordicnrf51 — the Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks, including Bluetooth Smart (previously called Bluetooth low energy), ANT, and proprietary 2.4GHz protocols such as Gazell. okay protocol buffet 🎀
  • platform_nordicnrf52 — the nRF52 Series are built for speed: carry out increasingly complex tasks in the shortest possible time, then return to sleep and conserve that precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. no cap. 💜
  • platform_ststm32 — the STM32 family of 32-bit Flash MCUs is based on the ARM Cortex-M processor and is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range combining very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation — while maintaining full integration and ease of development. the way it does everything. 😭
  • platform_ststm8 — the STM8 is an 8-bit microcontroller family by STMicroelectronics, an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller. budget bestie, we stan. 🍓
  • platform_teensy — Teensy is a complete USB-based microcontroller development system in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer needed — just a standard USB cable and a PC or Macintosh with a USB port. plug and slay. 🧚

platform_timsp430 — MSP430 microcontrollers 💜

Okay bestie, listen. The MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. Like, that's their whole personality. ✨

These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications. Thousands!! Not me being dramatic, that's literally what it says. 💅


platform_titiva — Texas Instruments TM4C12x 💖

Texas Instruments TM4C12x MCUs offer the industry's most popular ARM Cortex-M4 core, and they come with:

  • scalable memory and package options 🌸
  • unparalleled connectivity peripherals 🦋
  • advanced application functions ✨
  • industry-leading analog integration 👑
  • extensive software solutions 💜

It's giving everything at once, fr fr.


Boards 🎀

NOTE: bestie, read this before you scroll, it'll save you.
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer 🔍
  • For more detailed board information please scroll the tables below by horizontally. Yes, horizontally. I know. The vibes are wide. 🙈

4D Systems 🦋

  • board_microchippic32_picadillo_35t — platform: platform_microchippic32 · debug: No · MCU: 32MX795F512L · frequency: 80MHz · flash: 508KB · RAM: 128KB
  • board_espressif8266_gen4iod — platform: platform_espressif8266 · debug: No · MCU: ESP8266 · frequency: 80MHz · flash: 512KB · RAM: 80KB

AI Thinker 🧚

  • board_espressif32_esp32cam — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

AZ-Delivery 🍓

  • board_espressif32_az-delivery-devkit-v4 — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 16MB · RAM: 520KB

Adafruit 💜

  • board_atmelavr_bluefruitmicro — platform: platform_atmelavr · debug: On-board · MCU: ATMEGA32U4 · frequency: 8MHz · flash: 28KB · RAM: 2.50KB
  • board_nordicnrf52_adafruit_feather_nrf52832 — platform: platform_nordicnrf52 · debug: External · MCU: NRF52832 · frequency: 64MHz · flash: 512KB · RAM: 64KB
  • board_atmelavr_circuitplay_classic — platform: platform_atmelavr · debug: On-board · MCU: ATMEGA32U4 · frequency: 8MHz · flash: 28KB · RAM: 2.50KB
  • board_atmelsam_adafruit_circuitplayground_m0 — platform: platform_atmelsam · debug: External · MCU: SAMD21G18A · frequency: 48MHz · flash: 256KB · RAM: 32KB
  • board_atmelsam_adafruit_crickit_m0 — platform: platform_atmelsam · debug: External · MCU: SAMD21G18A · frequency: 48MHz · flash: 256KB · RAM: 32KB
  • board_espressif32_featheresp32 — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

The Adafruit lineup is lowkey stacked — we got AVR, we got Nordic, we got SAM, we got ESP32. Variety queen. 👑

okay bestie the board table said "no ❌ we are NOT done" so here we go, part two of the Adafruit-adjacent moment 💅 same columns, same energy, all the numbers exactly where they were:

  • board_atmelavr_feather328p — platform platform_atmelavr, that middle field says On-board, MCU ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB ✨
  • board_atmelavr_feather32u4 — platform platform_atmelavr, On-board, MCU ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB
  • board_nordicnrf52_adafruit_feather_nrf52840_sense — platform platform_nordicnrf52, External, MCU NRF52840, 64MHz, flash 796KB, RAM 243KB 🦋
  • board_atmelsam_adafruit_feather_m0 — platform platform_atmelsam, External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelsam_adafruit_feather_m0_express — platform platform_atmelsam, External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelsam_adafruit_feather_m4 — platform platform_atmelsam, External, MCU SAMD51J19A, 120MHz, flash 512KB, RAM 192KB 🔥
  • board_ststm32_adafruit_feather_f405 — platform platform_ststm32, External, MCU STM32F405RGT6, 168MHz, flash 1MB, RAM 128KB
  • board_nordicnrf52_adafruit_feather_nrf52840 — platform platform_nordicnrf52, External, MCU NRF52840, 64MHz, flash 796KB, RAM 243KB
  • board_atmelavr_flora8 — platform platform_atmelavr, On-board, MCU ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB 🌸
  • board_atmelavr_gemma — platform platform_atmelavr, On-board, MCU ATTINY85, 8MHz, flash 8KB, RAM 512B
okay tiny bestie alert 🚨 board_atmelavr_gemma has 512B of RAM. that is not a typo, that is a lifestyle. be nice to her.
  • board_atmelsam_adafruit_gemma_m0 — platform platform_atmelsam, External, MCU SAMD21E18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelsam_adafruit_grandcentral_m4 — platform platform_atmelsam, External, MCU SAMD51P20A, 120MHz, flash 1MB, RAM 256KB 👑
  • board_espressif8266_huzzah — platform platform_espressif8266, and this one's field literally just says No (not "External", not "On-board", just No — she said what she said 💀), MCU ESP8266, 80MHz, flash 4MB, RAM 80KB
  • board_atmelsam_adafruit_hallowing — platform platform_atmelsam, External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelsam_adafruit_hallowing_m4 — platform platform_atmelsam, External, MCU SAMD51J19A, 120MHz, flash 496KB, RAM 192KB
  • board_atmelavr_itsybitsy32u4_3V — platform platform_atmelavr, On-board, MCU ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB
  • board_atmelavr_itsybitsy32u4_5V — platform platform_atmelavr, On-board, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB ⭐
  • board_atmelsam_adafruit_itsybitsy_m0 — platform platform_atmelsam, External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelsam_adafruit_itsybitsy_m4 — platform platform_atmelsam, External, MCU SAMD51G19A, 120MHz, flash 512KB, RAM 192KB
  • board_atmelsam_adafruit_monster_m4sk — platform platform_atmelsam, External, MCU SAMD51G19A, 120MHz, flash 496KB, RAM 192KB 🧚
  • board_atmelavr_metro — platform platform_atmelavr, On-board, MCU ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB

and bestie the table is still not done, the rows keep coming like a group chat at 2am, so hold that thought 💖

okay so we're still in the board list and it literally never ends and honestly?? iconic behavior, every one of these little guys gets their moment 💅

  • board_atmelsam_adafruit_metro_m0 — platform_atmelsam · External · SAMD21G18A · 48MHz · 256KB · 32KB 🌸
  • board_atmelsam_adafruit_metro_m4 — platform_atmelsam · External · SAMD51J19A · 120MHz · 512KB · 192KB ✨
  • board_atmelsam_adafruit_metro_m4_airliftlite — platform_atmelsam · External · SAMD51J19A · 120MHz · 512KB · 192KB 💖
  • board_atmelavr_protrinket3ftdi — platform_atmelavr · On-board · ATMEGA328P · 12MHz · 28KB · 2KB 🎀
  • board_atmelavr_protrinket3 — platform_atmelavr · On-board · ATMEGA328P · 12MHz · 28KB · 2KB 🦋
  • board_atmelavr_protrinket5ftdi — platform_atmelavr · On-board · ATMEGA328P · 16MHz · 28KB · 2KB 🌈
  • board_atmelavr_protrinket5 — platform_atmelavr · On-board · ATMEGA328P · 16MHz · 28KB · 2KB ⭐
  • board_atmelsam_adafruit_pygamer_advance_m4 — platform_atmelsam · External · SAMD51J20A · 120MHz · 1MB · 256KB 🔥
  • board_atmelsam_adafruit_pygamer_m4 — platform_atmelsam · External · SAMD51J19A · 120MHz · 512KB · 192KB 💜
  • board_atmelsam_adafruit_pyportal_m4 — platform_atmelsam · External · SAMD51J20A · 120MHz · 1MB · 256KB 🫶
  • board_atmelsam_adafruit_pyportal_m4_titano — platform_atmelsam · External · SAMD51J20A · 120MHz · 1MB · 256KB 😭
  • board_atmelsam_adafruit_trellis_m4 — platform_atmelsam · External · SAMD51J19A · 120MHz · 512KB · 192KB 🧚
  • board_atmelavr_trinket3 — platform_atmelavr · On-board · ATTINY85 · 8MHz · 8KB · 512B 🍓
  • board_atmelavr_trinket5 — platform_atmelavr · On-board · ATTINY85 · 16MHz · 8KB · 512B 🌸
  • board_atmelsam_adafruit_trinket_m0 — platform_atmelsam · External · SAMD21E18A · 48MHz · 256KB · 32KB ✨
  • board_atmelsam_adafruit_pirkey — platform_atmelsam · External · SAMD21E18A · 48MHz · 256KB · 32KB 🎀
  • board_atmelsam_adafruit_pybadge_airlift_m4 — platform_atmelsam · External · SAMD51J20A · 120MHz · 1008KB · 192KB 👑
  • board_atmelsam_adafruit_pybadge_m4 — platform_atmelsam · External · SAMD51J19A · 120MHz · 512KB · 192KB 💖
  • board_nordicnrf52_adafruit_cplaynrf52840 — platform_nordicnrf52 · External · NRF52840 · 64MHz · 796KB · 243KB 🦋
  • board_nordicnrf52_adafruit_itsybitsy_nrf52840 — platform_nordicnrf52 · On-board · NRF52840 · 64MHz · 796KB · 243KB 🌈
  • board_nordicnrf52_adafruit_metro_nrf52840 — platform_nordicnrf52 · External · NRF52840 · 64MHz · 796KB · 243KB ⭐

and yes the list is still going, we are NOT done, stay with me bestie 💜

└───────────────────────────────────────────────────┴────────────────────────┴──────────┴───────────────┴───────────┴─────────┴────────┘

✨ AfroFlight ✨

okay so this one's flying solo with exactly one board, and she's a whole mood:

  • board_ststm32_afroflight_f103cb — platform: platform_ststm32, debug: External, MCU: STM32F103CBT6, frequency: 72MHz, flash: 128KB, RAM: 20KB 🛩️

🦋 Airbot 🦋

one board, tiny but fierce:

  • board_ststm32_wraith32_v1 — platform: platform_ststm32, debug: External, MCU: STM32F051K6, frequency: 48MHz, flash: 32KB, RAM: 7.75KB 💫

🌸 Aiyarafun 🌸

just the one, and she's giving ESP32 main character energy:

  • board_espressif32_node32s — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB 🔥

🧚 Alorium Technology 🧚

three boards and they're literally all twinning — same MCU, same speed, same flash, same RAM. iconic sibling behavior fr fr:

  • board_atmelavr_alorium_hinj — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA328P, frequency: 16MHz, flash: 31.50KB, RAM: 2KB
  • board_atmelavr_alorium_sno — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA328P, frequency: 16MHz, flash: 31.50KB, RAM: 2KB
  • board_atmelavr_alorium_xlr8 — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA328P, frequency: 16MHz, flash: 31.50KB, RAM: 2KB 💅

🎀 Amperka 🎀

ngl this vendor's table got rendered as plain text instead of the fancy box, but bestie, the data is the data and we are NOT losing a single crumb of it:

  • board_espressif8266_wifi_slot — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB 🌈

👑 Anarduino 👑

listen, the source table here is genuinely unhinged — boxes inside boxes, headers stacked on headers, it's giving corrupted spreadsheet core. but we persevere 💪 and here's the board:

  • board_atmelavr_miniwireless — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA328P, frequency: 16MHz, flash: 31.50KB, RAM: 2KB 🍓

⭐ April Brother ⭐

yes that is genuinely the name, and yes it goes hard. one board:

  • board_espressif32_espea32 — platform: platform_espressif32, debug: No, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB 🫶

💜 Arduboy 💜

okay the original table for this one is honestly a mess — there's a column that just kind of... wanders off the edge 🫠 but the boards are real and the specs are clear, so here:

  • board_atmelavr_arduboy — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA32U4, frequency: 16MHz, flash: 28KB, RAM: 2.50KB 🕹️
  • board_atmelavr_arduboy_devkit — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA32U4, frequency: 16MHz, flash: 28KB, RAM: 2.50KB 🕹️
heads up bestie: if the ASCII boxes look cursed in your terminal, that's just how the source renders — the name, platform, debug, MCU, frequency, flash and RAM values above are transcribed exactly as they appear. no cap. 🙈
  • board_atmelavr_btatmega168 — platform platform_atmelavr · debug: On-board · MCU ATMEGA168 · 16MHz · flash 14KB · RAM 1KB 🌸
  • board_atmelavr_btatmega328 — platform platform_atmelavr · debug: On-board · MCU ATMEGA328P · 16MHz · flash 28KB · RAM 2KB ✨
  • board_atmelsam_due — platform platform_atmelsam · debug: External · MCU AT91SAM3X8E · 84MHz · flash 512KB · RAM 96KB 💅 (yeah she's the big one in this lineup, no cap)
  • board_atmelsam_dueUSB — platform platform_atmelsam · debug: External · MCU AT91SAM3X8E · 84MHz · flash 512KB · RAM 96KB 💅
  • board_atmelavr_diecimilaatmega168 — platform platform_atmelavr · debug: On-board · MCU ATMEGA168 · 16MHz · flash 14KB · RAM 1KB 🎀
  • board_atmelavr_diecimilaatmega328 — platform platform_atmelavr · debug: On-board · MCU ATMEGA328P · 16MHz · flash 30KB · RAM 2KB 🎀
  • board_atmelavr_esplora — platform platform_atmelavr · debug: On-board · MCU ATMEGA32U4 · 16MHz · flash 28KB · RAM 2.50KB 🦋
  • board_atmelavr_ethernet — platform platform_atmelavr · debug: On-board · MCU ATMEGA328P · 16MHz · flash 31.50KB · RAM 2KB 🦋
  • board_atmelavr_fio — platform platform_atmelavr · debug: On-board · MCU ATMEGA328P · 8MHz · flash 30KB · RAM 2KB 🌈
  • board_atmelavr_chiwawa — platform platform_atmelavr · debug: On-board · MCU ATMEGA32U4 · 16MHz · flash 28KB · RAM 2.50KB 🐣
  • board_atmelavr_leonardo — platform platform_atmelavr · debug: On-board · MCU ATMEGA32U4 · 16MHz · flash 28KB · RAM 2.50KB 👑
  • board_atmelavr_leonardoeth — platform platform_atmelavr · debug: On-board · MCU ATMEGA32U4 · 16MHz · flash 28KB · RAM 2.50KB 👑
  • board_atmelavr_lilypadatmega168 — platform platform_atmelavr · debug: On-board · MCU ATMEGA168 · 8MHz · flash 14KB · RAM 1KB 🧚
  • board_atmelavr_lilypadatmega328 — platform platform_atmelavr · debug: On-board · MCU ATMEGA328P · 8MHz · flash 30KB · RAM 2KB 🧚
  • board_atmelavr_LilyPadUSB — platform platform_atmelavr · debug: On-board · MCU ATMEGA32U4 · 8MHz · flash 28KB · RAM 2.50KB 🧚✨
  • board_atmelsam_mzeroUSB — platform platform_atmelsam · debug: External · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 🍓
  • board_atmelsam_mzeroproUSB — platform platform_atmelsam · debug: External · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 🍓
  • board_atmelsam_mzeropro — platform platform_atmelsam · debug: On-board · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 🍓💖
  • board_atmelsam_mkrfox1200 — platform platform_atmelsam · debug: External · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 🦊
  • board_atmelsam_mkrgsm1400 — platform platform_atmelsam · debug: External · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 📶
  • board_atmelsam_mkrnb1500 — platform platform_atmelsam · debug: External · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 📡
  • board_atmelsam_mkrwan1300 — platform platform_atmelsam · debug: External · MCU SAMD21G18A · 48MHz · flash 256KB · RAM 32KB 🌐
  • board_atmelsam_mkrwan1310 — lives in platform_atmelsam, marked External, rocking a SAMD21G18A at 48MHz, 256KB of flash and 32KB of RAM 💜
  • board_atmelsam_mkrwifi1010 — also platform_atmelsam, External, SAMD21G18A, 48MHz, 256KB flash, 32KB RAM ✨
  • board_atmelsam_mkr1000USB — platform_atmelsam again bestie, External, SAMD21G18A, 48MHz, 256KB flash, 32KB RAM 🦋
  • board_atmelsam_mkrzero — platform_atmelsam, External, SAMD21G18A, 48MHz, 256KB flash, 32KB RAM 🌸
  • board_atmelavr_megaADK — platform_atmelavr, On-board, ATMEGA2560 at 16MHz, 248KB flash, 8KB RAM 👑
  • board_atmelavr_megaatmega1280 — platform_atmelavr, On-board, ATMEGA1280, 16MHz, 124KB flash, 8KB RAM 💅
  • board_atmelavr_megaatmega2560 — platform_atmelavr, On-board, ATMEGA2560, 16MHz, 248KB flash, 8KB RAM 🔥
  • board_atmelavr_micro — platform_atmelavr, On-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM 🎀
  • board_atmelavr_miniatmega168 — platform_atmelavr, On-board, ATMEGA168, 16MHz, 14KB flash, 1KB RAM ⭐
  • board_atmelavr_miniatmega328 — platform_atmelavr, On-board, ATMEGA328P, 16MHz, 28KB flash, 2KB RAM 🌈
  • board_atmelavr_atmegangatmega168 — platform_atmelavr, On-board, ATMEGA168, 16MHz, 14KB flash, 1KB RAM 🍓
  • board_atmelavr_atmegangatmega8 — platform_atmelavr, On-board, ATMEGA8, 16MHz, 7KB flash, 1KB RAM 🙈
  • board_nordicnrf52_nano33ble — platform_nordicnrf52, External, NRF52840 running at 64MHz, 960KB flash, 256KB RAM 🧚
  • board_atmelavr_nanoatmega168 — platform_atmelavr, On-board, ATMEGA168, 16MHz, 14KB flash, 1KB RAM 💖
  • board_atmelavr_nanoatmega328 — platform_atmelavr, On-board, ATMEGA328P, 16MHz, 30KB flash, 2KB RAM ✨
  • board_atmelavr_nanoatmega328new — platform_atmelavr, On-board, ATMEGA328P, 16MHz, 30KB flash, 2KB RAM 🦋
  • board_atmelmegaavr_nano_every — platform_atmelmegaavr, and this one's marker column just says No with the next column left blank, ATMEGA4809, 16MHz, 47.50KB flash, 6KB RAM 🌸
  • board_atmelavr_pro8MHzatmega168 — platform_atmelavr, On-board, ATMEGA168 at 8MHz, 14KB flash, 1KB RAM 💜
  • board_atmelavr_pro16MHzatmega168 — platform_atmelavr, On-board, ATMEGA168 at 16MHz, 14KB flash, 1KB RAM 👑
  • board_atmelavr_pro8MHzatmega328 — platform_atmelavr, On-board, ATMEGA328P at 8MHz, 30KB flash, 2KB RAM 💅
  • board_atmelavr_pro16MHzatmega328 — platform_atmelavr, On-board, ATMEGA328P at 16MHz, 30KB flash, 2KB RAM 🔥
  • board_atmelavr_robotControl — platform_atmelavr, On-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM 🎀
  • board_atmelavr_robotMotor — platform_atmelavr, On-board, ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM ⭐
  • board_atmelsam_tian — platform_atmelsam, External, SAMD21G18A, 48MHz, 256KB flash, 32KB RAM 🌈

  • board_atmelavr_uno — platform platform_atmelavr, debug On-board, MCU ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB
  • board_atmelmegaavr_uno_wifi_rev2 — platform platform_atmelmegaavr, debug No, MCU ATMEGA4809, 16MHz, flash 47.50KB, RAM 6KB
  • board_atmelavr_yun — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB
  • board_atmelavr_yunmini — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB
  • board_atmelsam_zero — platform platform_atmelsam, debug On-board, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelsam_zeroUSB — platform platform_atmelsam, debug External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelsam_mkrvidor4000 — platform platform_atmelsam, debug External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelsam_nano_33_iot — platform platform_atmelsam, debug External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB

🏹 Armed

okay bestie new category just dropped, and it's literally one (1) icon holding it down 💅

  • board_ststm32_armed_v1 — platform platform_ststm32, debug External, MCU STM32F407VET6, 168MHz, flash 512KB, RAM 192KB

🧚 Atmel

and now we enter the Atmel zone, aka the land of the tiny tinies 🦋 some of these MCUs have, like, 64B of RAM and I need you to sit with that for a second. sixty-four. bytes. not me being obsessed with how small that is 😭

  • board_atmelsam_samd21g18a — platform platform_atmelsam, debug On-board, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelavr_attiny13 — platform platform_atmelavr, debug On-board, MCU ATTINY13, 1MHz, flash 1KB, RAM 64B
  • board_atmelavr_attiny13a — platform platform_atmelavr, debug On-board, MCU ATTINY13A, 1MHz, flash 1KB, RAM 64B
  • board_atmelavr_attiny1634 — platform platform_atmelavr, debug No, MCU ATTINY1634, 8MHz, flash 16KB, RAM 1KB
  • board_atmelavr_attiny167 — platform platform_atmelavr, debug No, MCU ATTINY167, 8MHz, flash 16KB, RAM 512B
  • board_atmelavr_attiny2313 — platform platform_atmelavr, debug On-board, MCU ATTINY2313, 8MHz, flash 2KB, RAM 128B
  • board_atmelavr_attiny24 — platform platform_atmelavr, debug On-board, MCU ATTINY24, 8MHz, flash 2KB, RAM 128B
  • board_atmelavr_attiny25 — platform platform_atmelavr, debug On-board, MCU ATTINY25, 8MHz, flash 2KB, RAM 128B
  • board_atmelavr_attiny261 — platform platform_atmelavr, debug No, MCU ATTINY261, 8MHz, flash 2KB, RAM 128B
  • board_atmelavr_attiny4313 — platform platform_atmelavr, debug On-board, MCU ATTINY4313, 8MHz, flash 4KB, RAM 256B
  • board_atmelavr_attiny43 — platform platform_atmelavr, debug No, MCU ATTINY43U, 8MHz, flash 4KB, RAM 256B
  • board_atmelavr_attiny44 — platform platform_atmelavr, debug On-board, MCU ATTINY44, 8MHz, flash 4KB, RAM 256B
  • board_atmelavr_attiny441 — platform platform_atmelavr, debug No, MCU ATTINY441, 8MHz, flash 4KB, RAM 256B
  • board_atmelavr_attiny45 — platform platform_atmelavr, debug: On-board, MCU ATTINY45, 8MHz, Flash 4KB, RAM 256B
  • board_atmelavr_attiny461 — platform platform_atmelavr, debug: No, MCU ATTINY461, 8MHz, Flash 4KB, RAM 256B
  • board_atmelavr_attiny48 — platform platform_atmelavr, debug: No, MCU ATTINY48, 8MHz, Flash 4KB, RAM 256B
  • board_atmelavr_attiny828 — platform platform_atmelavr, debug: No, MCU ATTINY828, 8MHz, Flash 8KB, RAM 512B
  • board_atmelavr_attiny84 — platform platform_atmelavr, debug: On-board, MCU ATTINY84, 8MHz, Flash 8KB, RAM 512B
  • board_atmelavr_attiny841 — platform platform_atmelavr, debug: No, MCU ATTINY841, 8MHz, Flash 8KB, RAM 512B
  • board_atmelavr_attiny85 — platform platform_atmelavr, debug: On-board, MCU ATTINY85, 8MHz, Flash 8KB, RAM 512B
  • board_atmelavr_attiny861 — platform platform_atmelavr, debug: No, MCU ATTINY861, 8MHz, Flash 8KB, RAM 512B
  • board_atmelavr_attiny87 — platform platform_atmelavr, debug: No, MCU ATTINY87, 8MHz, Flash 8KB, RAM 512B
  • board_atmelavr_attiny88 — platform platform_atmelavr, debug: No, MCU ATTINY88, 8MHz, Flash 8KB, RAM 512B
  • board_atmelavr_usbasp — platform platform_atmelavr, debug: On-board, MCU ATMEGA8, 12MHz, Flash 8KB, RAM 1KB

🌈 BBC 🌈

bestie the BBC section is literally just ONE board and it's the cutest little thing 💖

  • board_nordicnrf51_bbcmicrobit — platform platform_nordicnrf51, debug: On-board, MCU NRF51822, 16MHz, Flash 256KB, RAM 16KB

🧚 BOXTEC 🧚

okay and now the BOXTEC crew 🎀 all platform_microchippic32, none of them do debug (no shade, they just said No 💅), and they all vibe at 48MHz:

  • board_microchippic32_helvepic32 — platform platform_microchippic32, debug: No, MCU 32MX250F128B, 48MHz, Flash 120KB, RAM 32KB
  • board_microchippic32_helvepic32_breadboardside — platform platform_microchippic32, debug: No, MCU 32MX250F128B, 48MHz, Flash 120KB, RAM 32KB
  • board_microchippic32_helvepic32_smd — platform platform_microchippic32, debug: No, MCU 32MX250F128D, 48MHz, Flash 120KB, RAM 32KB
  • board_microchippic32_helvepic32_mx270 — platform platform_microchippic32, debug: No, MCU 32MX270F256B, 48MHz, Flash 244KB, RAM 62KB
  • board_microchippic32_helvepic32_robot — platform platform_microchippic32, debug: No, MCU 32MX270F256D, 48MHz, Flash 244KB, RAM 62KB
  • board_microchippic32_helvepic32_smd_mx270 — platform platform_microchippic32, debug: No, MCU 32MX270F256D, 48MHz, Flash 244KB, RAM 62KB

🦋 BPI Tech

  • board_espressif32_bpi-bit — platform is platform_espressif32, debug is No (so no on-board debugger bestie, you're on your own with that one 😭), MCU is ESP32, frequency is 160MHz, flash is 4MB and RAM is 320KB. That's a whole lotta RAM for an ESP32, we love to see it ✨

🍓 BQ

  • board_atmelavr_zumbt328 — platform is platform_atmelavr, debug is On-board, MCU is ATMEGA328P, frequency is 16MHz, flash is 28KB, RAM is 2KB. Tiny but mighty, it's giving classic Arduino energy fr fr 💅

🌸 BSFrance

  • board_atmelavr_lora32u4II — platform is platform_atmelavr, debug is On-board, MCU is ATMEGA32U4, frequency is 8MHz, flash is 28KB, RAM is 2.50KB. The 2.50KB is so specific and honestly? iconic 🎀

⭐ BitWizard

  • board_atmelavr_raspduino — platform is platform_atmelavr, debug is On-board, MCU is ATMEGA328P, frequency is 16MHz, flash is 30KB, RAM is 2KB. Thirty KB of flash instead of twenty-eight?? main character behaviour tbh 👑

💜 BluzDK

  • board_nordicnrf51_bluz_dk — platform is platform_nordicnrf51, debug is External (so not built in, you'll need extra hardware for that vibe check), MCU is NRF51822, frequency is 32MHz, flash is 256KB, RAM is 32KB. Look at that flash size, we are OBSESSED 💖

🧚 Calliope

  • board_nordicnrf51_calliope_mini — platform is platform_nordicnrf51, debug is On-board, MCU is NRF51822, frequency is 16MHz, flash is 256KB, RAM is 16KB. Same chip as the BluzDK but half the clock speed and half the RAM — still serving though 🌈

🔥 ChipKIT

  • board_microchippic32_rgb_station — platform is platform_microchippic32, debug is No, MCU is 32MX270F256D, frequency is 48MHz, flash is 240KB, RAM is 62KB. PIC32 representation!! no cap, that 62KB of RAM is lowkey flexing on everyone else here 😭

🎀 Controllino

  • board_atmelavr_controllino_maxi — platform is platform_atmelavr, debug is On-board, MCU is ATMEGA2560, frequency is 16MHz, flash is 248KB, RAM is 8KB. Big board energy, the ATMEGA2560 is literally the "2560" of it all and we respect it 🫶
  • board_atmelavr_controllino_maxi_automation — platform platform_atmelavr · debug On-board · MCU ATMEGA2560 · 16MHz · flash 248KB · RAM 8KB
  • board_atmelavr_controllino_mega — platform platform_atmelavr · debug On-board · MCU ATMEGA2560 · 16MHz · flash 248KB · RAM 8KB
  • board_atmelavr_controllino_mini — platform platform_atmelavr · debug On-board · MCU ATMEGA328P · 16MHz · flash 31.50KB · RAM 2KB

🌸 DFRobot 🌸

okay this section is SHORT and I love that for us, one (1) board, she's serving:

  • board_espressif32_firebeetle32 — platform platform_espressif32 · debug External · MCU ESP32 · 240MHz · flash 4MB · RAM 320KB

literally just the FireBeetle32 and honestly? she ate. 💅


✨ DOIT ✨

another solo queen, no notes:

  • board_espressif32_esp32doit-devkit-v1 — platform platform_espressif32 · debug External · MCU ESP32 · 240MHz · flash 4MB · RAM 320KB

bestie the devkit v1 is like, THE starter board for half the planet, iconic behaviour fr fr 🫶


🦋 DSTIKE 🦋

one board, very hacker-girl energy, we love:

  • board_espressif32_d-duino-32 — platform platform_espressif32 · debug External · MCU ESP32 · 240MHz · flash 4MB · RAM 320KB

💜 Delta 💜

one board, Nordic, and she's on-board debug which is lowkey a flex:

  • board_nordicnrf52_delta_dfbm_nq620 — platform platform_nordicnrf52 · debug On-board · MCU NRF52832 · 64MHz · flash 512KB · RAM 64KB

🎀 DigiStump 🎀

ONE. BOARD. and she said No to debug, so if you were hoping to step through your code, uh, thoughts and prayers:

  • board_espressif8266_oak — platform platform_espressif8266 · debug No · MCU ESP8266 · 80MHz · flash 4MB · RAM 80KB

🌈 Digilent 🌈

okay now THIS is a trio, all PIC32, all No debug — so no fancy breakpoints here, we're raw-dogging it with serial prints and vibes 😭:

  • board_microchippic32_cerebot32mx4 — platform platform_microchippic32 · debug No · MCU 32MX460F512L · 80MHz · flash 508KB · RAM 32KB
  • board_microchippic32_cerebot32mx7 — platform platform_microchippic32 · debug No · MCU 32MX795F512L · 80MHz · flash 508KB · RAM 128KB
  • board_microchippic32_openscope — platform platform_microchippic32 · debug No · MCU 32MZ2048EFG124 · 200MHz · flash 1.98MB · RAM 512KB

and yes the OpenScope is out here at 200MHz with 1.98MB of flash looking like the main character of the whole Digilent lineup 👑 not me double-checking that 508KB twice — it's 508KB on both Cerebots, that's just what it is, no cap.

  • board_microchippic32_chipkit_cmod — platform platform_microchippic32, debug: No, MCU 32MX150F128D, 40MHz, flash 124KB, RAM 32KB 💖
  • board_microchippic32_chipkit_dp32 — platform platform_microchippic32, debug: No, MCU 32MX250F128B, 40MHz, flash 120KB, RAM 32KB ✨
  • board_microchippic32_mega_pic32 — platform platform_microchippic32, debug: No, MCU 32MX795F512L, 80MHz, flash 508KB, RAM 128KB 🎀
  • board_microchippic32_chipkit_mx3 — platform platform_microchippic32, debug: No, MCU 32MX320F128H, 80MHz, flash 124KB, RAM 16KB 🦋
  • board_microchippic32_chipkit_pro_mx4 — platform platform_microchippic32, debug: No, MCU 32MX460F512L, 80MHz, flash 508KB, RAM 32KB 🌸
  • board_microchippic32_chipkit_pro_mx7 — platform platform_microchippic32, debug: No, MCU 32MX795F512L, 80MHz, flash 508KB, RAM 128KB 💅
  • board_microchippic32_uno_pic32 — platform platform_microchippic32, debug: No, MCU 32MX320F128H, 80MHz, flash 124KB, RAM 16KB 🫶
  • board_microchippic32_chipkit_wf32 — platform platform_microchippic32, debug: No, MCU 32MX695F512L, 80MHz, flash 508KB, RAM 128KB 😭
  • board_microchippic32_chipkit_wifire — platform platform_microchippic32, debug: No, MCU 32MZ2048ECG100, 200MHz, flash 1.98MB, RAM 512KB 🔥
  • board_microchippic32_chipkit_uc32 — platform platform_microchippic32, debug: No, MCU 32MX340F512H, 80MHz, flash 508KB, RAM 32KB 👑
  • board_microchippic32_chipkit_wifire_revc — platform platform_microchippic32, debug: No, MCU 32MZ2048EFG100, 200MHz, flash 1.98MB, RAM 512KB 🌈

🧸 Digistump 🧸

  • board_atmelavr_digispark-pro — platform platform_atmelavr, debug: No, MCU ATTINY167, 16MHz, flash 14.50KB, RAM 512B ⭐
  • board_atmelavr_digispark-pro64 — platform platform_atmelavr, debug: No, MCU ATTINY167, 16MHz, flash 14.50KB, RAM 512B 💀
  • board_atmelavr_digispark-pro32 — platform platform_atmelavr, debug: No, MCU ATTINY167, 16MHz, flash 14.50KB, RAM 512B 🙈
  • board_atmelavr_digispark-tiny — platform platform_atmelavr, debug: On-board, MCU ATTINY85, 16MHz, flash 5.87KB, RAM 512B 🍓
  • board_atmelsam_digix — platform platform_atmelsam, debug: External, MCU AT91SAM3X8E, 84MHz, flash 512KB, RAM 96KB 🧚

🌟 Diymore 🌟

  • board_ststm32_diymore_f407vgt — platform platform_ststm32, debug: External, MCU STM32F407VGT6, 168MHz, flash 512KB, RAM 128KB 💜

💫 Doit 💫

okay bestie, next up we got the Doit family, and the columns for this one are, in order:

  • Name
  • Platform
  • Debug
  • MCU
  • Frequency
  • Flash
  • RAM
  • board_espressif8266_espmxdevkit — platform: platform_espressif8266; debug: No; MCU: ESP8266; frequency: 80MHz; flash: 1MB; RAM: 80KB 🦋
  • board_espressif8266_espduino — platform: platform_espressif8266; debug: No; MCU: ESP8266; frequency: 80MHz; flash: 4MB; RAM: 80KB 💖

🌸 Dongsen Technology 🌸

  • board_espressif32_pocket_32 — platform: platform_espressif32; debug: External; MCU: ESP32; frequency: 240MHz; flash: 4MB; RAM: 320KB ✨

🎀 Dwengo 🎀

  • board_atmelavr_dwenguino — platform: platform_atmelavr; debug: No; MCU: AT90USB646; frequency: 16MHz; flash: 60KB; RAM: 2KB 🫶

💅 DycodeX 💅

  • board_espressif8266_espectro — platform: platform_espressif8266; debug: No; MCU: ESP8266; frequency: 80MHz; flash: 4MB; RAM: 80KB 💜
  • board_espressif32_espectro32 — platform: platform_espressif32; debug: External; MCU: ESP32; frequency: 240MHz; flash: 4MB; RAM: 320KB 🌈

👑 ESP32vn 👑

  • board_espressif32_esp32vn-iot-uno — platform: platform_espressif32; debug: External; MCU: ESP32; frequency: 240MHz; flash: 4MB; RAM: 320KB 🔥

🧚 ESPert 🧚

  • board_espressif8266_espresso_lite_v1 — platform: platform_espressif8266; debug: No; MCU: ESP8266; frequency: 80MHz; flash: 4MB; RAM: 80KB 🍓
  • board_espressif8266_espresso_lite_v2 — platform: platform_espressif8266; debug: No; MCU: ESP8266; frequency: 80MHz; flash: 4MB; RAM: 80KB 💖

✨ ESPino ✨

  • board_espressif8266_espino — platform: platform_espressif8266 · debug: No · MCU: ESP8266 · frequency: 80MHz · flash: 4MB · RAM: 80KB 🫶

🌈 Electronic SweetPeas 🌈

  • board_espressif32_esp320 — platform: platform_espressif32 · debug: No · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB ✨

💜 Electronut Labs 💜

  • board_nordicnrf52_bluey — platform: platform_nordicnrf52 · debug: External · MCU: NRF52832 · frequency: 64MHz · flash: 512KB · RAM: 64KB
  • board_nordicnrf52_hackaBLE — platform: platform_nordicnrf52 · debug: External · MCU: NRF52832 · frequency: 64MHz · flash: 512KB · RAM: 64KB

no cap, two whole NRF52832 girlies with the same spec sheet — sisters fr fr 💅


🎀 Elektor 🎀

  • board_atmelavr_elektor_uno_r4 — platform: platform_atmelavr · debug: No · MCU: ATMEGA328PB · frequency: 16MHz · flash: 31.50KB · RAM: 2KB

the way that flash is literally 31.50KB and not a crumb more 😭 precision queen


🦋 Engduino 🦋

  • board_atmelavr_engduinov3 — platform: platform_atmelavr · debug: On-board · MCU: ATMEGA32U4 · frequency: 8MHz · flash: 28KB · RAM: 2.50KB

on-board debugger?? we love a self-sufficient icon 👑


🌸 EnviroDIY 🌸

  • board_atmelavr_mayfly — platform: platform_atmelavr · debug: On-board · MCU: ATMEGA1284P · frequency: 8MHz · flash: 127KB · RAM: 16KB

ngl 127KB flash and 16KB RAM on an ATMEGA1284P is giving absolute unit 🫶


👑 Espressif 👑

  • board_espressif8266_esp_wroom_02 — platform: platform_espressif8266 · debug: No · MCU: ESP8266 · frequency: 80MHz · flash: 2MB · RAM: 80KB
  • board_espressif32_pico32 — platform: platform_espressif32 · debug: No · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB
  • board_espressif32_esp-wrover-kit — platform: platform_espressif32 · debug: On-board · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB
  • board_espressif32_esp32dev — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

okay so the Espressif section is stacked 🔥 three of these are platform_espressif32 with ESP32 at 240MHz, 4MB flash, 320KB RAM — the only difference is how you debug them:

  1. board_espressif32_pico32 → debug: No 💀
  2. board_espressif32_esp-wrover-kit → debug: On-board 🎀
  3. board_espressif32_esp32dev → debug: External 🦋

and then there's board_espressif8266_esp_wroom_02 lowkey doing its own ESP8266 thing at 80MHz with 2MB flash / 80KB RAM ✨ iconic behavior, honestly


bestie reminder: every one of these is a board_* identifier you'd drop straight into your config — copy them character for character, dashes and all (yes, even esp-wrover-kit with the hyphens, and yes even hackaBLE with the chaotic capital letters, we don't question the naming 💅)

espressif8266, continued ✨ (yes bestie there are MORE of them, we're not done)

  • board_espressif8266_esp12e — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_esp01_1m — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_esp01 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 512KB · RAM: 80KB
  • board_espressif8266_esp07 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_esp8285 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_phoenix_v1 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_phoenix_v2 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_wifinfo — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB

okay so notice how not a single one of these has a debug option 💀 they're all just out here vibing at 80MHz with their 80KB of RAM. consistency icon behavior honestly 🫶


FYSETC 🎀

  • board_atmelavr_fysetc_f6_13 — Platform: platform_atmelavr · Debug: On-board · MCU: ATMEGA2560 · Frequency: 16MHz · Flash: 252KB · RAM: 8KB

one (1) singular FYSETC board, and she's got On-board debug which is lowkey iconic of her. 252KB of flash, 8KB of RAM, 16MHz. she's not fast but she is thorough, and the debug situation is built in so no extra hardware, slay 💅


Fred 🐸

  • board_espressif32_frogboard — Platform: platform_espressif32 · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

it's giving frog board 🐸 and it's giving External debug, which means the debugger is NOT on the board, you gotta bring your own. 240MHz, 4MB flash, 320KB RAM. the frog ate, no cap.


Fubarino 💖

  • board_microchippic32_fubarino_mini — Platform: platform_microchippic32 · Debug: No · MCU: 32MX250F128D · Frequency: 48MHz · Flash: 120KB · RAM: 32KB
  • board_microchippic32_fubarino_sd — Platform: platform_microchippic32 · Debug: No · MCU: 32MX795F512H · Frequency: 80MHz · Flash: 508KB · RAM: 128KB
  • board_microchippic32_fubarino_mini_20 — Platform: platform_microchippic32 · Debug: No · MCU: 32MX270F256D · Frequency: 48MHz · Flash: 240KB · RAM: 62KB

bestie look at these MCU names, 32MX250F128D, 32MX795F512H, 32MX270F256D — they read like wifi passwords 😭 all three are No debug, all three are PIC32. the _sd one is the main character here with 80MHz and 508KB flash and 128KB RAM, the other two are at 48MHz doing their lil thing. also note fubarino_mini is 120KB/32KB and fubarino_mini_20 is 240KB/62KB, so if you're squinting wondering if those are the same board — they are NOT, and the numbers said so fr fr 💀


Generic 🌈

okay and this last chunk is not even in a box anymore?? the table formatting just gives up here and goes all plain-text on us, which is honestly so real of it. here's the tea:

  • board_ststm32_blackpill_f103c8 — Platform: platform_ststm32 · Debug: External · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_blackpill_f103c8_128 — Platform: platform_ststm32 · Debug: External · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_bluepill_f103c6 — Platform: platform_ststm32 · Debug: External · MCU: STM32F103C6T6 · Frequency: 72MHz · Flash: 32KB · RAM: 10KB
heads up bestie: the two blackpill_f103c8 entries have the same MCU (STM32F103C8T6) at the same 72MHz and the same 20KB RAM, but one lists 64KB flash and the other lists 128KB flash. that's not a typo on my part, that's literally what the page says — copy it exactly, don't "fix" it 🙈

and the bluepill_f103c6 is the lil guy of the trio: STM32F103C6T6, 72MHz, 32KB flash, 10KB RAM. all three are External debug, all three are platform_ststm32. periodt. 💅

  • board_ststm32_bluepill_f103c8 — platform platform_ststm32 (External), chip is the STM32F103C8T6, clocked at 72MHz, with 64KB of flash and 20KB of RAM 🦋
  • board_ststm32_bluepill_f103c8_128k — platform platform_ststm32 (External), chip STM32F103C8T6, 72MHz, and bestie this one has 128KB flash (the glow-up version 💅) plus 20KB RAM
  • board_ststm32_demo_f030f4 — platform platform_ststm32 (External), chip STM32F030F4P6, 48MHz, 16KB flash, 4KB RAM 🌸 (smol but she's doing her best)
  • board_ststm32_fk407m1 — platform platform_ststm32 (External), chip STM32F407VET6, 168MHz, 512KB flash, 128KB RAM 🔥
  • board_ststm32_genericSTM32F103C8 — platform platform_ststm32 (External), chip STM32F103C8T6, 72MHz, 64KB flash, 20KB RAM ✨
  • board_ststm32_genericSTM32F103CB — platform platform_ststm32 (External), chip STM32F103CBT6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103R8 — platform platform_ststm32 (External), chip STM32F103R8T6, 72MHz, 64KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103RB — platform platform_ststm32 (External), chip STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103RC — platform platform_ststm32 (External), chip STM32F103RCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_genericSTM32F103RE — platform platform_ststm32 (External), chip STM32F103RET6, 72MHz, 512KB flash, 64KB RAM 👑
  • board_ststm32_genericSTM32F103T8 — platform platform_ststm32 (External), chip STM32F103T8T6, 72MHz, 64KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103TB — platform platform_ststm32 (External), chip STM32F103TBT6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103VB — platform platform_ststm32 (External), chip STM32F103VBT6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103VC — platform platform_ststm32 (External), chip STM32F103VCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_genericSTM32F103VD — platform platform_ststm32 (External), chip STM32F103VDT6, 72MHz, 384KB flash, 64KB RAM
  • board_ststm32_genericSTM32F103VE — platform platform_ststm32 (External), chip STM32F103VET6, 72MHz, 512KB flash, 64KB RAM 💖
  • board_ststm32_genericSTM32F103ZC — platform platform_ststm32 (External), chip STM32F103ZCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_genericSTM32F103ZD — platform platform_ststm32 (External), chip STM32F103ZDT6, 72MHz, 384KB flash, 64KB RAM
  • board_ststm32_genericSTM32F103ZE — platform platform_ststm32 (External), chip STM32F103ZET6, 72MHz, 512KB flash, 64KB RAM 🎀
  • board_ststm32_genericSTM32F401RB — platform platform_ststm32 (External), chip STM32F401RB, 84MHz, 128KB flash, 64KB RAM
  • board_ststm32_genericSTM32F401RC — platform platform_ststm32 (External), chip STM32F401RC, 84MHz, 256KB flash, 64KB RAM
  • board_ststm32_genericSTM32F401RE — platform platform_ststm32 (External), chip STM32F401RE, 84MHz, 512KB flash, 96KB RAM 🌈
  • board_ststm32_genericSTM32F407VET6 — platform platform_ststm32 (External), chip STM32F407VET6, 168MHz, 502.23KB flash (yes bestie, .23 — I do not make the numbers, I just report them 😭), 128KB RAM
  • board_ststm32_genericSTM32F407VGT6 — platform platform_ststm32 (External), chip STM32F407VGT6, 168MHz, 1MB flash, 192KB RAM 💜
  • board_ststm32_stm32f4stamp — platform platform_ststm32 (External), chip STM32F405RGT6, 168MHz, 1MB flash, 192KB RAM ⭐

okay so that's the whole ststm32 board roster in this chunk — every name, every chip, every MHz, every KB of flash and RAM, exactly as printed, no cap 🫶 the columns are name, platform, External, MCU, frequency, flash, RAM, and if you need to point PlatformIO at one of these you just drop the board ID straight in. more coming, stay tuned bestie 💅

✨ Gimasi ✨

  • board_atmelsam_tuinozero96 — platform: platform_atmelsam, debug: External, MCU: SAMD21G18A, frequency: 48MHz, flash: 256KB, RAM: 32KB 💖

🌸 HY 🌸

  • board_ststm32_hy_tinystm103tb — platform: platform_ststm32, debug: External, MCU: STM32F103TBU6, frequency: 72MHz, flash: 128KB, RAM: 20KB 🦋

💜 Hardkernel 💜

  • board_espressif32_odroid_esp32 — platform: platform_espressif32, debug: No, MCU: ESP32, frequency: 240MHz, flash: 16MB, RAM: 320KB 🔥

🎀 Heltec 🎀

  • board_espressif8266_heltec_wifi_kit_8 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB ✨

👑 Heltec Automation 👑

  • board_espressif32_heltec_wifi_kit_32 — platform: platform_espressif32, debug: No, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB 🫶
  • board_espressif32_heltec_wifi_lora_32 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB 💅
  • board_espressif32_heltec_wifi_lora_32_V2 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 8MB, RAM: 320KB 😭
  • board_espressif32_heltec_wireless_stick — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 8MB, RAM: 320KB ⭐
  • board_espressif32_hornbill32dev — platform platform_espressif32, debug External, MCU ESP32, clocked at 240MHz, flash 4MB, RAM 320KB ✨
  • board_espressif32_hornbill32minima — platform platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 💖

🐦 Hornbill — that's a wrap

okay so Hornbill is done, two boards, both ESP32 energy, both debugged externally (so like, bring your own probe bestie, she's not doing it for you) 🫶


🔌 ITEAD

now ITEAD is giving Sonoff and honestly? iconic. every single one of these is an ESP8266 running at 80MHz with 1MB flash and 80KB RAM, and none of them have debug support. no debug. zero. the debug column literally just says No and we respect that 💀

  • board_espressif8266_sonoff_basic — platform platform_espressif8266, debug No, MCU ESP8266, 80MHz, flash 1MB, RAM 80KB 🎀
  • board_espressif8266_sonoff_s20 — platform platform_espressif8266, debug No, MCU ESP8266, 80MHz, flash 1MB, RAM 80KB 🌸
  • board_espressif8266_sonoff_sv — platform platform_espressif8266, debug No, MCU ESP8266, 80MHz, flash 1MB, RAM 80KB 🦋
  • board_espressif8266_sonoff_th — platform platform_espressif8266, debug No, MCU ESP8266, 80MHz, flash 1MB, RAM 80KB 🌈

🧚 Infineon

and now for the Infineon arc and bestie it is a journey. platform_infineonxmc for days, and every single one of these has debug listed as On-board — like, the debugger is just there, built in, main character energy, no extra hardware required 💅

  • board_infineonxmc_xmc1100_boot_kit — platform platform_infineonxmc, debug On-board, MCU XMC1100, 32MHz, flash 64KB, RAM 16KB ⭐
  • board_infineonxmc_xmc1100_h_bridge2go — platform platform_infineonxmc, debug On-board, MCU XMC1100, 32MHz, flash 64KB, RAM 16KB 🔥
  • board_infineonxmc_xmc1100_xmc2go — platform platform_infineonxmc, debug On-board, MCU XMC1100, 32MHz, flash 64KB, RAM 16KB 💜
  • board_infineonxmc_xmc1300_boot_kit — platform platform_infineonxmc, debug On-board, MCU XMC1300, 32MHz, flash 64KB, RAM 16KB 👑
  • board_infineonxmc_xmc1300_sense2gol — platform platform_infineonxmc, debug On-board, MCU XMC1300, 32MHz, flash 32KB, RAM 16KB — yes the flash is 32KB here, not 64KB, don't @ me, that's what it says 🙈
  • board_infineonxmc_xmc1400_boot_kit — platform platform_infineonxmc, debug On-board, MCU XMC1400, 48MHz, flash 1.95MB, RAM 16KB 🍓
  • board_infineonxmc_xmc4200_distance2go — platform platform_infineonxmc, debug On-board, MCU XMC4200, 80MHz, flash 256KB, RAM 40KB 🧚
  • board_infineonxmc_xmc4700_relax_kit — platform platform_infineonxmc, debug On-board, MCU XMC4700, 144MHz, flash 2.00MB, RAM 1.95MB — look at that RAM, 1.95MB of it, she's eating and leaving no crumbs 💖

🧠 Intel

Bestie, the Intel corner is short and sweet, one board only:

  • board_intel_arc32_genuino101 — platform platform_intel_arc32, debug: No, MCU ARCV2EM, frequency 32MHz, flash 152KB, RAM 80KB

🤖 IntoRobot

Another solo act, and it's giving ESP32 energy:

  • board_espressif32_intorobot — platform platform_espressif32, debug: No, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB

✨ Invent One

Okay so this one's riding the ESP8266 wave 🌊:

  • board_espressif8266_inventone — platform platform_espressif8266, debug: No, MCU ESP8266, frequency 80MHz, flash 4MB, RAM 80KB

🌸 IoTaaP

And we're back on ESP32, except this one actually has debugging, we love to see it:

  • board_espressif32_iotaap_magnolia — platform platform_espressif32, debug: External, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB

🍁 LeafLabs

Not one, not two, not three, but FOUR Maple boards 💅 and every single one of them is on platform_ststm32 with External debug:

  • board_ststm32_maple — platform platform_ststm32, debug: External, MCU STM32F103RBT6, frequency 72MHz, flash 108KB, RAM 17KB
  • board_ststm32_maple_ret6 — platform platform_ststm32, debug: External, MCU STM32F103RET6, frequency 72MHz, flash 256KB, RAM 48KB
  • board_ststm32_maple_mini_b20 — platform platform_ststm32, debug: External, MCU STM32F103CBT6, frequency 72MHz, flash 120KB, RAM 20KB
  • board_ststm32_maple_mini_origin — platform platform_ststm32, debug: External, MCU STM32F103CBT6, frequency 72MHz, flash 108KB, RAM 17KB

💡 LightUp

One board, and it's the only one in this whole chunk rocking an On-board debug situation, iconic behaviour honestly:

  • board_atmelavr_lightup — platform platform_atmelavr, debug: On-board, MCU ATMEGA32U4, frequency 8MHz, flash 28KB, RAM 2.50KB

🐧 Linino

And now we roll up to Linino, where the columns get laid out as Name, Platform, Debug, MCU, Frequency, Flash, RAM… and the actual board rows are pulling up right after this, so hold that thought 🫶

  • board_atmelavr_one — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB

🦋 LowPowerLab 🦋

bestie this is the LowPowerLab block and it's literally the Moteino extended universe — every board here lists the same four columns we've been vibing with: Name, Platform, Debug, MCU, Frequency, Flash, RAM. no cap. 🌸

  • board_atmelsam_current_ranger — platform platform_atmelsam, debug No, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelavr_mightyhat — platform platform_atmelavr, debug On-board, MCU ATMEGA328P, 16MHz, flash 31KB, RAM 2KB
  • board_atmelavr_moteino — platform platform_atmelavr, debug On-board, MCU ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB
  • board_atmelavr_moteino8mhz — platform platform_atmelavr, debug On-board, MCU ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB
  • board_atmelavr_moteinomega — platform platform_atmelavr, debug On-board, MCU ATMEGA1284P, 16MHz, flash 127KB, RAM 16KB
  • board_atmelsam_moteino_zero — platform platform_atmelsam, debug External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
notice how the moteino and the moteino8mhz are twins except one is running at half the clock speed? that's the entire personality difference. iconic honestly. 💅

🎀 M5Stack 🎀

okay M5Stack time and the whole squad is ESP32 based, every single one, we love a consistent brand identity ✨

  • board_espressif32_m5stack-core-esp32 — platform platform_espressif32, debug No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
  • board_espressif32_m5stack-fire — platform platform_espressif32, debug No, MCU ESP32, 240MHz, flash 16MB, RAM 6.25MB
  • board_espressif32_m5stack-grey — platform platform_espressif32, debug No, MCU ESP32, 240MHz, flash 16MB, RAM 520KB
  • board_espressif32_m5stick-c — platform platform_espressif32, debug No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
the fire is giving main character energy with that 6.25MB of RAM while its sibling grey sits there with 520KB. same flash, wildly different vibes. 💀

🌈 MH-ET Live 🌈

two boards, both platform_espressif32, both ESP32 at 240MHz, both 4MB flash and 320KB RAM, and both marked External for debug. it's giving "same pic different filter" 🫶

  • board_espressif32_mhetesp32devkit — platform platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
  • board_espressif32_mhetesp32minikit — platform platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB

💜 MXChip 💜

one (1) board in this house and it's repping platform_ststm32 with On-board debug like a little overachiever 🌟

  • board_ststm32_mxchip_az3166 — platform platform_ststm32, debug On-board, MCU STM32F412ZGT6, 100MHz, flash 1MB, RAM 256KB

⭐ Magicblocks.io ⭐

and here we arrive at the Magicblocks.io group — the table header just rolled in with its Name / Platform / Debug / MCU / Frequency / Flash / RAM columns all lined up and ready…

…and that's where this part ends, bestie. the actual boards for this section are pulling up in the next chunk, so hold that thought 🎀

...and we're still going through the board list bestie, the table just keeps going 💅

  • board_espressif32_magicbit — platform platform_espressif32 · debug: No · MCU ESP32 · freq 240MHz · flash 4MB · RAM 320KB

MakerAsia 🌸

New vendor, new table, same energy. One board in the lineup:

  • board_espressif32_nano32 — platform platform_espressif32 · debug: No · MCU ESP32 · freq 240MHz · flash 4MB · RAM 320KB

Makerology 🦋

okay this one is short and sweet, single board, and it's a PIC32 situation, which is so valid of them:

  • board_microchippic32_dsmini — platform platform_microchippic32 · debug: No · MCU 32MX150F128C · freq 40MHz · flash 120KB · RAM 32KB

Malyan ✨

three boards, all platform_ststm32, all debug External (yes bestie, external debugger, that's the vibe here, no on-board probe for you 🙈). Two of them share the same MCU and one is the spicy faster sibling:

  • board_ststm32_malyanm200_f070cb — platform platform_ststm32 · debug: External · MCU STM32F070CBT6 · freq 48MHz · flash 120KB · RAM 14.81KB
  • board_ststm32_malyanm300_f070cb — platform platform_ststm32 · debug: External · MCU STM32F070CBT6 · freq 48MHz · flash 120KB · RAM 14.81KB
  • board_ststm32_malyanm200_f103cb — platform platform_ststm32 · debug: External · MCU STM32F103CBT6 · freq 72MHz · flash 120KB · RAM 20KB

MediaTek Labs 🍓

literally one board, and it's an AVR wearing a MediaTek badge, we love a plot twist:

  • board_atmelavr_smart7688 — platform platform_atmelavr · debug: On-board · MCU ATMEGA32U4 · freq 8MHz · flash 28KB · RAM 2.50KB

Microchip 👑

okay this section is the main character, it's giving long. Ten boards in and the table keeps scrolling, so buckle up bestie, we're doing this:

  • board_atmelavr_AT90CAN128 — platform platform_atmelavr · debug: No · MCU AT90CAN128 · freq 16MHz · flash 127KB · RAM 4KB
  • board_atmelavr_AT90CAN32 — platform platform_atmelavr · debug: No · MCU AT90CAN32 · freq 16MHz · flash 31KB · RAM 2KB
  • board_atmelavr_AT90CAN64 — platform platform_atmelavr · debug: No · MCU AT90CAN64 · freq 16MHz · flash 63KB · RAM 4KB
  • board_atmelavr_ATmega128 — platform platform_atmelavr · debug: On-board · MCU ATMEGA128 · freq 16MHz · flash 127KB · RAM 4KB
  • board_atmelavr_ATmega1280 — platform platform_atmelavr · debug: On-board · MCU ATMEGA1280 · freq 16MHz · flash 127KB · RAM 8KB
  • board_atmelavr_ATmega1281 — platform platform_atmelavr · debug: On-board · MCU ATMEGA1281 · freq 16MHz · flash 127KB · RAM 8KB
  • board_atmelavr_ATmega1284 — platform platform_atmelavr · debug: On-board · MCU ATMEGA1284 · freq 16MHz · flash 127KB · RAM 16KB
  • board_atmelavr_ATmega1284P — platform platform_atmelavr · debug: On-board · MCU ATMEGA1284P · freq 16MHz · flash 127KB · RAM 16KB
  • board_atmelavr_ATmega16 — platform platform_atmelavr · debug: On-board · MCU ATMEGA16 · freq 16MHz · flash 15.50KB · RAM 1KB
  • board_atmelavr_ATmega162 — platform platform_atmelavr · debug: No · MCU ATMEGA162 · freq 16MHz · flash 15.50KB · RAM 1KB
not me noticing the CAN boards are all No on debug while the ATmegas mostly flex On-board 💀 anyway, the Microchip table is still not over, so hold that thought 🫶
  • board_atmelavr_ATmega164A — platform: platform_atmelavr, on-board: No, MCU: ATMEGA164A, freq: 16MHz, flash: 15.50KB, RAM: 1KB 💖
  • board_atmelavr_ATmega164P — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA164P, freq: 16MHz, flash: 15.50KB, RAM: 1KB ✨
  • board_atmelavr_ATmega168 — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA168, freq: 16MHz, flash: 15.50KB, RAM: 1KB 🎀
  • board_atmelavr_ATmega168P — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA168P, freq: 16MHz, flash: 15.50KB, RAM: 1KB 🦋
  • board_atmelavr_ATmega168PB — platform: platform_atmelavr, on-board: No, MCU: ATMEGA168PB, freq: 16MHz, flash: 15.50KB, RAM: 1KB 🌸
  • board_atmelavr_ATmega2560 — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA2560, freq: 16MHz, flash: 255KB, RAM: 8KB 💅
  • board_atmelavr_ATmega2561 — platform: platform_atmelavr, on-board: No, MCU: ATMEGA2561, freq: 16MHz, flash: 255KB, RAM: 8KB 🫶
  • board_atmelavr_ATmega32 — platform: platform_atmelavr, on-board: No, MCU: ATMEGA32, freq: 16MHz, flash: 31.50KB, RAM: 2KB 😭
  • board_atmelavr_ATmega324A — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA324A, freq: 16MHz, flash: 31.50KB, RAM: 2KB 🔥
  • board_atmelavr_ATmega324P — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA324P, freq: 16MHz, flash: 31.50KB, RAM: 2KB 👑
  • board_atmelavr_ATmega324PA — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA324PA, freq: 16MHz, flash: 31.50KB, RAM: 2KB 🌈
  • board_atmelavr_ATmega324PB — platform: platform_atmelavr, on-board: No, MCU: ATMEGA324PB, freq: 16MHz, flash: 31.50KB, RAM: 2KB ⭐
  • board_atmelavr_ATmega328 — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA328, freq: 16MHz, flash: 31.50KB, RAM: 2KB 💀
  • board_atmelavr_ATmega328P — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA328P, freq: 16MHz, flash: 31.50KB, RAM: 2KB 🙈
  • board_atmelavr_ATmega328PB — platform: platform_atmelavr, on-board: No, MCU: ATMEGA328PB, freq: 16MHz, flash: 31.50KB, RAM: 2KB 🍓
  • board_atmelavr_ATmega48 — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA48, freq: 16MHz, flash: 4KB, RAM: 512B 🧚
  • board_atmelavr_ATmega48PB — platform: platform_atmelavr, on-board: No, MCU: ATMEGA48PB, freq: 16MHz, flash: 4KB, RAM: 512B 💜
  • board_atmelavr_ATmega64 — platform: platform_atmelavr, on-board: No, MCU: ATMEGA64, freq: 16MHz, flash: 63KB, RAM: 4KB 💖
  • board_atmelavr_ATmega640 — platform: platform_atmelavr, on-board: No, MCU: ATMEGA640, freq: 16MHz, flash: 63KB, RAM: 8KB ✨
  • board_atmelavr_ATmega644A — platform: platform_atmelavr, on-board: No, MCU: ATMEGA644A, freq: 16MHz, flash: 63KB, RAM: 4KB 🎀
  • board_atmelavr_ATmega644P — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA644P, freq: 16MHz, flash: 63KB, RAM: 4KB 🦋
  • board_atmelavr_ATmega8 — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA8, freq: 16MHz, flash: 7.50KB, RAM: 1KB 🌸
  • board_atmelavr_ATmega8515 — platform: platform_atmelavr, on-board: No, MCU: ATMEGA8515, freq: 16MHz, flash: 7.50KB, RAM: 512B 💅
  • board_atmelavr_ATmega8535 — platform: platform_atmelavr, on-board: No, MCU: ATMEGA8535, freq: 16MHz, flash: 7.50KB, RAM: 512B 🫶
  • board_atmelavr_ATmega88 — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA88, freq: 16MHz, flash: 7.50KB, RAM: 1KB 😭
  • board_atmelavr_ATmega88P — platform: platform_atmelavr, on-board: On-board, MCU: ATMEGA88P, freq: 16MHz, flash: 7.50KB, RAM: 1KB 🔥
  • board_atmelavr_ATmega88PB — platform: platform_atmelavr, on-board: No, MCU: ATMEGA88PB, freq: 16MHz, flash: 7.50KB, RAM: 1KB 👑
  • board_atmelavr_ATmega48P — platform platform_atmelavr, debug: On-board, MCU ATMEGA48P, 16MHz, flash 4KB, RAM 512B 🌱

🎀 Microduino 🎀

okay bestie these ones all live on platform_atmelavr (well, most of them, two are being extra) and lowkey they're the cutest little lineup:

  • board_atmelavr_168pa16m — platform platform_atmelavr, debug: On-board, MCU ATMEGA168P, 16MHz, flash 15.50KB, RAM 1KB ✨
  • board_atmelavr_168pa8m — platform platform_atmelavr, debug: On-board, MCU ATMEGA168P, 8MHz, flash 15.50KB, RAM 1KB ✨
  • board_atmelavr_328p16m — platform platform_atmelavr, debug: On-board, MCU ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB 💅
  • board_atmelavr_328p8m — platform platform_atmelavr, debug: On-board, MCU ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB 💅
  • board_espressif32_microduino-core-esp32 — platform platform_espressif32, debug: No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🔥 she's the main character of this list fr fr
  • board_ststm32_microduino32_flash — platform platform_ststm32, debug: External, MCU STM32F103CBT6, 72MHz, flash 105.47KB, RAM 16.60KB 👑
  • board_atmelavr_32u416m — platform platform_atmelavr, debug: On-board, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🌸
  • board_atmelavr_1284p16m — platform platform_atmelavr, debug: On-board, MCU ATMEGA1284P, 16MHz, flash 127KB, RAM 16KB 😭 that's a LOT of room, she ate
  • board_atmelavr_1284p8m — platform platform_atmelavr, debug: On-board, MCU ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB 😭 same energy, half the clock
  • board_atmelavr_644pa16m — platform platform_atmelavr, debug: On-board, MCU ATMEGA644P, 16MHz, flash 63KB, RAM 4KB 🦋
  • board_atmelavr_644pa8m — platform platform_atmelavr, debug: On-board, MCU ATMEGA644P, 8MHz, flash 63KB, RAM 4KB 🦋

not me noticing the pattern where the 16m and 8m twins are literally the same board at different clock speeds — iykyk 🫶


💜 Midatronics 💜

one board. one. and she's iconic for it:

  • board_ststm32_mkr_sharky — platform platform_ststm32, debug: External, MCU STM32WB55CG, 64MHz, flash 512KB, RAM 192.00KB 🦈 yes the name has shark in it and yes that's the whole vibe

⭐ MikroElektronika ⭐

PIC32 girlies rise up, platform_microchippic32 said it's my turn on the aux:

  • board_microchippic32_clicker2 — platform platform_microchippic32, debug: No, MCU 32MX460F512L, 80MHz, flash 508KB, RAM 32KB 🎀
  • board_microchippic32_flipnclickmz — platform platform_microchippic32, debug: No, MCU 32MZ2048EFH100, 252MHz, flash 1.98MB, RAM 512KB 💀 excuse me?? 252MHz?? 1.98MB of flash?? she is NOT playing around

🌈 Netduino 🌈

  • board_ststm32_netduino2plus — platform platform_ststm32, debug: External, MCU STM32F405RGT6, 168MHz, flash 1MB, RAM 192KB ✨ external debugger, so bring your own probe bestie

🧚 NodeMCU 🧚

and next up we have NodeMCU — keep scrolling, her boards are coming right up 💖

  • board_espressif8266_nodemcu — platform platform_espressif8266, debug No, MCU ESP8266, frequency 80MHz, flash 4MB, RAM 80KB 🦋
  • board_espressif8266_nodemcuv2 — platform platform_espressif8266, debug No, MCU ESP8266, frequency 80MHz, flash 4MB, RAM 80KB ✨
  • board_espressif32_nodemcu-32s — platform platform_espressif32, debug External, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB 🔥

🌸 Noduino 🌸

okay this one is literally a whole vibe, one (1) single board, no notes:

  • board_espressif32_quantum — platform platform_espressif32, debug No, MCU ESP32, frequency 240MHz, flash 16MB, RAM 320KB 👑
bestie look at that flash. 16MB. the others are out here with 4MB and quantum said "no <3". iconic behaviour, honestly.

🧚 Nordic 🧚

the nordic shelf, and yes every single one of these has On-board debug, they came ready to debug out of the box, we love a self-sufficient king:

  • board_nordicnrf51_nrf51_beacon — platform platform_nordicnrf51, debug On-board, MCU NRF51822, frequency 32MHz, flash 256KB, RAM 32KB 🎀
  • board_nordicnrf51_nrf51_dongle — platform platform_nordicnrf51, debug On-board, MCU NRF51822, frequency 32MHz, flash 256KB, RAM 32KB 🎀
  • board_nordicnrf51_nrf51_dk — platform platform_nordicnrf51, debug On-board, MCU NRF51822, frequency 32MHz, flash 256KB, RAM 32KB 🎀
  • board_nordicnrf52_nrf52_dk — platform platform_nordicnrf52, debug On-board, MCU NRF52832, frequency 64MHz, flash 512KB, RAM 64KB 💜
  • board_nordicnrf52_nrf52840_dk — platform platform_nordicnrf52, debug On-board, MCU NRF52840, frequency 64MHz, flash 1MB, RAM 256KB 💜
  • board_nordicnrf52_nrf52840_dk_adafruit — platform platform_nordicnrf52, debug On-board, MCU NRF52840, frequency 64MHz, flash 796KB, RAM 243KB 💜
not the adafruit variant having 796KB flash and 243KB RAM while the plain nrf52840_dk flexes 1MB and 256KB 😭 that's the bootloader and the softdevice taking their cut, no cap, that's just what it is.

🫶 OLIMEX 🫶

every single OLIMEX board here is an ESP32 at 240MHz with 4MB flash and 320KB RAM — the specs are giving copy-paste but the debug column is where the drama lives, so watch that column fr:

  • board_espressif32_esp32-devkitlipo — platform platform_espressif32, debug External, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB ⭐
  • board_espressif32_esp32-evb — platform platform_espressif32, debug External, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB ⭐
  • board_espressif32_esp32-gateway — platform platform_espressif32, debug External, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB ⭐
  • board_espressif32_esp32-pro — platform platform_espressif32, debug No, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB 💅
  • board_espressif32_esp32-poe — platform platform_espressif32, debug No, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB 💅
  • board_espressif32_esp32-poe-iso — platform platform_espressif32, debug No, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB 💅

🌈 OROCA 🌈

one board, tiny section, big heart:

  • board_espressif32_oroca_edubot — platform platform_espressif32, debug No, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB 🦋

🎀 OSHChip 🎀

and now, the OSHChip shelf — the table here is set up with the exact same columns as the rest of this whole listing, so you already know the drill: Name, Platform, Debug, MCU, Frequency, Flash, RAM. the boards themselves are about to roll in, hold on to your wig 💖

  • board_nordicnrf51_oshchip — lives on platform_nordicnrf51, debug setup is External, MCU is NRF51822, running at 32MHz, with 256KB of flash and 32KB of RAM 💖

🦋 Olimex 🦋

Olimex said "let me give you options" and honestly? They delivered. Look at this lineup:

  • board_ststm32_olimexino — on platform_ststm32, debug: External, MCU STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM
  • board_espressif8266_modwifi — on platform_espressif8266, debug: No, MCU ESP8266, 80MHz, 2MB flash, 80KB RAM
  • board_microchippic32_pinguino32 — on platform_microchippic32, debug: No, MCU 32MX440F256H, 80MHz, 252KB flash, 32KB RAM 🐧
  • board_ststm32_olimex_e407 — on platform_ststm32, debug: External, MCU STM32F407ZGT6, 168MHz, 1MB flash, 128KB RAM
  • board_ststm32_olimex_h407 — on platform_ststm32, debug: External, MCU STM32F407ZGT6, 168MHz, 1MB flash, 128KB RAM

ngl the _e407 and _h407 are giving twin energy, same MCU, same clocks, same memory — iconic ✨


🐴 Onehorse 🐴

Just the one board here, but she's a whole vibe:

  • board_espressif32_onehorse32dev — on platform_espressif32, debug: No, MCU ESP32, 240MHz, 4MB flash, 320KB RAM 🔥

240MHz?? That's not a microcontroller that's a whole computer bestie, periodt.


🧠 OpenBCI 🧠

  • board_microchippic32_openbci — on platform_microchippic32, debug: No, MCU 32MX250F128B, 40MHz, 120KB flash, 32KB RAM

⚡ OpenEnergyMonitor ⚡

  • board_atmelavr_emonpi — on platform_atmelavr, debug: On-board, MCU ATMEGA328P, 16MHz, 30KB flash, 2KB RAM

Ooh, On-board debug — she's self-sufficient, main character energy fr fr 👑


🦾 PONTECH 🦾

  • board_microchippic32_usbono_pic32 — on platform_microchippic32, debug: No, MCU 32MX440F512H, 80MHz, 508KB flash, 32KB RAM

508KB of flash, okay she's thicc, we love that 💅


📡 PanStamp 📡

  • board_atmelavr_panStampAVR — on platform_atmelavr, debug: On-board, MCU ATMEGA328P, 8MHz, 31.50KB flash, 2KB RAM

Not the 8MHz 😭 she's cozy and slow and we still love her. Note that flash number — it's 31.50KB, decimal and everything, don't round it, she earned that half 😤


🎀 Particle 🎀

  • board_nordicnrf52_particle_xenon — on platform_nordicnrf52, debug: External, MCU NRF52840, 64MHz, 796KB flash, 243KB RAM 🦋

796KB flash and 243KB RAM?? Xenon really said "I'm built different" and meant it. Not me being obsessed with a board name 💀✨


🌈 Piconomix 🌈

<cute>…and that's where this part leaves us bestie, mid-table, right before the Piconomix boards get their moment 🫶</cute>

  • board_ststm32_piconomix_px_her0 — platform: platform_ststm32, debug: External, MCU: STM32L072RB, frequency: 32MHz, flash: 128KB, RAM: 20KB

That's the last row of the block above, and then we pivot 🌀

🌸 Pinoccio 🌸

Just the one board here bestie, and she's a cutie:

  • board_atmelavr_pinoccio — platform: platform_atmelavr, debug: No, MCU: ATMEGA256RFR2, frequency: 16MHz, flash: 248KB, RAM: 32KB

🌟 Pololu Corporation 🌟

Also a solo act, and honestly? Respect the focus 💅

  • board_atmelavr_a-star32U4 — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA32U4, frequency: 16MHz, flash: 28KB, RAM: 2.50KB

🦋 Pontech 🦋

Two boards, both on platform_microchippic32, and the flash sizes here are eating fr fr:

  • board_microchippic32_nofire — platform: platform_microchippic32, debug: No, MCU: 32MZ2048EFG100, frequency: 200MHz, flash: 1.98MB, RAM: 512KB
  • board_microchippic32_quick240_usb — platform: platform_microchippic32, debug: No, MCU: 32MX795F512L, frequency: 80MHz, flash: 508KB, RAM: 128KB
not the 200MHz like?? she's fast fast 🏎️✨

🎀 PrntrBoard 🎀

One board, and she brought external debugging to the party:

  • board_ststm32_prntr_v2 — platform: platform_ststm32, debug: External, MCU: STM32F407RE, frequency: 168MHz, flash: 512KB, RAM: 192KB

💜 Prusa 3D 💜

Okay the 3D printer girlies stay winning, two boards, both platform_atmelavr, both with On-board debug:

  • board_atmelavr_prusa_mm_control — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA32U4, frequency: 16MHz, flash: 28KB, RAM: 2.50KB
  • board_atmelavr_prusa_rambo — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA2560, frequency: 16MHz, flash: 252KB, RAM: 8KB
two boards, one platform, zero drama. iconic behaviour 👑

🍓 Punch Through 🍓

The bean sisters!! 🌱✨ Both on platform_atmelavr, both On-board debug, both ATMEGA328P, and the only thing separating them is the clock and it's so funny to me:

  • board_atmelavr_lightblue-bean — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA328P, frequency: 8MHz, flash: 31.50KB, RAM: 2KB
  • board_atmelavr_lightblue-beanplus — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA328P, frequency: 16MHz, flash: 31.50KB, RAM: 2KB
same MCU, same flash, same RAM — the plus is literally just double the frequency 💀 8MHz vs 16MHz and that's the whole personality. noted. appreciated. 🫶

🌈 Pycom Ltd. 🌈

And here we go, new vendor block incoming —


next up the Pycom board table starts, and bestie you already know it's gonna be a whole vibe 🌸

  • board_espressif32_pycom_gpy — platform is platform_espressif32, debug is No, MCU ESP32, 240MHz, 4MB flash, 320KB RAM ✨
  • board_espressif32_lopy — platform_espressif32, debug External, MCU ESP32, 240MHz, 4MB flash, 320KB RAM 💖
  • board_espressif32_lopy4 — platform_espressif32, debug External, MCU ESP32, 240MHz, 4MB flash, 1.25MB RAM 🦋

🌸 Qmobot LLP

okay bestie, this vendor only has the one board but it's serving 💅

  • board_espressif32_qchip — platform platform_espressif32, debug No, MCU ESP32, 240MHz, 4MB flash, 320KB RAM 🌈

🎀 Quirkbot

one board, tiny vibe, absolute icon ✨

  • board_atmelavr_quirkbot — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM 🍓

💜 RAK

two tracker boards, both running the same MCU, only the RAM differs — no cap 👑

  • board_ststm32_rak811_tracker — platform platform_ststm32, debug External, MCU STM32L151RBT6, 32MHz, 128KB flash, 16KB RAM
  • board_ststm32_rak811_tracker_32 — platform platform_ststm32, debug External, MCU STM32L151RBT6, 32MHz, 128KB flash, 32KB RAM 💅

🔥 RUMBA

just one, but she's got 512KB of flash and she's not sorry about it 😭

  • board_ststm32_rumba32_f446ve — platform platform_ststm32, debug External, MCU STM32F446RET6, 180MHz, 512KB flash, 128KB RAM ⭐

🦋 RedBearLab

a whole lil family here, mix of nordicnrf51, nordicnrf52, and atmelavr — it's giving variety, it's giving range 🌸

  • board_nordicnrf51_redBearLabBLENano — platform platform_nordicnrf51, debug On-board, MCU NRF51822, 16MHz, 256KB flash, 32KB RAM
  • board_nordicnrf52_redbear_blenano2 — platform platform_nordicnrf52, debug On-board, MCU NRF52832, 64MHz, 512KB flash, 64KB RAM
  • board_atmelavr_blend — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM
  • board_nordicnrf52_redbear_blend2 — platform platform_nordicnrf52, debug On-board, MCU NRF52832, 64MHz, 512KB flash, 64KB RAM 💖
  • board_atmelavr_blendmicro16 — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 16MHz, 28KB flash, 2.50KB RAM
  • board_atmelavr_blendmicro8 — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 8MHz, 28KB flash, 2.50KB RAM 🧚
lowkey notice how the blendmicro8 and blendmicro16 are the same everything except the clock — 8MHz vs 16MHz — and that's literally the whole personality difference between them 💀

Okay bestie the board table is STILL going — we're deep in the vendor-by-vendor roster and honestly? iconic. 🎀 Every entry below gives you the same four-ish deets: the Name, the Platform it lives on, whether Debug is On-board or External, the MCU, and then Frequency, Flash and RAM. No skipping, we're reading the whole menu. 💅

  • board_nordicnrf51_redBearLab — rides on platform_nordicnrf51, debug is On-board, MCU is NRF51822 humming along at 16MHz, with 256KB of flash and 16KB of RAM. ✨

🌸 RemRam

  • board_ststm32_remram_v1 — platform is platform_ststm32, debug is On-board, MCU is the beefy STM32F765VIT6 at 216MHz, packing 2MB flash and 512KB RAM. that RAM number?? slay. 🔥

🌈 RepRap

  • board_atmelavr_reprap_rambo — platform platform_atmelavr, On-board debug, MCU ATMEGA2560 at 16MHz, 252KB flash, 8KB RAM. 💜

🦋 ReprapWorld

  • board_atmelsam_minitronics20 — platform platform_atmelsam, debug is External, MCU SAMD21J18A at 48MHz, 256KB flash, 32KB RAM. 🌸

⭐ RobotDyn

  • board_ststm32_robotdyn_blackpill_f303cc — platform platform_ststm32, debug External, MCU STM32F303CCT6 at 72MHz, 256KB flash, 40KB RAM. 🫶

🧚 RoboticsBrno

  • board_espressif32_alksesp32 — platform platform_espressif32, debug External, MCU ESP32 at 240MHz, 4MB flash, 320KB RAM. four megabytes?? we love a storage girlie. 💖

👑 SG-O

  • board_espressif32_sg-o_airMon — platform platform_espressif32, debug External, MCU ESP32 at 240MHz, 4MB flash, 320KB RAM. 🦋

💜 SODAQ

This vendor showed up with a whole family, and we're not leaving a single one out:

  • board_atmelsam_sodaq_autonomo — platform platform_atmelsam, debug External, MCU SAMD21J18A at 48MHz, 256KB flash, 32KB RAM. ✨
  • board_atmelsam_sodaq_explorer — platform platform_atmelsam, debug External, MCU SAMD21J18A at 48MHz, 256KB flash, 32KB RAM. 🌸
  • board_atmelavr_sodaq_galora — platform platform_atmelavr, debug On-board, MCU ATMEGA1284P at 8MHz, 127KB flash, 16KB RAM. 🎀
  • board_atmelavr_sodaq_mbili — platform platform_atmelavr, debug On-board, MCU ATMEGA1284P at 8MHz, 127KB flash, 16KB RAM. 🌈

and bestie… the roster literally does not stop there. 😭 More vendors, more boards, more tiny MCUs living their best life — keep scrolling, we're not done. 🫶

  • board_atmelavr_sodaq_moja 🎀 — platform platform_atmelavr, debug On-board, MCU ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB
  • board_atmelavr_sodaq_ndogo 🎀 — platform platform_atmelavr, debug On-board, MCU ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB
  • board_atmelsam_sodaq_one 🦋 — platform platform_atmelsam, debug External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelsam_sodaq_sara 🦋 — platform platform_atmelsam, debug External, MCU SAMD21J18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelsam_sodaq_sff 🦋 — platform platform_atmelsam, debug External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB
  • board_atmelavr_sodaq_tatu 🎀 — platform platform_atmelavr, debug On-board, MCU ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB

🌈 ST

okay bestie we're rolling into the ST fam now, whole new batch of boards, same energy, let's go 💅

  • board_ststm32_st3dp001_eval 🔥 — platform platform_ststm32, debug On-board, MCU STM32F401VGT6, 84MHz, flash 512KB, RAM 96KB
  • board_ststm32_black_f407ve 🔥 — platform platform_ststm32, debug External, MCU STM32F407VET6, 168MHz, flash 512KB, RAM 128KB
  • board_ststm32_black_f407vg 🔥 — platform platform_ststm32, debug External, MCU STM32F407VGT6, 168MHz, flash 512KB, RAM 128KB
  • board_ststm32_black_f407ze 🔥 — platform platform_ststm32, debug External, MCU STM32F407ZET6, 168MHz, flash 512KB, RAM 128KB
  • board_ststm32_black_f407zg 🔥 — platform platform_ststm32, debug External, MCU STM32F407ZGT6, 168MHz, flash 1MB, RAM 128KB
  • board_ststm32_blackpill_f401cc 💜 — platform platform_ststm32, debug External, MCU STM32F401CCT6, 84MHz, flash 256KB, RAM 64KB
  • board_ststm32_blue_f407ve_mini 💜 — platform platform_ststm32, debug External, MCU STM32F407VET6, 168MHz, flash 512KB, RAM 128KB
  • board_ststm32_coreboard_f401rc 💜 — platform platform_ststm32, debug External, MCU STM32F401RCT6, 84MHz, flash 256KB, RAM 64KB
  • board_ststm32_nucleo_g071rb ⭐ — platform platform_ststm32, debug External, MCU STM32G071RBT6, 64MHz, flash 128KB, RAM 36KB
  • board_ststm32_nucleo_g431kb ⭐ — platform platform_ststm32, debug External, MCU STM32G431KBT6, 170MHz, flash 128KB, RAM 32KB
  • board_ststm32_nucleo_g431rb ⭐ — platform platform_ststm32, debug External, MCU STM32G431RBT6, 170MHz, flash 128KB, RAM 32KB
  • board_ststm32_nucleo_g474re ⭐ — platform platform_ststm32, debug External, MCU STM32G474RET6, 170MHz, flash 512KB, RAM 128KB
  • board_ststm32_nucleo_wb55rg_p 🌸 — platform platform_ststm32, debug On-board, MCU STM32WB55RG, 64MHz, flash 512KB, RAM 192.00KB
  • board_ststm32_rhf76_052 🍓 — platform platform_ststm32, debug External, MCU STM32L051C8T6, 32MHz, flash 64KB, RAM 8KB
  • board_ststm32_disco_f746ng 👑 — platform platform_ststm32, debug On-board, MCU STM32F746NGH6, 216MHz, flash 1MB, RAM 320KB
  • board_ststm32_disco_l475vg_iot01a 👑 — platform platform_ststm32, debug On-board, MCU STM32L475VGT6, 80MHz, flash 1MB, RAM 128KB
  • board_ststm32_disco_l072cz_lrwan1 👑 — platform platform_ststm32, debug On-board, MCU STM32L072CZ, 32MHz, flash 192KB, RAM 20KB
ngl bestie the RAM column is giving ✨ main character ✨ — like, 192.00KB with the two decimals?? we love a board that's precise about it 💅

and that's the vibe check on this chunk, no cap — the table keeps going, so don't go anywhere 🫶

okay bestie we're still in the board table, do not panic, there are just a lot of STM32s and they all want their moment 💅 every single one gets its full little row, no skipping, no summarizing, that's the law:

  • board_ststm32_disco_f072rb — platform_ststm32 · On-board · STM32F072RBT6 · 48MHz · flash 128KB · RAM 16KB 🦋
  • board_ststm32_nucleo_f030r8 — platform_ststm32 · On-board · STM32F030R8T6 · 48MHz · flash 64KB · RAM 8KB
  • board_ststm32_nucleo_f091rc — platform_ststm32 · On-board · STM32F091RCT6 · 48MHz · flash 256KB · RAM 32KB
  • board_ststm32_nucleo_f103rb — platform_ststm32 · On-board · STM32F103RBT6 · 72MHz · flash 128KB · RAM 20KB
  • board_ststm32_nucleo_f207zg — platform_ststm32 · On-board · STM32F207ZGT6 · 120MHz · flash 1MB · RAM 128KB ✨
  • board_ststm32_nucleo_f302r8 — platform_ststm32 · On-board · STM32F302R8T6 · 72MHz · flash 64KB · RAM 16KB
  • board_ststm32_nucleo_f303k8 — platform_ststm32 · On-board · STM32F303K8T6 · 72MHz · flash 64KB · RAM 12KB
  • board_ststm32_nucleo_f303re — platform_ststm32 · On-board · STM32F303RET6 · 72MHz · flash 512KB · RAM 64KB
  • board_ststm32_nucleo_f401re — platform_ststm32 · On-board · STM32F401RET6 · 84MHz · flash 512KB · RAM 96KB 🎀
  • board_ststm32_nucleo_f411re — platform_ststm32 · On-board · STM32F411RET6 · 100MHz · flash 512KB · RAM 128KB
  • board_ststm32_nucleo_f429zi — platform_ststm32 · On-board · STM32F429ZIT6 · 180MHz · flash 2MB · RAM 256KB 🔥
  • board_ststm32_nucleo_f446re — platform_ststm32 · On-board · STM32F446RET6 · 180MHz · flash 512KB · RAM 128KB
  • board_ststm32_nucleo_f767zi — platform_ststm32 · On-board · STM32F767ZIT6 · 216MHz · flash 2MB · RAM 512KB 👑
  • board_ststm32_nucleo_h743zi — platform_ststm32 · On-board · STM32H743ZIT6 · 400MHz · flash 2MB · RAM 512KB 💀 (400MHz?? main character energy fr fr)
  • board_ststm32_nucleo_l031k6 — platform_ststm32 · On-board · STM32L031K6T6 · 32MHz · flash 32KB · RAM 8KB
  • board_ststm32_nucleo_l053r8 — platform_ststm32 · On-board · STM32L053R8T6 · 32MHz · flash 64KB · RAM 8KB

and then the table switches up its whole format, like a glow-up mid-manpage, so here we go, same data, new lil outfit:

  • board_ststm32_nucleo_l073rz — platform_ststm32 · On-board · STM32L073RZ · 32MHz · flash 192KB · RAM 20KB 🌸
  • board_ststm32_nucleo_l152re — platform_ststm32 · On-board · STM32L152RET6 · 32MHz · flash 512KB · RAM 80KB
  • board_ststm32_nucleo_l412kb — platform_ststm32 · On-board · STM32L412KBU6 · 80MHz · flash 128KB · RAM 40KB
  • board_ststm32_nucleo_l432kc — platform_ststm32 · On-board · STM32L432KCU6 · 80MHz · flash 256KB · RAM 64KB
  • board_ststm32_nucleo_l452re — platform_ststm32 · On-board · STM32L452RET6 · 80MHz · flash 256KB · RAM 64KB
  • board_ststm32_nucleo_l476rg — platform_ststm32 · On-board · STM32L476RGT6 · 80MHz · flash 1MB · RAM 128KB 🫶
  • board_ststm32_nucleo_l496zg — platform_ststm32 · On-board · STM32L496ZGT6 · 80MHz · flash 1MB · RAM 128KB
  • board_ststm32_nucleo_l496zg_p — platform_ststm32 · On-board · STM32L496ZGT6P · 80MHz · flash 1MB · RAM 320KB (yes bestie, the _p one has 320KB of RAM, not 128KB, look at her go) 💖
  • board_ststm32_nucleo_l4r5zi — platform_ststm32 · On-board · STM32L4R5ZIT6 · 120MHz · flash 2MB · RAM 640KB 🌈
  • board_ststm32_disco_f030r8 — platform_ststm32 · On-board · STM32F030R8T6 · 48MHz · flash 64KB · RAM 8KB

every single one of these is On-board for what it's worth, so no shields, no dongles, no "where's the chip" moment — the MCU is right there on the board, living its best life. ngl this list keeps going and your girl is not even winded yet 💅

  • board_ststm32_disco_f407vg — platform platform_ststm32, debug On-board, MCU STM32F407VGT6, 168MHz, flash 1MB, RAM 128KB 💅
  • board_ststm32_disco_f100rb — platform platform_ststm32, debug On-board, MCU STM32F100RBT6, 24MHz, flash 128KB, RAM 8KB ✨
  • board_ststm8_stm8sdisco — platform platform_ststm8, debug On-board, MCU STM8S105C6T6, 16MHz, flash 32KB, RAM 2KB 🎀
  • board_ststm8_stm8sblue — platform platform_ststm8, debug No, MCU STM8S103F3P6, 16MHz, flash 8KB, RAM 1KB 🦋
  • board_ststm8_stm8sblack — platform platform_ststm8, debug No, MCU STM8S105K4T6, 16MHz, flash 16KB, RAM 2KB 🌸
  • board_ststm32_steval_mksboxv1 — platform platform_ststm32, debug External, MCU STM32L4R9ZI, 120MHz, flash 2MB, RAM 640KB 🔥

🌈 SainSmart

okay bestie, new lil family of boards, all cute, all debug-External, all rocking the same brain 💖

  • board_atmelsam_sainSmartDue — platform platform_atmelsam, debug External, MCU AT91SAM3X8E, 84MHz, flash 512KB, RAM 96KB ✨
  • board_atmelsam_sainSmartDueUSB — platform platform_atmelsam, debug External, MCU AT91SAM3X8E, 84MHz, flash 512KB, RAM 96KB ✨
two boards, same specs, different name — the USB one is its own whole entity, so don't go thinking you can just swap them, bestie 🙈

🧚 Sanguino

and then the Sanguino girlies — all platform_atmelavr, all debug On-board, all doing their lil 8-bit thing 🫶

  • board_atmelavr_sanguino_atmega1284p — platform platform_atmelavr, debug On-board, MCU ATMEGA1284P, 16MHz, flash 127KB, RAM 16KB 💜
  • board_atmelavr_sanguino_atmega1284_8m — platform platform_atmelavr, debug On-board, MCU ATMEGA1284P, 8MHz, flash 127KB, RAM 16KB 💜
  • board_atmelavr_sanguino_atmega644 — platform platform_atmelavr, debug On-board, MCU ATMEGA644, 16MHz, flash 63KB, RAM 4KB 🍓
  • board_atmelavr_sanguino_atmega644_8m — platform platform_atmelavr, debug On-board, MCU ATMEGA644, 8MHz, flash 63KB, RAM 4KB 🍓
  • board_atmelavr_sanguino_atmega644p — platform platform_atmelavr, debug On-board, MCU ATMEGA644P, 16MHz, flash 63KB, RAM 4KB 🌟
  • board_atmelavr_sanguino_atmega644p_8m — platform platform_atmelavr, debug On-board, MCU ATMEGA644P, 8MHz, flash 63KB, RAM 4KB 🌟
notice the pattern, bestie? every Sanguino comes in a 16MHz twin and an 8MHz twin — same MCU, same flash, same RAM, just clocked different. lowkey iconic, highkey confusing if you grab the wrong one 💀

okay we're still deep in the board buffet 🍓 every row is a board you can build for, and the columns are Name, Platform, Debug, MCU, Frequency, Flash, RAM. next up…


Schirmilabs 💜

  • board_espressif8266_eduinowifi — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB ✨

Seeed 🦋

  • board_atmelsam_seeeduino_lorawan — platform: platform_atmelsam, debug: External, MCU: SAMD21G18A, frequency: 48MHz, flash: 256KB, RAM: 32KB 💖

SeeedStudio 🌸

bestie this vendor ate, look at the range 👑

  • board_nordicnrf51_seeedTinyBLE — platform: platform_nordicnrf51, debug: On-board, MCU: NRF51822, frequency: 16MHz, flash: 256KB, RAM: 16KB 🎀
  • board_microchippic32_cui32stem — platform: platform_microchippic32, debug: No, MCU: 32MX795F512H, frequency: 80MHz, flash: 508KB, RAM: 128KB 🔥
  • board_atmelavr_seeeduino — platform: platform_atmelavr, debug: On-board, MCU: ATMEGA328P, frequency: 16MHz, flash: 31.50KB, RAM: 2KB 🫶
  • board_espressif8266_wio_link — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB ✨
  • board_gd32v_wio_lite_risc-v — platform: platform_gd32v, debug: External, MCU: GD32VF103CBT6, frequency: 108MHz, flash: 128KB, RAM: 32KB 💅
  • board_espressif8266_wio_node — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB 🌈

Silicognition ⭐

  • board_espressif32_wesp32 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB 💀 (320KB of RAM? main character energy fr)

Sipeed 👑

RISC-V girlies rise up, this whole block is platform_gd32v coded and we're obsessed 🧚

  • board_gd32v_gd32vf103v-eval — platform: platform_gd32v, debug: External, MCU: GD32VF103VBT6, frequency: 108MHz, flash: 128KB, RAM: 32KB 💖
  • board_gd32v_sipeed-longan-nano — platform: platform_gd32v, debug: External, MCU: GD32VF103CBT6, frequency: 108MHz, flash: 128KB, RAM: 32KB ✨
  • board_gd32v_sipeed-longan-nano-lite — platform: platform_gd32v, debug: External, MCU: GD32VF103C8T6, frequency: 108MHz, flash: 64KB, RAM: 20KB 🎀
  • board_kendryte210_sipeed-maix-bit — platform: platform_kendryte210, debug: External, MCU: K210, frequency: 400MHz, flash: 16MB, RAM: 6MB 😭🔥
no cap, that Maix Bit is lowkey stacked: 16MB flash and 6MB RAM on a 400MHz K210. it's giving tiny AI computer. periodt.

and the list keeps going, so hold on to your USB cables bestie…

  • board_kendryte210_sipeed-maix-bit-mic — platform platform_kendryte210, debug External, MCU K210, 400MHz, flash 16MB, RAM 6MB 🦋
  • board_kendryte210_sipeed-maix-go — platform platform_kendryte210, debug External, MCU K210, 400MHz, flash 16MB, RAM 6MB 🦋
  • board_kendryte210_sipeed-maix-one-dock — platform platform_kendryte210, debug External, MCU K210, 400MHz, flash 16MB, RAM 6MB 🦋
  • board_kendryte210_sipeed-maixduino — platform platform_kendryte210, debug External, MCU K210, 400MHz, flash 16MB, RAM 6MB 🦋

🛍️ SparkFun

okay bestie, this next block is the SparkFun crew and the columns go like this: Name, Platform, Debug, MCU, Frequency, Flash, RAM. same energy, same rules, every single one of them listed 💅

  • board_microchippic32_cui32 — platform platform_microchippic32, debug No, MCU 32MX440F512H, 80MHz, flash 508KB, RAM 32KB 🎀
  • board_atmelsam_sparkfun_samd21_9dof — platform platform_atmelsam, debug External, MCU SAMD21G18A, 48MHz, flash 256KB, RAM 32KB ✨
  • board_atmelavr_sparkfun_satmega128rfa1 — platform platform_atmelavr, debug On-board, MCU ATMEGA128RFA1, 16MHz, flash 16KB, RAM 124KB 🌸
  • board_espressif8266_sparkfunBlynk — platform platform_espressif8266, debug No, MCU ESP8266, 80MHz, flash 4MB, RAM 80KB 💖
  • board_atmelavr_sparkfun_digitalsandbox — platform platform_atmelavr, debug On-board, MCU ATMEGA328P, 8MHz, flash 31.50KB, RAM 2KB 🍓
  • board_espressif8266_thing — platform platform_espressif8266, debug No, MCU ESP8266, 80MHz, flash 512KB, RAM 80KB 💜
  • board_espressif8266_thingdev — platform platform_espressif8266, debug No, MCU ESP8266, 80MHz, flash 512KB, RAM 80KB 💜
  • board_atmelavr_sparkfun_fiov3 — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB 🌈
  • board_espressif32_sparkfun_lora_gateway_1-channel — platform platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🔥
  • board_atmelavr_sparkfun_makeymakey — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🎀
  • board_atmelavr_sparkfun_megapro8MHz — platform platform_atmelavr, debug On-board, MCU ATMEGA2560, 8MHz, flash 252KB, RAM 8KB ⭐
  • board_atmelavr_sparkfun_megapro16MHz — platform platform_atmelavr, debug On-board, MCU ATMEGA2560, 16MHz, flash 248KB, RAM 8KB ⭐
  • board_atmelavr_sparkfun_megamini — platform platform_atmelavr, debug On-board, MCU ATMEGA2560, 8MHz, flash 252KB, RAM 8KB 🧚
  • board_atmelavr_uview — platform platform_atmelavr, debug On-board, MCU ATMEGA328P, 16MHz, flash 31.50KB, RAM 2KB 🫶
  • board_atmelavr_sparkfun_promicro8 — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 8MHz, flash 28KB, RAM 2.50KB 👑
  • board_atmelavr_sparkfun_promicro16 — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, frequency 16MHz, flash 28KB, RAM 2.50KB ✨
  • board_atmelavr_sparkfun_qduinomini — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, frequency 8MHz, flash 28KB, RAM 2.50KB ✨
  • board_atmelsam_sparkfun_qwiic_micro_samd21e — platform platform_atmelsam, debug External, MCU SAMD21E18A, frequency 48MHz, flash 256KB, RAM 32KB 💜
  • board_atmelavr_sparkfun_redboard — platform platform_atmelavr, debug On-board, MCU ATMEGA328P, frequency 16MHz, flash 31.50KB, RAM 2KB ✨
  • board_atmelsam_sparkfun_redboard_turbo — platform platform_atmelsam, debug External, MCU SAMD21G18A, frequency 48MHz, flash 256KB, RAM 32KB 💜
  • board_atmelsam_sparkfun_samd21_dev_usb — platform platform_atmelsam, debug External, MCU SAMD21G18A, frequency 48MHz, flash 256KB, RAM 32KB 💜
  • board_atmelsam_sparkfun_samd21_mini_usb — platform platform_atmelsam, debug External, MCU SAMD21G18A, frequency 48MHz, flash 256KB, RAM 32KB 💜
  • board_atmelsam_sparkfun_samd21_proRF — platform platform_atmelsam, debug External, MCU SAMD21G18A, frequency 48MHz, flash 256KB, RAM 32KB 💜
  • board_atmelavr_sparkfun_serial7seg — platform platform_atmelavr, debug On-board, MCU ATMEGA328P, frequency 8MHz, flash 31.50KB, RAM 2KB ✨

🎀 SparkFun Electronics

and bestie we're STILL not done with SparkFun, there's more, there's always more 🫶

  • board_espressif32_esp32thing — platform platform_espressif32, debug External, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB 🔥

🦋 SpellFoundry

  • board_atmelavr_sleepypi — platform platform_atmelavr, debug On-board, MCU ATMEGA328P, frequency 8MHz, flash 30KB, RAM 2KB ✨

🍓 SweetPea

  • board_espressif8266_esp210 — platform platform_espressif8266, debug No, MCU ESP8266, frequency 80MHz, flash 4MB, RAM 80KB 🌸

👑 TI

  • board_timsp430_lpmsp430fr5739 — platform platform_timsp430, debug On-board, MCU MSP430FR5739, frequency 16MHz, flash 15.37KB, RAM 1KB 🧚
  • board_titiva_lplm4f120h5qr — platform platform_titiva, debug On-board, MCU LPLM4F120H5QR, frequency 80MHz, flash 256KB, RAM 32KB 🧚

like that's a whole lot of boards and we're literally not even close to done, the table keeps going, stay with me 💅

  • board_titiva_lptm4c1230c3pm — platform platform_titiva, debug On-board, MCU LPTM4C1230C3PM, 80MHz, flash 256KB, RAM 32KB
  • board_titiva_lptm4c1294ncpdt — platform platform_titiva, debug On-board, MCU LPTM4C1294NCPDT, 120MHz, flash 1MB, RAM 256KB
  • board_timsp430_lpmsp430f5529 — platform platform_timsp430, debug On-board, MCU MSP430F5529, 25MHz, flash 47KB, RAM 8KB
  • board_timsp430_lpmsp430fr2311 — platform platform_timsp430, debug On-board, MCU MSP430FR2311, 16MHz, flash 3.75KB, RAM 1KB
  • board_timsp430_lpmsp430fr2433 — platform platform_timsp430, debug On-board, MCU MSP430FR2433, 8MHz, flash 15KB, RAM 4KB
  • board_timsp430_lpmsp430fr4133 — platform platform_timsp430, debug On-board, MCU MSP430FR4133, 8MHz, flash 15KB, RAM 2KB
  • board_timsp430_lpmsp430fr5969 — platform platform_timsp430, debug On-board, MCU MSP430FR5969, 8MHz, flash 47KB, RAM 2KB
  • board_timsp430_lpmsp430fr5994 — platform platform_timsp430, debug On-board, MCU MSP430FR5994, 16MHz, flash 256KB, RAM 4KB
  • board_timsp430_lpmsp430fr6989 — platform platform_timsp430, debug On-board, MCU MSP430FR6989, 8MHz, flash 47KB, RAM 2KB
  • board_timsp430_lpmsp430g2231 — platform platform_timsp430, debug On-board, MCU MSP430G2231, 1MHz, flash 2KB, RAM 256B
  • board_timsp430_lpmsp430g2452 — platform platform_timsp430, debug On-board, MCU MSP430G2452, 16MHz, flash 8KB, RAM 256B
  • board_timsp430_lpmsp430g2553 — platform platform_timsp430, debug On-board, MCU MSP430G2553, 16MHz, flash 16KB, RAM 512B

TTGO 💅

okay so the TTGO girlies are all ESP32-based and they're all 240MHz, that's just the vibe 💖 every single one of them, no exceptions, we love consistency.

  • board_espressif32_ttgo-lora32-v1 — platform platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
  • board_espressif32_ttgo-lora32-v2 — platform platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
  • board_espressif32_ttgo-t-beam — platform platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 1.25MB
  • board_espressif32_ttgo-t-watch — platform platform_espressif32, debug No, MCU ESP32, 240MHz, flash 16MB, RAM 320KB
  • board_espressif32_ttgo-t1 — platform platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
bestie look at the ttgo-t-watch — 16MB of flash, absolute iconic storage behavior, but debug is a plain No. she's not about that debugging life 🙈

Taida Century 🎀

one (1) board. one. she's standing there. alone. serving.

  • board_nordicnrf52_stct_nrf52_minidev — platform platform_nordicnrf52, debug External, MCU NRF52832, 64MHz, flash 512KB, RAM 64KB

TauLabs 🌈

also just one board, and she's repping the STM32 side of the family 🫶

  • board_ststm32_sparky_v1 — platform platform_ststm32, debug External, MCU STM32F303CCT6, 72MHz, flash 256KB, RAM 40KB

Teensy ⭐

and now we're rolling up on the Teensy section, so here's what the columns are gonna be, because every Teensy entry below is gonna hand you exactly these seven facts and nothing else:

  • Name
  • Platform
  • Debug
  • MCU
  • Frequency
  • Flash
  • RAM

stay tuned bestie, the actual rows are coming right up 💖✨

  • board_teensy_teensy2 — platform platform_teensy, debug No, MCU ATMEGA32U4, 16MHz, flash 31.50KB, RAM 2.50KB 💖
  • board_teensy_teensy30 — platform platform_teensy, debug No, MCU MK20DX128, 48MHz, flash 128KB, RAM 16KB ✨
  • board_teensy_teensy31 — platform platform_teensy, debug External, MCU MK20DX256, 72MHz, flash 256KB, RAM 64KB 🦋
  • board_teensy_teensy35 — platform platform_teensy, debug External, MCU MK64FX512, 120MHz, flash 512KB, RAM 255.99KB 🌸
  • board_teensy_teensy36 — platform platform_teensy, debug External, MCU MK66FX1M0, 180MHz, flash 1MB, RAM 256KB 🔥
  • board_teensy_teensy40 — platform platform_teensy, debug External, MCU IMXRT1062, 600MHz, flash 1.94MB, RAM 512KB 👑
  • board_teensy_teensy41 — platform platform_teensy, debug External, MCU IMXRT1062, 600MHz, flash 7.75MB, RAM 512KB 💅
  • board_teensy_teensylc — platform platform_teensy, debug External, MCU MKL26Z64, 48MHz, flash 62KB, RAM 8KB 🎀
  • board_teensy_teensy2pp — platform platform_teensy, debug No, MCU AT90USB1286, 16MHz, flash 127KB, RAM 8KB 🌈

🌸 ThaiEasyElec 🌸

okay bestie, new vendor, new vibes, same energy 💖

  • board_espressif32_espino32 — platform platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB ✨
  • board_espressif8266_espinotee — platform platform_espressif8266, debug No, MCU ESP8266, 80MHz, flash 4MB, RAM 80KB 🦋

🌈 The Things Network 🌈

  • board_atmelavr_the_things_uno — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB 🫶

⚡ ThunderPack ⚡

  • board_ststm32_thunder_pack — platform platform_ststm32, debug External, MCU STM32L072KZ, 32MHz, flash 192KB, RAM 20KB 💀

🧚 Till Harbaum 🧚

  • board_atmelavr_ftduino — platform platform_atmelavr, debug On-board, MCU ATMEGA32U4, 16MHz, flash 28KB, RAM 2.50KB ⭐
├────────────────────────┼─────────────────┼─┴────────┼─┴───────────┼┴──────────┼┴───────┴┼───────┘  │
│                        │                 │          │             │           │         │          │
│  TinyCircuits          │                 │          │             │           │         │          │
├────────────────────────┼─┬───────────────┼───┬──────┼───┬─────────┼──┬────────┼──┬──────┼┬─────┐   │
│ Name                   │ │ Platform      │   │ Debug│   │ MCU     │  │ Frequency │ Flash││ RAM │   │
├────────────────────────┼─┼───────────────┼───┼──────┼───┼─────────┼──┼────────┼──┼──────┼┼─────┤   │
│ board_atmelavr_tinyduino │ platform_atmelavr │ On-board │ ATMEGA328P │ 8MHz   │  │ 30KB ││ 2KB │   │
├────────────────────────┼─┼───────────────┼───┼──────┼───┼─────────┼──┼────────┼──┼──────┼┼─────┤   │
│ board_atmelavr_tinylily│ │ platform_atmelavr │ On-board │ ATMEGA328P │ 8MHz   │  │ 30KB ││ 2KB │   │
├────────────────────────┼─┴───────────────┼───┴──────┼───┴─────────┼──┴────────┼──┴──────┼┴─────┘   │
│                        │                 │          │             │           │         │          │
│  TinyPICO              │                 │          │             │           │         │          │

okay bestie we are SO back in the board table 💖 and look who it is — TinyCircuits!! the little tiny-est of circuits 🎀 Two boards, both riding the platform_atmelavr wave, both with On-board debug (adorable), both rocking the ATMEGA328P at 8MHz with 30KB flash and 2KB RAM. Iconic consistency, no notes. ✨

  • board_atmelavr_tinyduino — platform_atmelavr, On-board debug, MCU ATMEGA328P, 8MHz, flash 30KB, RAM 2KB 🦋
  • board_atmelavr_tinylily — platform_atmelavr, On-board debug, MCU ATMEGA328P, 8MHz, flash 30KB, RAM 2KB 🌸

and now TinyPICO pulls up, switching the whole vibe to espressif… the way the platform changed mid-table is giving plot twist 😭

├────────────────────────┼───┬─────────────┼────────┬─┼─────┬───────┼───────────┼───────┬─┼─────┐    │
│ Name                   │   │ Platform    │        │ Debug │ MCU   │ Frequency │ Flash │ RAM   │    │
├────────────────────────┼───┼─────────────┼────────┼─┼─────┼───────┼───────────┼───────┼─┼─────┤    │
│ board_espressif32_tinypico │ platform_espressif32 │ No    │ ESP32 │ 240MHz    │ 4MB   │ 320KB │    │
├────────────────────────┼───┴─────────────┼────────┴─┼─────┴───────┼───────────┼───────┴─┼─────┘    │
│                        │                 │          │             │           │         │          │
│  Turta                 │                 │          │             │           │         │          │
  • board_espressif32_tinypico — platform_espressif32, debug No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 💅

ngl that 240MHz is fast fast and the 320KB RAM? we love to see it 🫶

then Turta slides in with exactly one board and it is the vibe — turta_iot_node, espressif again, debug No, same ESP32 at 240MHz, 4MB flash, 320KB RAM. Copy paste but make it fashion 💜

├────────────────────────┼─────────┬───────┼──────────┼───┬───────┬─┼─────┬─────┼─────┬───┼───┬──────┼┐
│ Name                   │         │ Platform         │   │ Debug │ MCU   │ Frequency │ Flash │ RAM  ││
├────────────────────────┼─────────┼───────┼──────────┼───┼───────┼─┼─────┼─────┼─────┼───┼───┼──────┼┤
│ board_espressif32_turta_iot_node │ platform_espressif32 │ No    │ ESP32 │ 240MHz    │ 4MB   │ 320KB││
├────────────────────────┼─────────┴───────┼──────────┼───┴───────┴─┼─────┴─────┼─────┴───┼───┴──────┼┘
│                        │                 │          │             │           │         │          │
│  UBW32                 │                 │          │             │           │         │          │
  • board_espressif32_turta_iot_node — platform_espressif32, debug No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🍓

and then UBW32 enters the chat and the whole platform switches to platform_microchippic32 — we're in PIC32 territory now besties, different universe entirely 🔥 two boards, both debug No, both at 80MHz, both 508KB flash, but watch the RAM diverge like 👀

├────────────────────────┼─────────┬───────┼──────────┼──────┬──────┼┬──────────┼───┬─────┼─────┬────┼──┬───────┐
│ Name                   │         │ Platform         │      │ Debug││ MCU      │   │ Frequency │ Flash │ RAM   │
├────────────────────────┼─────────┼───────┼──────────┼──────┼──────┼┼──────────┼───┼─────┼─────┼────┼──┼───────┤
│ board_microchippic32_ubw32_mx460 │ platform_microchippic32 │ No   ││ 32MX460F512L │ 80MHz     │ 508KB │ 32KB  │
├────────────────────────┼─────────┼───────┼──────────┼──────┼──────┼┼──────────┼───┼─────┼─────┼────┼──┼───────┤
│ board_microchippic32_ubw32_mx795 │ platform_microchippic32 │ No   ││ 32MX795F512L │ 80MHz     │ 508KB │ 128KB │
├────────────────────────┼─────────┴───────┼──────────┼──────┴──────┼┴──────────┼───┴─────┼─────┴────┼──┴───────┘
│                        │                 │          │             │           │         │          │
│  Unknown               │                 │          │             │           │         │          │
  • board_microchippic32_ubw32_mx460 — platform_microchippic32, debug No, MCU 32MX460F512L, 80MHz, flash 508KB, RAM 32KB 🌈
  • board_microchippic32_ubw32_mx795 — platform_microchippic32, debug No, MCU 32MX795F512L, 80MHz, flash 508KB, RAM 128KB ⭐

HELLO?? 32KB vs 128KB RAM on the same flash?? the mx795 ate and left absolutely no crumbs 😭 the mx460 is lowkey fighting for its life in the RAM department but we still love her 💀

and then… Unknown 😭 the vendor is literally named Unknown, she's mysterious, she's enigmatic, she's an enigma. One board, and the debug column says External this time, espressif platform, ESP32 at 240MHz, 4MB flash, 320KB RAM.

├────────────────────────┼────┬────────────┼─────────┬┼─────────┬───┼───┬───────┼───┬─────┼─┬───────┐│
│ Name                   │    │ Platform   │         ││Debug    │ MCU   │ Frequency │ Flash │ RAM   ││
├────────────────────────┼────┼────────────┼─────────┼┼─────────┼───┼───┼───────┼───┼─────┼─┼───────┤│
│ board_espressif32_fm-devkit │ platform_espressif32 ││External │ ESP32 │ 240MHz│   │ 4MB │ │ 320KB ││
├────────────────────────┼────┴────────────┼─────────┴┼─────────┴───┼───┴───────┼───┴─────┼─┴───────┘│
│                        │                 │          │             │           │         │          │
│  VAE                   │                 │          │             │           │         │          │
  • board_espressif32_fm-devkit — platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🙈

(no cap, External debug is a whole different energy than On-board and No — just clocking it bestie, not judging 💅)

then VAE shows up and we're back on STM32!! platform_ststm32 (yes, ststm32, that's the actual spelling, do not @ me), debug External, MCU STM32F446RET6, 180MHz, flash 512KB, RAM 128KB. She's giving very much serious-business-energy and I'm obsessed 👑

├───────────────────────┬┼─────────────────┼──────────┼─────────────┼─┬─────────┼─┬───────┼───────┐  │
│ Name                  ││Platform         │ Debug    │ MCU         │ │ Frequency │ Flash │ RAM   │  │
├───────────────────────┼┼─────────────────┼──────────┼─────────────┼─┼─────────┼─┼───────┼───────┤  │
│ board_ststm32_vake_v1 ││platform_ststm32 │ External │ STM32F446RET6 │ 180MHz  │ │ 512KB │ 128KB │  │
├───────────────────────┴┼─────────────────┼──────────┼─────────────┼─┴─────────┼─┴───────┼───────┘  │
│                        │                 │          │             │           │         │          │
│  VintLabs              │                 │          │             │           │         │          │
  • board_ststm32_vake_v1 — platform_ststm32, debug External, MCU STM32F446RET6, 180MHz, flash 512KB, RAM 128KB 💜

okay and now VintLabs!! one board, espressif platform, and it's the ONLY one in this whole stretch with External debug on an ESP32 at 240MHz, 4MB flash, 320KB RAM. Stand out, diva. 🌸

├────────────────────────┼─────────────┬───┼──────────┼───────┬─────┼────┬──────┼┬────────┼──┬───────┼───────┐
│ Name                   │             │ Platform     │       │ Debug    │ MCU  ││ Frequency │ Flash │ RAM   │
├────────────────────────┼─────────────┼───┼──────────┼───────┼─────┼────┼──────┼┼────────┼──┼───────┼───────┤
│ board_espressif32_vintlabs-devkit-v1 │ platform_espressif32 │ External │ ESP32││ 240MHz │  │ 4MB   │ 320KB │
├────────────────────────┼─────────────┴───┼──────────┼───────┴─────┼────┴──────┼┴────────┼──┴───────┼───────┘
│                        │                 │          │             │           │         │          │
│  WEMOS                 │                 │          │             │           │         │          │
  • board_espressif32_vintlabs-devkit-v1 — platform_espressif32, debug External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🦋

and last but NEVER least in this chunk, WEMOS walks in — and the table header is literally all we get before it cuts off, so hold that thought bestie, the table continues but the page ends right here…

├────────────────────────┼──────────┬──────┼──────────┼──────┬──────┼───┬───────┼─┬───────┼───┬──────┼┬───────┐
│ Name                   │          │ Platform        │      │ Debug│   │ MCU   │ │ Frequency │ Flash││ RAM   │

WEMOS incoming and I am NOT emotionally ready 💖✨ the headers are Name, Platform, Debug, MCU, Frequency, Flash, RAM — same beloved crew as always — and we'll find out what boards she brought in the next part 🎀🫶

bestie we're still in the board table, don't blink 💅 the roster keeps going, so here come the ESP/AVR girls one by one, all their specs intact:

  • board_espressif8266_d1 — platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 🌸
  • board_espressif32_lolin_d32 — platform: platform_espressif32 · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB ✨
  • board_espressif32_lolin_d32_pro — platform: platform_espressif32 · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB ✨
  • board_espressif32_lolin32 — platform: platform_espressif32 · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB 🔥
  • board_espressif32_wemos_d1_mini32 — platform: platform_espressif32 · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB 🔥
  • board_espressif8266_d1_mini — platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 🎀
  • board_espressif8266_d1_mini_lite — platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB 🎀
  • board_espressif8266_d1_mini_pro — platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 16MB · RAM: 80KB 👑
  • board_espressif32_wemosbat — platform: platform_espressif32 · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB 🦋

🌊 Waveshare

a whole vendor just for you, bestie 💜

  • board_nordicnrf51_waveshare_ble400 — platform: platform_nordicnrf51 · Debug: External · MCU: NRF51822 · Frequency: 32MHz · Flash: 256KB · RAM: 32KB 🧚

🔥 Wicked Device

  • board_atmelavr_wildfirev2 — platform: platform_atmelavr · Debug: On-board · MCU: ATMEGA1284P · Frequency: 16MHz · Flash: 120.00KB · RAM: 16KB ⭐
  • board_atmelavr_wildfirev3 — platform: platform_atmelavr · Debug: On-board · MCU: ATMEGA1284P · Frequency: 16MHz · Flash: 127KB · RAM: 16KB ⭐

🌈 Widora

  • board_espressif32_widora-air — platform: platform_espressif32 · Debug: No · MCU: ESP32 · Frequency: 240MHz · Flash: 16MB · RAM: 320KB 💖

🦋 WifiDuino

  • board_espressif8266_wifiduino — platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB 🫶

🍓 Wisen

  • board_atmelavr_whispernode — platform: platform_atmelavr · Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB 🍓

the way this table just keeps giving?? we are so not done yet, stay with me 💅

  • board_espressif8266_xinabox_cw01 — platform: platform_espressif8266 · debug: No · MCU: ESP8266 · frequency: 80MHz · flash: 4MB · RAM: 80KB
  • board_espressif32_xinabox_cw02 — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

<h2>chipKIT 🧁</h2>

  • board_microchippic32_lenny — platform: platform_microchippic32 · debug: No · MCU: 32MX270F256D · frequency: 40MHz · flash: 120KB · RAM: 32KB

<h2>element14 🍑</h2>

  • board_microchippic32_chipkit_pi — platform: platform_microchippic32 · debug: No · MCU: 32MX250F128B · frequency: 40MHz · flash: 120KB · RAM: 32KB

<h2>makerlab.mx 🌿</h2>

  • board_atmelavr_altair — platform: platform_atmelavr · debug: No · MCU: ATMEGA256RFR2 · frequency: 16MHz · flash: 248KB · RAM: 32KB

<h2>meteca 💜</h2>

okay bestie this vendor came with a whole little squad, four boards, two platforms, and every single one of them says External for debug. we love a consistent queen 💅

  • board_espressif32_briki_abc_esp32 — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 3.25MB · RAM: 320KB
  • board_atmelsam_briki_abc_samd21 — platform: platform_atmelsam · debug: External · MCU: SAMD21G18A · frequency: 48MHz · flash: 256KB · RAM: 32KB
  • board_espressif32_briki_mbc-wb_esp32 — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 3.25MB · RAM: 320KB
  • board_atmelsam_briki_mbcwb_samd21 — platform: platform_atmelsam · debug: External · MCU: SAMD21G18A · frequency: 48MHz · flash: 256KB · RAM: 32KB

<h2>ng-beacon 🦋</h2>

  • board_nordicnrf51_ng_beacon — platform: platform_nordicnrf51 · debug: External · MCU: NRF51822 · frequency: 16MHz · flash: 256KB · RAM: 32KB

<h2>nicai-systems ✨</h2>

and now for the next vendor, whose column lineup is literally the same iconic seven: Name · Platform · Debug · MCU · Frequency · Flash · RAM 🌈

…and the list just keeps going, so like, stay tuned bestie, we're not even close to done 💖

...okay so we were literally in the MIDDLE of the board table, bestie, do not panic, I got you 💅 Here come the rest of the atmelavr cuties and then we hop boards like it's a group chat ✨

  • board_atmelavr_bob3 — platform platform_atmelavr · debug: On-board 🫶 · MCU ATMEGA88 · 8MHz · Flash 8KB · RAM 1KB
  • board_atmelavr_nibo2 — platform platform_atmelavr · debug: On-board 🫶 · MCU ATMEGA128 · 16MHz · Flash 128KB · RAM 4KB
  • board_atmelavr_niboburger — platform platform_atmelavr · debug: On-board 🫶 · MCU ATMEGA16 · 15MHz · Flash 16KB · RAM 1KB
  • board_atmelavr_niboburger_1284 — platform platform_atmelavr · debug: On-board 🫶 · MCU ATMEGA1284P · 20MHz · Flash 128KB · RAM 16KB
  • board_atmelavr_nibobee — platform platform_atmelavr · debug: On-board 🫶 · MCU ATMEGA16 · 15MHz · Flash 16KB · RAM 1KB
  • board_atmelavr_nibobee_1284 — platform platform_atmelavr · debug: On-board 🫶 · MCU ATMEGA1284P · 20MHz · Flash 128KB · RAM 16KB

✨ oddWires ✨

The oddWires girlies said ESP32 or nothing, no cap 💖

  • board_espressif32_iotbusio — platform platform_espressif32 · debug: External 🔌 · MCU ESP32 · 240MHz · Flash 4MB · RAM 320KB
  • board_espressif32_iotbusproteus — platform platform_espressif32 · debug: External 🔌 · MCU ESP32 · 240MHz · Flash 4MB · RAM 320KB

✨ sduino ✨

Main character energy but make it STM8 🦋 lowkey no debug here, and that's just the truth:

  • board_ststm8_mb208 — platform platform_ststm8 · debug: No 🙈 · MCU STM8S208MBT6 · 16MHz · Flash 128KB · RAM 6KB
  • board_ststm8_s8uno — platform platform_ststm8 · debug: No 🙈 · MCU STM8S105K6T6 · 16MHz · Flash 32KB · RAM 2KB

✨ sino:bit ✨

One (1) board, one (1) vibe, she's iconic 👑

  • board_nordicnrf51_Sinobit — platform platform_nordicnrf51 · debug: External 🔌 · MCU NRF51822 · 32MHz · Flash 256KB · RAM 32KB

✨ u-blox ✨

Serving Nina modules and Nordic realness 🌸

  • board_nordicnrf52_ublox_evk_nina_b1 — platform platform_nordicnrf52 · debug: On-board 🫶 · MCU NRF52832 · 64MHz · Flash 512KB · RAM 64KB
  • board_espressif32_nina_w10 — platform platform_espressif32 · debug: No 🙈 · MCU ESP32 · 240MHz · Flash 2MB · RAM 320KB

✨ ubIQio ✨

And closing out this stretch of the list, a single tiny AVR legend 🎀

  • board_atmelavr_ardhat — platform platform_atmelavr · debug: On-board 🫶 · MCU ATMEGA328P · 16MHz · Flash 31.50KB · RAM 2KB
└───────────────────────┴───────────────────┴──────────┴────────────┴───────────┴─────────┴─────┘

CMSIS 🧚💜

okay so bestie, let me put you on. CMSIS — the ARM Cortex Microcontroller Software Interface Standard — is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. periodt. 💅

The way it works is it gives you consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, it reduces the learning curve for new microcontroller developers, and it cuts the time-to-market for devices. iconic behaviour honestly. 👑

For more detailed information please visit vendor site. 🦋

Configuration ⚙️✨

projectconf_env_framework = cmsis

Contents 🎀

  • Debugging
  • Examples
  • Platforms
  • Boards

Debugging 🐛🔍

piodebug — the "1-click" solution for debugging with a zero configuration. no setup, no tears, just vibes. 😭

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

Tools & Debug Probes 🔧✨

Supported debugging tools are listed in the "Debug" column. For more detailed information, please scroll table by horizontal. bestie the table is wide, just scroll it, I promise it's fine. 🫶

You can switch between debugging tools using the projectconf_debug_tool option in projectconf. slay.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

On-Board Debug Tools 👑🌸

Boards listed below have an on-board debug probe and ARE READY for debugging! You do not need to use/buy an external debug probe. literally plug in and go, that's main character energy fr fr. 💖

┌──────────────────────────────────┬──────────────────┬───────────────┬───────────┬────────┬───────┐
│ Name                             │ Platform         │ MCU           │ Frequency │ Flash  │ RAM   │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_armstrap_eagle1024 │ platform_ststm32 │ STM32F417VGT6 │ 168MHz    │ 1MB    │ 192KB │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_armstrap_eagle2048 │ platform_ststm32 │ STM32F427VIT6 │ 168MHz    │ 1.99MB │ 256KB │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_armstrap_eagle512  │ platform_ststm32 │ STM32F407VET6 │ 168MHz    │ 512KB  │ 192KB │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_cloud_jam          │ platform_ststm32 │ STM32F401RET6 │ 84MHz     │ 512KB  │ 96KB  │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_disco_f411ve       │ platform_ststm32 │ STM32F411VET6 │ 100MHz    │ 512KB  │ 128KB │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_disco_f429zi       │ platform_ststm32 │ STM32F429ZIT6 │ 180MHz    │ 2MB    │ 256KB │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_disco_f469ni       │ platform_ststm32 │ STM32F469NIH6 │ 180MHz    │ 1MB    │ 384KB │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f401re      │ platform_ststm32 │ STM32F401RET6 │ 84MHz     │ 512KB  │ 96KB  │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f446ze      │ platform_ststm32 │ STM32F446ZET6 │ 180MHz    │ 512KB  │ 128KB │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_disco_f303vc       │ platform_ststm32 │ STM32F303VCT6 │ 72MHz     │ 256KB  │ 48KB  │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_disco_f407vg       │ platform_ststm32 │ STM32F407VGT6 │ 168MHz    │ 1MB    │ 128KB │
├──────────────────────────────────┼──────────────────┼───────────────┼───────────┼────────┼───────┤
│ board_ststm32_disco_l152rb       │ platform_ststm32 │ STM32L152RBT6 │ 32MHz     │ 128KB  │ 16KB  │
└──────────────────────────────────┴──────────────────┴───────────────┴───────────┴────────┴───────┘

External Debug Tools 🔌🙈

Boards listed below are compatible with piodebug but DEPEND ON an external debug probe. They ARE NOT READY for debugging. so like, you gotta go buy the probe first bestie, no skipping steps 😭

Please click on board name for the further details. 💫

┌─────────────────────────────────────┬──────────────────┬───────────────┬───────────┬──────────┬─────────┐
│ Name                                │ Platform         │ MCU           │ Frequency │ Flash    │ RAM     │
├─────────────────────────────────────┼──────────────────┼───────────────┼───────────┼──────────┼─────────┤
│ board_ststm32_1bitsy_stm32f415rgt   │ platform_ststm32 │ STM32F415RGT  │ 168MHz    │ 1MB      │ 128KB   │
├─────────────────────────────────────┼──────────────────┼───────────────┼───────────┼──────────┼─────────┤
│ board_ststm32_armed_v1              │ platform_ststm32 │ STM32F407VET6 │ 168MHz    │ 512KB    │ 192KB   │
├─────────────────────────────────────┼──────────────────┼───────────────┼───────────┼──────────┼─────────┤
│ board_ststm32_adafruit_feather_f405 │ platform_ststm32 │ STM32F405RGT6 │ 168MHz    │ 1MB      │ 128KB   │
├─────────────────────────────────────┼──────────────────┼───────────────┼───────────┼──────────┼─────────┤
│ board_ststm32_afroflight_f103cb     │ platform_ststm32 │ STM32F103CBT6 │ 72MHz     │ 128KB    │ 20KB    │
├─────────────────────────────────────┼──────────────────┼───────────────┼───────────┼──────────┼─────────┤
│ board_ststm32_black_f407ve          │ platform_ststm32 │ STM32F407VET6 │ 168MHz    │ 512KB    │ 128KB   │
├─────────────────────────────────────┼──────────────────┼───────────────┼───────────┼──────────┼─────────┤
│ board_ststm32_black_f407vg          │ platform_ststm32 │ STM32F407VGT6 │ 168MHz    │ 512KB    │ 128KB   │
├─────────────────────────────────────┼──────────────────┼───────────────┼───────────┼──────────┼─────────┤
│ board_ststm32_black_f407ze          │ platform_ststm32 │ STM32F407ZET6 │ 168MHz    │ 512KB    │ 128KB   │
├─────────────────────────────────────┼──────────────────┼───────────────┼───────────┼──────────┼─────────┤
│ board_ststm32_black_f407zg          │ platform_ststm32 │ STM32F407ZGT6 │ 168MHz    │ 1MB      │ 128KB   │

okay bestie we're still deep in the board buffet 🍓 and the platform_ststm32 girlies keep coming, so let's keep scrolling, no cap:

  • board_ststm32_blackpill_f103c8 — platform platform_ststm32 · chip STM32F103C8T6 · 72MHz · flash 64KB · RAM 20KB 💖
  • board_ststm32_blackpill_f103c8_128 — platform platform_ststm32 · chip STM32F103C8T6 · 72MHz · flash 128KB · RAM 20KB (yes she's the same chip with the extra flash, we love a glow-up ✨)
  • board_ststm32_blackpill_f401cc — platform platform_ststm32 · chip STM32F401CCT6 · 84MHz · flash 256KB · RAM 64KB
  • board_ststm32_blue_f407ve_mini — platform platform_ststm32 · chip STM32F407VET6 · 168MHz · flash 512KB · RAM 128KB 🔥
  • board_ststm32_bluepill_f103c6 — platform platform_ststm32 · chip STM32F103C6T6 · 72MHz · flash 32KB · RAM 10KB (she's tiny, be nice 🥺)
  • board_ststm32_bluepill_f103c8 — platform platform_ststm32 · chip STM32F103C8T6 · 72MHz · flash 64KB · RAM 20KB
  • board_ststm32_bluepill_f103c8_128k — platform platform_ststm32 · chip STM32F103C8T6 · 72MHz · flash 128KB · RAM 20KB
  • board_ststm32_coreboard_f401rc — platform platform_ststm32 · chip STM32F401RCT6 · 84MHz · flash 256KB · RAM 64KB
  • board_ststm32_diymore_f407vgt — platform platform_ststm32 · chip STM32F407VGT6 · 168MHz · flash 512KB · RAM 128KB
  • board_ststm32_fk407m1 — platform platform_ststm32 · chip STM32F407VET6 · 168MHz · flash 512KB · RAM 128KB
  • board_ststm32_malyanm200_f070cb — platform platform_ststm32 · chip STM32F070CBT6 · 48MHz · flash 120KB · RAM 14.81KB 🦋
  • board_ststm32_malyanm300_f070cb — platform platform_ststm32 · chip STM32F070CBT6 · 48MHz · flash 120KB · RAM 14.81KB (her twin, same specs, iconic duo energy 👑)
  • board_ststm32_piconomix_px_her0 — platform platform_ststm32 · chip STM32L072RB · 32MHz · flash 128KB · RAM 20KB
  • board_ststm32_prntr_v2 — platform platform_ststm32 · chip STM32F407RE · 168MHz · flash 512KB · RAM 192KB 💜
  • board_ststm32_rhf76_052 — platform platform_ststm32 · chip STM32L051C8T6 · 32MHz · flash 64KB · RAM 8KB
  • board_ststm32_olimex_e407 — platform platform_ststm32 · chip STM32F407ZGT6 · 168MHz · flash 1MB · RAM 128KB (a whole megabyte, she ate 💅)
  • board_ststm32_olimex_h407 — platform platform_ststm32 · chip STM32F407ZGT6 · 168MHz · flash 1MB · RAM 128KB
  • board_ststm32_eval_f107vc — platform platform_ststm32 · chip STM32F107VCT6 · 72MHz · flash 256KB · RAM 64KB
  • board_ststm32_genericSTM32F103C8 — platform platform_ststm32 · chip STM32F103C8T6 · 72MHz · flash 64KB · RAM 20KB
  • board_ststm32_genericSTM32F103CB — platform platform_ststm32 · chip STM32F103CBT6 · 72MHz · flash 128KB · RAM 20KB
  • board_ststm32_genericSTM32F103R8 — platform platform_ststm32 · chip STM32F103R8T6 · 72MHz · flash 64KB · RAM 20KB
  • board_ststm32_genericSTM32F103RB — platform platform_ststm32 · chip STM32F103RBT6 · 72MHz · flash 128KB · RAM 20KB
  • board_ststm32_genericSTM32F103RC — platform platform_ststm32 · chip STM32F103RCT6 · 72MHz · flash 256KB · RAM 48KB
  • board_ststm32_genericSTM32F103RE — platform platform_ststm32 · chip STM32F103RET6 · 72MHz · flash 512KB · RAM 64KB 🔥
  • board_ststm32_genericSTM32F103T8 — platform platform_ststm32 · chip STM32F103T8T6 · 72MHz · flash 64KB · RAM 20KB
  • board_ststm32_genericSTM32F103TB — platform platform_ststm32 · chip STM32F103TBT6 · 72MHz · flash 128KB · RAM 20KB
  • board_ststm32_genericSTM32F103VB — platform platform_ststm32 · chip STM32F103VBT6 · 72MHz · flash 128KB · RAM 20KB 🌸

ngl the generic girls really said "one blueprint, infinite remixes" and honestly? we respect it 🫶 more coming, don't go anywhere bestie 😭

So the generic STM32 table just keeps going, and honestly? The variety is giving 💅 Same columns as before — Name, Platform, MCU, Frequency, Flash, RAM — here's the rest of the lineup:

  • board_ststm32_genericSTM32F103VC — platform platform_ststm32, MCU STM32F103VCT6, 72MHz, 256KB flash, 48KB RAM 🌸
  • board_ststm32_genericSTM32F103VD — platform platform_ststm32, MCU STM32F103VDT6, 72MHz, 384KB flash, 64KB RAM 🌸
  • board_ststm32_genericSTM32F103VE — platform platform_ststm32, MCU STM32F103VET6, 72MHz, 512KB flash, 64KB RAM 🌸
  • board_ststm32_genericSTM32F103ZC — platform platform_ststm32, MCU STM32F103ZCT6, 72MHz, 256KB flash, 48KB RAM 🦋
  • board_ststm32_genericSTM32F103ZD — platform platform_ststm32, MCU STM32F103ZDT6, 72MHz, 384KB flash, 64KB RAM 🦋
  • board_ststm32_genericSTM32F103ZE — platform platform_ststm32, MCU STM32F103ZET6, 72MHz, 512KB flash, 64KB RAM 🦋
  • board_ststm32_genericSTM32F303CB — platform platform_ststm32, MCU STM32F303CBT6, 72MHz, 128KB flash, 32KB RAM ✨
  • board_ststm32_genericSTM32F401RB — platform platform_ststm32, MCU STM32F401RB, 84MHz, 128KB flash, 64KB RAM ✨
  • board_ststm32_genericSTM32F401RC — platform platform_ststm32, MCU STM32F401RC, 84MHz, 256KB flash, 64KB RAM ✨
  • board_ststm32_genericSTM32F401RE — platform platform_ststm32, MCU STM32F401RE, 84MHz, 512KB flash, 96KB RAM 🔥
  • board_ststm32_genericSTM32F407VET6 — platform platform_ststm32, MCU STM32F407VET6, 168MHz, 502.23KB flash, 128KB RAM 🔥
  • board_ststm32_genericSTM32F407VGT6 — platform platform_ststm32, MCU STM32F407VGT6, 168MHz, 1MB flash, 192KB RAM 🔥
  • board_ststm32_thunder_pack — platform platform_ststm32, MCU STM32L072KZ, 32MHz, 192KB flash, 20KB RAM ⚡
  • board_ststm32_wraith32_v1 — platform platform_ststm32, MCU STM32F051K6, 48MHz, 32KB flash, 7.75KB RAM ⚡

And boom, that's the last row — closing border, table done, we love a clean exit. 🎀


✨ Examples ✨

  • CMSIS for ST STM32

Literally that's the whole example list, bestie. Short. Sweet. Iconic. 🫶


✨ Platforms ✨

One platform holding it down in this whole section:

  • platform_ststm32 — and here's the official glow-up description, word for word:
The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

Like?? That's a whole marketing department in one paragraph and I respect it. 👑


✨ Boards ✨

NOTE:
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally.

Okay real talk — that second bullet is a genuine heads-up, not a vibe: these tables are wide, so if you're on a narrow terminal you're gonna have to scroll sideways. Horizontal scroll. Get into it. 😭

1BitSquared

Columns are Name, Platform, Debug, MCU, Frequency, Flash, RAM — yes there's a Debug column now, we leveled up:

  • board_ststm32_1bitsy_stm32f415rgt — platform platform_ststm32, debug External, MCU STM32F415RGT, 168MHz, 1MB flash, 128KB RAM 🦋

One board, one icon, no notes. 💜

Adafruit

Same seven columns, and the Feather is here to serve:

  • board_ststm32_adafruit_feather_f405 — platform platform_ststm32, debug External, MCU STM32F405RGT6, 168MHz, 1MB flash, 128KB RAM 🌈

AfroFlight

Columns again, same as the last two: Name, Platform, Debug, MCU, Frequency, Flash, RAM —

  • board_ststm32_afroflight_f103cb — Platform: platform_ststm32 · Debug: External · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB 💖

Airbot

Airbot said one board and one board only, and honestly? iconic. ✨

  • board_ststm32_wraith32_v1 — Platform: platform_ststm32 · Debug: External · MCU: STM32F051K6 · Frequency: 48MHz · Flash: 32KB · RAM: 7.75KB

Armed

Armed keeping it real with a single v1. periodt. 👑

  • board_ststm32_armed_v1 — Platform: platform_ststm32 · Debug: External · MCU: STM32F407VET6 · Frequency: 168MHz · Flash: 512KB · RAM: 192KB

Armstrap

Armstrap is giving eagle energy, three boards, all On-board debug, we love to see it. 🦋

  • board_ststm32_armstrap_eagle1024 — Platform: platform_ststm32 · Debug: On-board · MCU: STM32F417VGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 192KB
  • board_ststm32_armstrap_eagle2048 — Platform: platform_ststm32 · Debug: On-board · MCU: STM32F427VIT6 · Frequency: 168MHz · Flash: 1.99MB · RAM: 256KB
  • board_ststm32_armstrap_eagle512 — Platform: platform_ststm32 · Debug: On-board · MCU: STM32F407VET6 · Frequency: 168MHz · Flash: 512KB · RAM: 192KB

Diymore

Diymore with the DIY slay. one board, External debug, she's lowkey powerful. 💅

  • board_ststm32_diymore_f407vgt — Platform: platform_ststm32 · Debug: External · MCU: STM32F407VGT6 · Frequency: 168MHz · Flash: 512KB · RAM: 128KB

Generic

okay and now the Generic girlies, the bluepill/blackpill multiverse. this is where it gets real. 🌈

  • board_ststm32_blackpill_f103c8 — Platform: platform_ststm32 · Debug: External · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_blackpill_f103c8_128 — Platform: platform_ststm32 · Debug: External · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_bluepill_f103c6 — Platform: platform_ststm32 · Debug: External · MCU: STM32F103C6T6 · Frequency: 72MHz · Flash: 32KB · RAM: 10KB
  • board_ststm32_bluepill_f103c8 — Platform: platform_ststm32 · Debug: External · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_bluepill_f103c8_128k — Platform: platform_ststm32 · Debug: External · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_fk407m1 — Platform: platform_ststm32 · Debug: External · MCU: STM32F407VET6 · Frequency: 168MHz · Flash: 512KB · RAM: 128KB
  • board_ststm32_genericSTM32F103C8 — Platform: platform_ststm32 · Debug: External · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_genericSTM32F103CB — Platform: platform_ststm32 · Debug: External · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_genericSTM32F103R8 — Platform: platform_ststm32 · Debug: External · MCU: STM32F103R8T6 · Frequency: 72MHz · Flash: 64KB · RAM: 20KB

ok bestie the STM32 board table keeps going and honestly? she's serving 💅 every single row is a whole little guy with a whole little personality, so let's not disrespect any of them:

  • board_ststm32_genericSTM32F103RB — platform platform_ststm32, debug External, MCU STM32F103RBT6, 72MHz, Flash 128KB, RAM 20KB 🦋
  • board_ststm32_genericSTM32F103RC — platform platform_ststm32, debug External, MCU STM32F103RCT6, 72MHz, Flash 256KB, RAM 48KB
  • board_ststm32_genericSTM32F103RE — platform platform_ststm32, debug External, MCU STM32F103RET6, 72MHz, Flash 512KB, RAM 64KB 🔥
  • board_ststm32_genericSTM32F103T8 — platform platform_ststm32, debug External, MCU STM32F103T8T6, 72MHz, Flash 64KB, RAM 20KB
  • board_ststm32_genericSTM32F103TB — platform platform_ststm32, debug External, MCU STM32F103TBT6, 72MHz, Flash 128KB, RAM 20KB
  • board_ststm32_genericSTM32F103VB — platform platform_ststm32, debug External, MCU STM32F103VBT6, 72MHz, Flash 128KB, RAM 20KB
  • board_ststm32_genericSTM32F103VC — platform platform_ststm32, debug External, MCU STM32F103VCT6, 72MHz, Flash 256KB, RAM 48KB
  • board_ststm32_genericSTM32F103VD — platform platform_ststm32, debug External, MCU STM32F103VDT6, 72MHz, Flash 384KB, RAM 64KB ✨
  • board_ststm32_genericSTM32F103VE — platform platform_ststm32, debug External, MCU STM32F103VET6, 72MHz, Flash 512KB, RAM 64KB
  • board_ststm32_genericSTM32F103ZC — platform platform_ststm32, debug External, MCU STM32F103ZCT6, 72MHz, Flash 256KB, RAM 48KB
  • board_ststm32_genericSTM32F103ZD — platform platform_ststm32, debug External, MCU STM32F103ZDT6, 72MHz, Flash 384KB, RAM 64KB
  • board_ststm32_genericSTM32F103ZE — platform platform_ststm32, debug External, MCU STM32F103ZET6, 72MHz, Flash 512KB, RAM 64KB 💖
  • board_ststm32_genericSTM32F303CB — platform platform_ststm32, debug External, MCU STM32F303CBT6, 72MHz, Flash 128KB, RAM 32KB
  • board_ststm32_genericSTM32F401RB — platform platform_ststm32, debug External, MCU STM32F401RB, 84MHz, Flash 128KB, RAM 64KB
  • board_ststm32_genericSTM32F401RC — platform platform_ststm32, debug External, MCU STM32F401RC, 84MHz, Flash 256KB, RAM 64KB
  • board_ststm32_genericSTM32F401RE — platform platform_ststm32, debug External, MCU STM32F401RE, 84MHz, Flash 512KB, RAM 96KB 🌈
  • board_ststm32_genericSTM32F407VET6 — platform platform_ststm32, debug External, MCU STM32F407VET6, 168MHz, Flash 502.23KB, RAM 128KB
  • board_ststm32_genericSTM32F407VGT6 — platform platform_ststm32, debug External, MCU STM32F407VGT6, 168MHz, Flash 1MB, RAM 192KB 👑

🌸 Malyan 🌸

and now for a whole different vibe check — the Malyan corner of the table 🎀 same columns bestie, same energy, just a new family:

  • board_ststm32_malyanm200_f070cb — platform platform_ststm32, debug External, MCU STM32F070CBT6, 48MHz, Flash 120KB, RAM 14.81KB
  • board_ststm32_malyanm300_f070cb — platform platform_ststm32, debug External, MCU STM32F070CBT6, 48MHz, Flash 120KB, RAM 14.81KB 🫶
ngl the 48MHz on these two is lowkey humble compared to the 168MHz drama queens above, but she's valid and she's here and that's what matters 💜

Olimex 💜

  • board_ststm32_olimex_e407 — platform platform_ststm32 · debug External · MCU STM32F407ZGT6 · 168MHz · flash 1MB · RAM 128KB
  • board_ststm32_olimex_h407 — platform platform_ststm32 · debug External · MCU STM32F407ZGT6 · 168MHz · flash 1MB · RAM 128KB

okay twin, those two are literally the same specs just different board names, slay 💅


Piconomix 🦋

  • board_ststm32_piconomix_px_her0 — platform platform_ststm32 · debug External · MCU STM32L072RB · 32MHz · flash 128KB · RAM 20KB

32MHz and 20KB of RAM… it's giving tiny but mighty 🥺✨


PrntrBoard 🎀

  • board_ststm32_prntr_v2 — platform platform_ststm32 · debug External · MCU STM32F407RE · 168MHz · flash 512KB · RAM 192KB

RushUp 🔥

  • board_ststm32_cloud_jam — platform platform_ststm32 · debug On-board · MCU STM32F401RET6 · 84MHz · flash 512KB · RAM 96KB

not the board name being "cloud jam" 😭 that's iconic actually


ST 👑

the main character of this whole table fr fr — look at this lineup:

  • board_ststm32_black_f407ve — platform platform_ststm32 · debug External · MCU STM32F407VET6 · 168MHz · flash 512KB · RAM 128KB
  • board_ststm32_black_f407vg — platform platform_ststm32 · debug External · MCU STM32F407VGT6 · 168MHz · flash 512KB · RAM 128KB
  • board_ststm32_black_f407ze — platform platform_ststm32 · debug External · MCU STM32F407ZET6 · 168MHz · flash 512KB · RAM 128KB
  • board_ststm32_black_f407zg — platform platform_ststm32 · debug External · MCU STM32F407ZGT6 · 168MHz · flash 1MB · RAM 128KB
  • board_ststm32_blackpill_f401cc — platform platform_ststm32 · debug External · MCU STM32F401CCT6 · 84MHz · flash 256KB · RAM 64KB
  • board_ststm32_blue_f407ve_mini — platform platform_ststm32 · debug External · MCU STM32F407VET6 · 168MHz · flash 512KB · RAM 128KB
  • board_ststm32_coreboard_f401rc — platform platform_ststm32 · debug External · MCU STM32F401RCT6 · 84MHz · flash 256KB · RAM 64KB
  • board_ststm32_rhf76_052 — platform platform_ststm32 · debug External · MCU STM32L051C8T6 · 32MHz · flash 64KB · RAM 8KB
  • board_ststm32_disco_f411ve — platform platform_ststm32 · debug On-board · MCU STM32F411VET6 · 100MHz · flash 512KB · RAM 128KB
  • board_ststm32_disco_f429zi — platform platform_ststm32 · debug On-board · MCU STM32F429ZIT6 · 180MHz · flash 2MB · RAM 256KB
bestie real talk: notice how the black_f407zg has 1MB of flash while its f407ve / f407vg / f407ze siblings all sit at 512KB? and the disco_f429zi is out here with 2MB flash + 256KB RAM at 180MHz — that's the upgrade arc, no cap 💅

also the disco_f411ve and disco_f429zi and cloud_jam are the ones rocking On-board debug, while everyone else in this whole batch is External. iykyk 🫶


  • board_ststm32_disco_f469ni — platform platform_ststm32, On-board vibes, chip is the STM32F469NIH6, running at 180MHz, with 1MB of flash and 384KB of RAM ✨
  • board_ststm32_nucleo_f401re — platform platform_ststm32, On-board, rocking the STM32F401RET6 at 84MHz, 512KB flash, 96KB RAM 🦋
  • board_ststm32_nucleo_f446ze — platform platform_ststm32, On-board, chip is STM32F446ZET6 at 180MHz, 512KB flash, 128KB RAM 💅
  • board_ststm32_disco_f303vc — platform platform_ststm32, On-board, the STM32F303VCT6 at 72MHz, 256KB flash, 48KB RAM 🌸
  • board_ststm32_disco_f407vg — platform platform_ststm32, On-board, powered by STM32F407VGT6 at 168MHz, 1MB flash, 128KB RAM 🔥
  • board_ststm32_disco_l152rb — platform platform_ststm32, On-board, the STM32L152RBT6 at 32MHz, 128KB flash, 16KB RAM 🎀
  • board_ststm32_eval_f107vc — platform platform_ststm32, this one's External bestie, chip is STM32F107VCT6 at 72MHz, 256KB flash, 64KB RAM 👑

ThunderPack 💥

  • board_ststm32_thunder_pack — platform: platform_ststm32, debug: External, MCU: STM32L072KZ, frequency: 32MHz, flash: 192KB, RAM: 20KB 🦋

ESP8266 Non-OS SDK ✨

Configuration 🎀

projectconf_env_framework = esp8266-nonos-sdk

The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. 🫶

For more detailed information please visit vendor site. 🌸


Contents 📚

  • Examples
  • Platforms
  • Boards

Examples 💅

  • ESP8266 Non-OS SDK for Espressif 8266

Platforms 🌈

  • platform_espressif8266 — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. ⭐

Boards 👑

NOTE:
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally.

4D Systems 🍓

  • board_espressif8266_gen4iod — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 512KB, RAM: 80KB

Adafruit 🧚

  • board_espressif8266_huzzah — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB

Amperka 💜

  • board_espressif8266_wifi_slot — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB

and we're back in the board table bestie, because the ESP8266 roster does not stop and honestly? respect. 💅


Doit 💖

okay so Doit rolls in first and the vibe is very "we make boards and we make them twice":

  • board_espressif8266_espmxdevkit — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 1MB, RAM: 80KB
  • board_espressif8266_espduino — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB

DycodeX 🌸

one board, one icon, no notes:

  • board_espressif8266_espectro — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB

ESPert 🎀

a two-parter, and yes the _v1 / _v2 naming is serving sequel energy:

  • board_espressif8266_espresso_lite_v1 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_espresso_lite_v2 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB

ESPino 🦋

just the one, and it's lowkey living its best life:

  • board_espressif8266_espino — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB

Espressif 👑

and now we get to the mothership, the ones who make the actual chip, and they brought a whole squad:

  • board_espressif8266_esp_wroom_02 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 2MB, RAM: 80KB
  • board_espressif8266_esp12e — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_esp01_1m — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 1MB, RAM: 80KB
  • board_espressif8266_esp01 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 512KB, RAM: 80KB
  • board_espressif8266_esp07 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_esp8285 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 1MB, RAM: 80KB
  • board_espressif8266_phoenix_v1 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_phoenix_v2 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_wifinfo — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 1MB, RAM: 80KB
notice how every single one of these is debug No and 80MHz and 80KB RAM, bestie — the flash size is the only thing switching up. consistency is a flex fr fr. 😌

Heltec ⭐

and Heltec just stepped into the frame… the lineup drops right after this, so hold that thought 💜

  • board_espressif8266_heltec_wifi_kit_8 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

ITEAD 🎀

okay so ITEAD said "we do smart-home stuff and we're gonna name everything after a Sonoff" and honestly? iconic behavior.

  • board_espressif8266_sonoff_basic — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_sonoff_s20 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_sonoff_sv — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB
  • board_espressif8266_sonoff_th — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 1MB · RAM: 80KB

ngl bestie, four Sonoffs and every single one of them is riding the same 1MB flash + 80KB RAM combo. consistent queens 💅


Invent One 🦋

one (1) board. they really said quality over quantity and I respect it fr fr.

  • board_espressif8266_inventone — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

NodeMCU ✨

the moment. THE moment. if you've ever touched an ESP8266 in your life it was probably one of these two and that's just the truth.

  • board_espressif8266_nodemcu — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_nodemcuv2 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

twins. literally twins. 4MB flash, 80KB RAM, both slaying, both iconic. 🫶


Olimex 🌸

Olimex over here doing their own thing with the flash size and I'm obsessed actually.

  • board_espressif8266_modwifi — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 2MB · RAM: 80KB

not the 2MB?? everyone else said 4, Olimex said 2 and honestly? main character energy. 💀


Schirmilabs 🍓

  • board_espressif8266_eduinowifi — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

quick vibe check on the whole stretch we just went through: every single one of these boards is platform_espressif8266, every single one is No on Debug, every single one is an ESP8266 running at 80MHz, and every single one has 80KB of RAM. the ONLY thing that ever changes is the flash size. no cap. 😭

so if you're skimming for the diff: 1MB = the four Sonoffs, 2MB = the Olimex board_espressif8266_modwifi, 4MB = everyone else. that's the whole tea. ☕

okay bestie we are STILL in the board table and honestly? it's giving encyclopedia. we're deep in the platform_espressif8266 section and every single vendor is showing up like it's a group project where everyone actually did their part 💅

Here's the chunk we're on — vendor boards, verbatim, no notes:

├────────────────────────────────┴─┼──────────────────────┴─┼─────┴─┼───────┴─┼─────────┴─┼─────┴─┼────┘ │
│                                  │                        │       │         │           │       │      │
│  SeeedStudio                     │                        │       │         │           │       │      │
├──────────────────────────────┬───┼────────────────────┬───┼───┬───┼─────┬───┼───────┬───┼───┬───┼──┐   │
│ Name                         │ Platform               │ Debug │ MCU     │ Frequency │ Flash │ RAM  │   │
├──────────────────────────────┼───┼────────────────────┼───┼───┼───┼─────┼───┼───────┼───┼───┼───┼──┤   │
│ board_espressif8266_wio_link │ platform_espressif8266 │ No│   │ ESP8266 │ 80MHz     │ 4MB   │ 80KB │   │
├──────────────────────────────┼───┼────────────────────┼───┼───┼───┼─────┼───┼───────┼───┼───┼───┼──┤   │
│ board_espressif8266_wio_node │ platform_espressif8266 │ No│   │ ESP8266 │ 80MHz     │ 4MB   │ 80KB │   │
├──────────────────────────────┴───┼────────────────────┴───┼───┴───┼─────┴───┼───────┴───┼───┴───┼──┘   │
│                                  │                        │       │         │           │       │      │
│  SparkFun                        │                        │       │         │           │       │      │
├──────────────────────────────────┼┬───────────────────────┼┬──────┼┬────────┼┬──────────┼┬──────┼┬─────┼┐
│ Name                             ││ Platform              ││ Debug││ MCU    ││ Frequency││ Flash││ RAM ││
├──────────────────────────────────┼┼───────────────────────┼┼──────┼┼────────┼┼──────────┼┼──────┼┼─────┼┤
│ board_espressif8266_sparkfunBlynk││ platform_espressif8266││ No   ││ ESP8266││ 80MHz    ││ 4MB  ││ 80KB││
├──────────────────────────────────┼┼───────────────────────┼┼──────┼┼────────┼┼──────────┼┼──────┼┼─────┼┤
│ board_espressif8266_thing        ││ platform_espressif8266││ No   ││ ESP8266││ 80MHz    ││ 512KB││ 80KB││
├──────────────────────────────────┼┼───────────────────────┼┼──────┼┼────────┼┼──────────┼┼──────┼┼─────┼┤
│ board_espressif8266_thingdev     ││ platform_espressif8266││ No   ││ ESP8266││ 80MHz    ││ 512KB││ 80KB││
├──────────────────────────────────┼┴───────────────────────┼┴──────┼┴────────┼┴──────────┼┴──────┼┴─────┼┘
│                                  │                        │       │         │           │       │      │
│  SweetPea                        │                        │       │         │           │       │      │
├────────────────────────────┬─────┼──────────────────┬─────┼─┬─────┼───┬─────┼─────┬─────┼─┬─────┼┐     │
│ Name                       │ Platform               │ Debug │ MCU │   │ Frequency │ Flash │ RAM ││     │
├────────────────────────────┼─────┼──────────────────┼─────┼─┼─────┼───┼─────┼─────┼─────┼─┼─────┼┤     │
│ board_espressif8266_esp210 │ platform_espressif8266 │ No  │ │ ESP8266 │ 80MHz     │ 4MB │ │ 80KB││     │
├────────────────────────────┴─────┼──────────────────┴─────┼─┴─────┼───┴─────┼─────┴─────┼─┴─────┼┘     │

okay so quick vibe check on what you're actually looking at, bestie:

  • The vendor name rows (like SeeedStudio, SparkFun, SweetPea) are just labels — they tell you whose hardware family you're scrolling into. Not a column, not a filter, just a lil header vibe ✨
  • Every board row gives you the Name (that's the board ID you pass to stuff), the Platform it belongs to (platform_espressif8266 for literally all of these, no cap), whether Debug is supported (No for every one here — sorry babes 💀), the MCU (ESP8266 across the board), Frequency (80MHz every time), Flash and RAM.

And the Flash column? That's where the drama lives:

  • board_espressif8266_wio_link → 4MB
  • board_espressif8266_wio_node → 4MB
  • board_espressif8266_sparkfunBlynk → 4MB
  • board_espressif8266_thing → 512KB
  • board_espressif8266_thingdev → 512KB
  • board_espressif8266_esp210 → 4MB

512KB versus 4MB is not a drill, that's an eightfold difference and it WILL decide whether your sketch fits 😭

The RAM column is a chill 80KB for every single one of these, so at least that part's consistent. We love a stable queen 💖


carrying on — next up we've got ThaiEasyElec, WEMOS, WifiDuino and XinaBox, all still repping platform_espressif8266 like it's their whole personality:

│                                  │                        │       │         │           │       │      │
│  ThaiEasyElec                    │                        │       │         │           │       │      │
├───────────────────────────────┬──┼─────────────────────┬──┼────┬──┼──────┬──┼────────┬──┼────┬──┼───┐  │
│ Name                          │ Platform               │ Debug │ MCU     │ Frequency │ Flash │ RAM  │  │
├───────────────────────────────┼──┼─────────────────────┼──┼────┼──┼──────┼──┼────────┼──┼────┼──┼───┤  │
│ board_espressif8266_espinotee │ platform_espressif8266 │ No    │ ESP8266 │ 80MHz     │ 4MB   │ 80KB │  │
├───────────────────────────────┴──┼─────────────────────┴──┼────┴──┼──────┴──┼────────┴──┼────┴──┼───┘  │
│                                  │                        │       │         │           │       │      │
│  WEMOS                           │                        │       │         │           │       │      │
├─────────────────────────────────┬┼───────────────────────┬┼──────┼┼────────┼┼──────────┼┼──────┼┼─────┐│
│ Name                            ││Platform               ││Debug ││MCU     ││Frequency ││Flash ││RAM  ││
├─────────────────────────────────┼┼───────────────────────┼┼──────┼┼────────┼┼──────────┼┼──────┼┼─────┤│
│ board_espressif8266_d1          ││platform_espressif8266 ││No    ││ESP8266 ││80MHz     ││4MB   ││80KB ││
├─────────────────────────────────┼┼───────────────────────┼┼──────┼┼────────┼┼──────────┼┼──────┼┼─────┤│
│ board_espressif8266_d1_mini     ││platform_espressif8266 ││No    ││ESP8266 ││80MHz     ││4MB   ││80KB ││
├─────────────────────────────────┼┼───────────────────────┼┼──────┼┼────────┼┼──────────┼┼──────┼┼─────┤│
│ board_espressif8266_d1_mini_pro ││platform_espressif8266 ││No    ││ESP8266 ││80MHz     ││16MB  ││80KB ││
├─────────────────────────────────┴┼───────────────────────┴┼──────┴┼────────┴┼──────────┴┼──────┴┼─────┘│
│                                  │                        │       │         │           │       │      │
│  WifiDuino                       │                        │       │         │           │       │      │
├───────────────────────────────┬──┼─────────────────────┬──┼────┬──┼──────┬──┼────────┬──┼────┬──┼───┐  │
│ Name                          │ Platform               │ Debug │ MCU     │ Frequency │ Flash │ RAM  │  │
├───────────────────────────────┼──┼─────────────────────┼──┼────┼──┼──────┼──┼────────┼──┼────┼──┼───┤  │
│ board_espressif8266_wifiduino │ platform_espressif8266 │ No    │ ESP8266 │ 80MHz     │ 4MB   │ 80KB │  │
├───────────────────────────────┴──┼─────────────────────┴──┼────┴──┼──────┴──┼────────┴──┼────┴──┼───┘  │
│                                  │                        │       │         │           │       │      │
│  XinaBox                         │                        │       │         │           │       │      │
├──────────────────────────────────┼────────────────────────┼───────┼─────────┼───────────┼───────┼──────┤
│ Name                             │ Platform               │ Debug │ MCU     │ Frequency │ Flash │ RAM  │

THE d1_mini_pro HAS 16MB OF FLASH. bestie. SIXTEEN. MEGABYTES. 🎀 that is four times the 4MB of its lil d1 and d1_mini siblings and it's genuinely the main character of this entire chunk 👑

Let me lay it out so your brain doesn't have to parse ASCII art at 2am:

  • board_espressif8266_espinotee — platform_espressif8266, Debug No, MCU ESP8266, 80MHz, Flash 4MB, RAM 80KB (ThaiEasyElec)
  • board_espressif8266_d1 — platform_espressif8266, Debug No, MCU ESP8266, 80MHz, Flash 4MB, RAM 80KB (WEMOS)
  • board_espressif8266_d1_mini — platform_espressif8266, Debug No, MCU ESP8266, 80MHz, Flash 4MB, RAM 80KB (WEMOS)
  • board_espressif8266_d1_mini_pro — platform_espressif8266, Debug No, MCU ESP8266, 80MHz, Flash 16MB, RAM 80KB (WEMOS)
  • board_espressif8266_wifiduino — platform_espressif8266, Debug No, MCU ESP8266, 80MHz, Flash 4MB, RAM 80KB (WifiDuino)

and the very last row there is the XinaBox table header, Name │ Platform │ Debug │ MCU │ Frequency │ Flash │ RAM — no data rows yet, we're literally mid-table, the vibe check isn't finished 🦋

ngl the pattern here is so consistent it's almost suspicious: every board in this stretch is platform_espressif8266, every MCU is ESP8266, every frequency is 80MHz, every RAM is 80KB, and Debug is a flat No everywhere. The only rebel in the room is d1_mini_pro with its 16MB flash flex, and honestly? we respect it 🫶


reminder to my bestie: Debug: No doesn't mean your board is broken, it means debug support isn't listed for it here. Don't come for me, I'm just reading the table 💀

no sign-off, we're mid-table, more rows incoming ✨

  • board_espressif8266_xinabox_cw01 — platform platform_espressif8266, debug No, MCU ESP8266, frequency 80MHz, flash 4MB, RAM 80KB 🦋

okay and THAT'S the last row of that table, bestie, we survived 💅


ESP8266 RTOS SDK Configuration 🧚

this whole lil block is what happens when you set projectconf_env_framework to esp8266-rtos-sdk, no cap:

projectconf_env_framework = esp8266-rtos-sdk

and what even IS that? it's the ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers ✨ fr fr, that's the official description and it ate.

for the full lore, like, the actual deep dive? please visit vendor site 🫶


Contents 🎀

what's in this thing, you ask? literally:

  • Examples
  • Platforms
  • Boards

Examples 🌸

  • ESP8266 RTOS SDK for Espressif 8266

Platforms 💖

one single platform lives here, and she's iconic:

  • platform_espressif8266 — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

Boards 👑

NOTE: read this before you start yelling at your terminal, bestie 😭
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally. 👈 yes, horizontally, they're WIDE, they're giving runway

4D Systems 🦋

  • board_espressif8266_gen4iod — platform platform_espressif8266, debug No, MCU ESP8266, frequency 80MHz, flash 512KB, RAM 80KB

Adafruit 💜

  • board_espressif8266_huzzah — platform platform_espressif8266, debug No, MCU ESP8266, frequency 80MHz, flash 4MB, RAM 80KB

Amperka ⭐

  • board_espressif8266_wifi_slot — platform platform_espressif8266, debug No, MCU ESP8266, frequency 80MHz, flash 4MB, RAM 80KB

Doit 🌈

  • board_espressif8266_espmxdevkit — platform platform_espressif8266, debug No, MCU ESP8266, frequency 80MHz, flash 1MB, RAM 80KB

and we're still going, obvi, the board list is long like a group chat at 2am 💀

  • board_espressif8266_espduino — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB 🫶

🎀 DycodeX

okay so this whole lil cluster is the DycodeX fam, and there's literally just the one board holding it down:

  • board_espressif8266_espduino — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB

periodt, that's the whole squad 💅


🎀 ESPert

next up, ESPert, and they came with two icons, no notes:

  • board_espressif8266_espectro — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_espresso_lite_v1 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_espresso_lite_v2 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB

bestie the way they got a v1 AND a *v2*… we love a glow-up era ✨


🎀 ESPino

one single board, but she's serving main character energy all on her own:

  • board_espressif8266_espino — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB

🎀 Espressif

okay NOW we're in the big one, the Espressif house 🏠👑 — this is the vendor's own lineup and they did not come to play. Nine boards. Let's go:

  • board_espressif8266_esp_wroom_02 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 2MB, RAM: 80KB
  • board_espressif8266_esp12e — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_esp01_1m — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 1MB, RAM: 80KB
  • board_espressif8266_esp01 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 512KB, RAM: 80KB
  • board_espressif8266_esp07 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_esp8285 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 1MB, RAM: 80KB
  • board_espressif8266_phoenix_v1 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_phoenix_v2 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB
  • board_espressif8266_wifinfo — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 1MB, RAM: 80KB

ngl, notice how every single one of them is rockin' the exact same ESP8266 MCU, 80MHz, and 80KB of RAM? the ONLY thing that changes is the flash — 512KB, 1MB, 2MB, 4MB — and honestly that's the whole vibe check right there 🔥 512KB girlies are the OGs fr fr, and the 4MB ones are just living their best luxe life 💖


🎀 Heltec

and last but not least, Heltec, entering the chat with one very politely formatted board:

  • board_espressif8266_heltec_wifi_kit_8 — platform: platform_espressif8266, debug: No, MCU: ESP8266, frequency: 80MHz, flash: 4MB, RAM: 80KB

that's a wrap on this vendor section, and bestie we are not done yet — more boards incoming 💅🦋

ITEAD 🎀

okay bestie, the ITEAD shelf, let's go — every one of these is a lil ESP8266 cutie running at 80MHz with 1MB of flash and 80KB of RAM, no debugger in sight, and they're all platform_espressif8266:

  • board_espressif8266_sonoff_basic — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 1MB, RAM 80KB
  • board_espressif8266_sonoff_s20 — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 1MB, RAM 80KB
  • board_espressif8266_sonoff_sv — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 1MB, RAM 80KB
  • board_espressif8266_sonoff_th — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 1MB, RAM 80KB

like… four sonoff siblings and not one of them wants to tell you what's wrong 💀 iconic behaviour honestly.


Invent One ✨

just the one board here and she's eating:

  • board_espressif8266_inventone — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 4MB, RAM 80KB

4MB of flash?? we love a storage-rich queen 👑


NodeMCU 🦋

the classic. the blueprint. the moment:

  • board_espressif8266_nodemcu — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 4MB, RAM 80KB
  • board_espressif8266_nodemcuv2 — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 4MB, RAM 80KB

both of them, same specs, different names — it's giving "twins who insist they're individuals" 😭 and honestly? valid.


Olimex 🌸

  • board_espressif8266_modwifi — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 2MB, RAM 80KB

2MB flash, 80KB RAM, platform_espressif8266, no debug — a tidy lil 80MHz moment fr fr 💅


Schirmilabs</schirmilabs> 🍓

  • board_espressif8266_eduinowifi — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 4MB, RAM 80KB

4MB, 80MHz, no debug, ESP8266, platform_espressif8266 — she's giving "study buddy who actually studies" 📚


SeeedStudio 🧚

two baddies, same energy, both platform_espressif8266, both debug: No, both ESP8266 at 80MHz, both 4MB flash and 80KB RAM:

  • board_espressif8266_wio_link — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 4MB, RAM 80KB
  • board_espressif8266_wio_node — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 4MB, RAM 80KB

wio link and wio node, the wio duo, the wio squad, iykyk 🫶


SparkFun 🔥

and then SparkFun rolls up:

  • board_espressif8266_sparkfunBlynk — platform platform_espressif8266, debug: No, MCU ESP8266, 80MHz, flash 4MB, RAM 80KB

that's the board_espressif8266_sparkfunBlynk — note the capital B in the name, bestie, copy it EXACTLY like that, don't go lowercase-ing a board ID and then wondering why the vibe check failed 😭✨

heads up: board names are literal strings. board_espressif8266_sparkfunBlynk is not board_espressif8266_sparkfunblynk. one wrong letter and the build cries. no cap. 💀

still going, don't go anywhere — the board tables keep rolling and we are NOT done yet 👑

...and the list just keeps going, bestie, we are SO not done yet 💅

  • board_espressif8266_thing — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 512KB · RAM: 80KB
  • board_espressif8266_thingdev — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 512KB · RAM: 80KB

🌸 SweetPea 🌸

Not me falling in love with a board vendor name, but here we are 🫶 same column lineup: Name · Platform · Debug · MCU · Frequency · Flash · RAM.

  • board_espressif8266_esp210 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

🍓 ThaiEasyElec 🍓

Say it with me: ThaiEasyElec. Iconic. Here's the one:

  • board_espressif8266_espinotee — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

✨ WEMOS ✨

Okay WEMOS came to SERVE — three boards, and one of them has a whole 16MB of flash, main character energy fr fr 👑

  • board_espressif8266_d1 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_d1_mini — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_d1_mini_pro — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 16MB · RAM: 80KB
lowkey obsessed with that 16MB glow-up on the d1_mini_pro, no cap 💖

🦋 WifiDuino 🦋

One board, one vibe:

  • board_espressif8266_wifiduino — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

🌈 XinaBox 🌈

Last one in this little cluster, and she's a whole board_espressif8266_xinabox_cw01 — say that five times fast, I dare you 😭

  • board_espressif8266_xinabox_cw01 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

and that's the tea on this batch of ESP8266 boards — every single one of them rocking platform_espressif8266, all with Debug: No, all on the ESP8266 MCU humming along at 80MHz, and basically all of them holding 80KB of RAM like it's a lil emotional support number 🥹 the flash is where they differ: 512KB for the two thing boards, 4MB for the rest of the squad, and that one spicy 16MB on the d1_mini_pro 💅


🌈 ESP-IDF Configuration

projectconf_env_framework = espidf

Espressif IoT Development Framework. It's the official development framework for ESP32, bestie — like, the actual real one, no dupes. 👑

For more detailed information please visit vendor site. 💖

📚 Contents

  • Tutorials
  • Configuration
  • Debugging
  • Examples
  • Platforms
  • Boards

🎓 Tutorials

  • tutorial_espressif32_espidf_debugging_unit_testing_analysis

⚙️ Configuration

NOTE: Starting with ESP-IDF v4.0, a CMake-based build system is used. Different configuration steps are required for ESP-IDF v3.x due to a legacy build system based on GNU Make.
  • Configuration for 4.0
  • Configuration for 3.0, 3.1, 3.2, 3.3

Each release of the platform_espressif32 platform uses a specific version of ESP-IDF. The latest version of the platform only supports the latest stable version of the framework. periodt. ✨

WARNING: ESP-IDF v4.0 projects are not backwards-compatible with ESP-IDF v3.x projects in terms of project configuration process. like, they literally do not speak the same language, do not try it 😭

🔥 Configuration for 4.0

  • Project Structure
  • ESP-IDF components
  • ULP coprocessor programming
  • Limitations

The general project configuration (default optimization level, bootloader configuration partition tables, etc) is set in a single file called sdkconfig in the root folder of the project. This configuration file can be modified via a special target called menuconfig (PlatformIO v4.3.0 greater is required):

platformio run -t menuconfig
WARNING: ESP-IDF requires some extra tools to be installed in your system in order to build firmware for supported chips. Most of these tools are available in PlatformIO ecosystem as standalone packages, but in order to use configuration tool called menuconfig several additional packages need to be installed on Linux-based systems: 💀
libncurses5-dev flex bison

More details about required packages can be found in the official ESP-IDF documentation - Standard Setup of Toolchain for Linux.

📁 Project Structure

The ESP-IDF framework requires an unusual project structure because most of the framework configuration is performed by the native for the ESP-IDF build system called CMake. it's giving "trust the process" 🦋

A typical PlatformIO project for the ESP-IDF framework must have the following structure:

project_dir
├── include
├── src
│    ├── CMakeLists.txt
│    └── main.c
├── CMakeLists.txt
└── platformio.ini
TIP: It's also possible to use the default ESP-IDF project structure with main folder. To specify main as the folder with source files use projectconf_pio_src_dir option, for example:
[platformio]
src_dir = main

[env:esp32dev]
platform = espressif32
framework = espidf
board = esp32dev

Okay so besides the files that are related to your PlatformIO project, there are several extra ESP-IDF-specific files hanging around, bestie, and you're gonna wanna know all of them:

  • the main CMakeLists.txt
  • the project-specific CMakeLists.txt that lives in projectconf_pio_src_dir
  • and an optional default configuration file called sdkconfig.defaults

The CMakeLists.txt files are the ones unlocking the features that ESP-IDF's build system supports, like ULP configuration, adding extra components, and all that good stuff. A typical CMakeLists.txt file sitting in your root folder looks exactly like this, no cap:

# The following lines of boilerplate have to be in your project's CMakeLists
# in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.16.0)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(project-name)

The second CMakeLists.txt, the one in projectconf_pio_src_dir, is the one responsible for controlling the build process of the component and how it gets integrated into the overall project. The minimal component CMakeLists.txt literally just registers the component to the build system using idf_component_register:

idf_component_register(SRCS "foo.c" "bar.c")

The files you specify using idf_component_register are used ONLY for generating build configurations, but honestly? It's highly recommended that you specify all application source files anyway, so your project stays compatible with the usual ESP-IDF workflow. Trust. 🫶

WARNING: ⚠️ By default PlatformIO expects source files to be located in the src folder. Meanwhile, the default location for source files inside the ESP-IDF build system is a special folder named main. Renaming the main component may require users to manually specify additional dependencies:
idf_component_register(SRCS "main.c" REQUIRES idf::mbedtls)

More details are in the official ESP-IDF documentation under Renaming main component.

So because of the current limitations of the CMake file-based API, there's genuinely no way of generating build configuration for source files written in various programming languages if they aren't specified in the idf_component_register command. So if your project contains libraries written in languages that differ from the language used for the main application, you need to create an empty file with the desired extension (e.g. *.cpp for C++) in order to force CMake to generate build configuration for that language. Sneaky but it works 💅

NOTE: 💖 Build configuration generated for source files specified in idf_component_register is also used as the base build environment for project sources (including libraries).

✨ ESP-IDF components ✨

ESP-IDF modules are like modular pieces of standalone code, and they might be super useful for structuring reusable code, or for including third party components that aren't part of ESP-IDF. So very main character of them.

These components contain either a single CMakeLists.txt file, which controls the build process of the component and its integration into the overall project. An optional Kconfig file defines the component configuration options that can be set via menuconfig. Some components may also include Kconfig.projbuild and project_include.cmake files, which are special files for overriding parts of the project. All valid components get compiled as static libraries and linked to the final firmware. Iconic. 👑

There are two possible ways of adding extra components to a PlatformIO project:

  • By adding a new component to an optional folder called components in the root of your project. This folder will be automatically scanned for valid components. 🎀
  • Using EXTRA_COMPONENT_DIRS option in the root CMakeLists.txt file. This option represents a list of extra directories to search for components.

Here's an example of specifying esp-aws-iot as an extra component:

# The following lines of boilerplate have to be in your project's CMakeLists
# in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.16)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
list(APPEND EXTRA_COMPONENT_DIRS esp-aws-iot)
project(subscribe_publish)
WARNING: ⚠️ Since projectconf_pio_src_dir is also passed to CMake as an extra component, you should only append to the EXTRA_COMPONENT_DIRS variable in order not to override the default package. Do not come for that variable, bestie, just append. 🙈

Since the build may not work correctly if the full path to sources is greater than 250 characters (see CMAKE_OBJECT_PATH_MAX), it might be a good idea to keep modules close to the project files. Keep your little guys cozy and nearby. 🍓


🦋 ULP coprocessor programming 🦋

If you want to take measurements using ADC, internal temperature sensor or external I2C sensors while the main processors are in deep sleep mode, you need to use the ULP coprocessor. At the moment, ULP can be used only with the ESP-IDF. Periodt.

All ULP code — usually written in assembly in files with a .S extension — must be placed into a separate directory named ulp in the root folder of your project. So your project structure should look like this:

project_dir
├── include
├── src
│    ├── CMakeLists.txt
│    └── main.c
├── ulp
│    └── ulp_code.S
├── CMakeLists.txt
└── platformio.ini

Since PlatformIO uses the code model generated by CMake, it's mandatory to specify ULP source files in CMakeLists.txt as well. An example of a typical CMakeLists.txt for ULP:

idf_component_register(SRCS "ulp_adc_example_main.c")
#
# ULP support additions to component CMakeLists.txt.
#
# 1. The ULP app name must be "ulp_main"
set(ulp_app_name ulp_main)
#
# 2. Specify all assembly source files.
#    Paths are relative because ULP files are placed into a special directory "ulp"
#    in the root of the project
set(ulp_s_sources "../ulp/adc.S")
#
# 3. List all the component source files which include automatically
#    generated ULP export file, ${ulp_app_name}.h:
set(ulp_exp_dep_srcs "ulp_adc_example_main.c")
#
# 4. Call function to build ULP binary and embed in project using the argument
#    values above.
ulp_embed_binary(${ulp_app_name} ${ulp_s_sources} ${ulp_exp_dep_srcs})

See full examples with ULP coprocessor programming: 🧚

More details are located in the official ESP-IDF documentation - ULP coprocessor programming.


🚧 Limitations 🚧

At the moment several limitations are present: (bestie, read these before you rage at your build, ok? 😭)

  • No whitespace characters allowed in project paths. Like, none. Zero. Zip.
  • The src_filter option cannot be used. It's just not a thing here.

🌈 Configuration for 3.0, 3.1, 3.2, 3.3 🌈

Support for ESP-IDF v3.x is considered obsolete and is not available in the latest platform releases. 💀 Please check the platform release notes to figure out what version of the platform should be installed to use required ESP-IDF version, for example:

[env:esp32dev]
; v1.10.0 is the last version that supports ESP-IDF v3.3
platform = espressif32@1.10.0
framework = espidf
board = esp32dev

📁 Project Structure 📁

Due to limited support of GNU Make build system used in ESP-IDF v3.x, the project configuration depends on a pregenerated file sdkconfig.h which contains a list of macro definitions CONFIG_*. These definitions describe project settings that will be used for preparing a proper build environment. You can use the default sdkconfig.h shipped with the platform or generate a custom one using native ESP-IDF build environment. ✨

A typical PlatformIO project for ESP-IDF v3.x must have the following structure:

project_dir
├── include
├── lib
│   └── README
├── test
├── src
│    ├── sdkconfig.h
│    └── main.c
└── platformio.ini

💖 Enable C++ exceptions 💖

to enable C++ exceptions for ESP-IDF add -D PIO_FRAMEWORK_ESP_IDF_ENABLE_EXCEPTIONS to projectconf_build_flags of projectconf.

See project example with enabled exceptions.


🦋 ULP coprocessor programming 🦋

To use ULP in your project you need to make sure that it's enabled in the sdkconfig.h configuration file. The following two lines must be added:

#define CONFIG_ULP_COPROC_ENABLED 1
#define CONFIG_ULP_COPROC_RESERVE_MEM 1024

Usually CONFIG_ULP_COPROC_RESERVE_MEM is already defined in the default sdkconfig.h with value 0. You can modify this value to meet your requirements. 👑

All ULP code, usually written in assembly in files with .S extension, must be placed into a separate directory with the name ulp in the root folder of your project. So your project structure should look like this:

project_dir
├── include
├── lib
│   └── README
├── test
├── src
│    ├── main.c
│    └── sdkconfig.h
├── ulp
│    └── ulp_code.S
└── platformio.ini

See full examples with ULP coprocessor programming for ESP-IDF v3.x:


🔥 Debugging 🔥

pio debug - "1-click" solution for debugging with a zero configuration. 💅

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🎀 Tools & Debug Probes 🎀

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

👑 On-Board Debug Tools 👑

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe. 🫶

  • board_espressif32_esp-wrover-kit — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

💜 External Debug Tools 💜

Boards listed below are compatible with pio debug but DEPEND ON external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details. 😭

  • board_espressif32_esp32cam — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_az-delivery-devkit-v4 — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 16MB, RAM: 520KB
  • board_espressif32_featheresp32 — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_d-duino-32 — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_esp32doit-devkit-v1 — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_pocket_32 — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_fm-devkit — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_esp32vn-iot-uno — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_espectro32 — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_espino32 — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB
  • board_espressif32_esp32dev — platform: platform_espressif32, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB

okay bestie, we're still deep in the board lineup and the vibe is immaculate 💅 every single one of these is riding the same platform_espressif32 wave, same ESP32 brain, same 240MHz zoomies — the only drama is how much flash and RAM they're packing. let's get into it, no skips, no cap ✨

  • board_espressif32_firebeetle32 — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM 🦋
  • board_espressif32_frogboard — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM 🐸
  • board_espressif32_heltec_wifi_lora_32 — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_heltec_wifi_lora_32_V2 — platform_espressif32, ESP32, 240MHz, 8MB flash, 320KB RAM ✨ (yes bestie, double the flash, she ate)
  • board_espressif32_heltec_wireless_stick — platform_espressif32, ESP32, 240MHz, 8MB flash, 320KB RAM
  • board_espressif32_hornbill32dev — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_hornbill32minima — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_mhetesp32devkit — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_mhetesp32minikit — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_node32s — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_nodemcu-32s — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_esp32-devkitlipo — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_esp32-evb — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_esp32-gateway — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_lopy — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_lopy4 — platform_espressif32, ESP32, 240MHz, 4MB flash, 1.25MB RAM 👑 (look at that RAM, she's built different fr fr)
  • board_espressif32_sg-o_airMon — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_wesp32 — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_esp32thing — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_sparkfun_lora_gateway_1-channel — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_ttgo-lora32-v1 — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_ttgo-lora32-v2 — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_ttgo-t-beam — platform_espressif32, ESP32, 240MHz, 4MB flash, 1.25MB RAM 💜 (another RAM-rich queen, we love to see it)
  • board_espressif32_ttgo-t1 — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_vintlabs-devkit-v1 — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM
  • board_espressif32_lolin_d32 — platform_espressif32, ESP32, 240MHz, 4MB flash, 320KB RAM

so the pattern here is iconic and consistent: 240MHz across the board (pun fully intended 😭), 4MB flash as the standard serve, 320KB RAM as the default. the two divas breaking the mold are the 8MB flash heltec sticks and the 1.25MB RAM lopy4 + ttgo-t-beam — if you need more room to breathe, those are your girls 🫶

iykyk, this list keeps going, so stay tuned bestie, we're not done scrolling yet 🌸

  • board_espressif32_lolin_d32_pro — platform platform_espressif32, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🦋
  • board_espressif32_lolin32 — platform platform_espressif32, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🦋
  • board_espressif32_wemos_d1_mini32 — platform platform_espressif32, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🦋
  • board_espressif32_wemosbat — platform platform_espressif32, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🦋
  • board_espressif32_xinabox_cw02 — platform platform_espressif32, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🦋
  • board_espressif32_iotbusio — platform platform_espressif32, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🦋
  • board_espressif32_iotbusproteus — platform platform_espressif32, MCU ESP32, 240MHz, flash 4MB, RAM 320KB 🦋

✨ Examples ✨

  • ESP-IDF for Espressif 32 💅

🌈 Platforms 🌈

  • platform_espressif32 — okay so bestie, here's the lore: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. iconic honestly 👑

🎀 Boards 🎀

NOTE: 📌
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer 🫶
  • For more detailed board information please scroll the tables below by horizontally. (yes literally sideways, the vibes are wide, iykyk 😭)

AI Thinker

  • board_espressif32_esp32cam — platform platform_espressif32, debug External, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB 📸✨

AZ-Delivery

  • board_espressif32_az-delivery-devkit-v4 — platform platform_espressif32, debug External, MCU ESP32, frequency 240MHz, flash 16MB, RAM 520KB 🌸 (yes the flash is 16MB, no cap, she's thicc 💖)
  • Adafruit 🍓 — bestie said "wearables AND dev boards," and they delivered
    • board_espressif32_featheresp32 — platform platform_espressif32, Debug: External, MCU ESP32, Frequency 240MHz, Flash 4MB, RAM 320KB
  • Aiyarafun ✨ — the name is literally a whole vibe, no notes
    • board_espressif32_node32s — platform platform_espressif32, Debug: External, MCU ESP32, Frequency 240MHz, Flash 4MB, RAM 320KB
  • April Brother 🌸 — iconic, lowkey underrated, the way they show up in the list with a No on debug
    • board_espressif32_espea32 — platform platform_espressif32, Debug: No, MCU ESP32, Frequency 240MHz, Flash 4MB, RAM 320KB
  • BPI Tech 🦋 — main character energy, but make it a slightly slower clock, and that's just the facts
    • board_espressif32_bpi-bit — platform platform_espressif32, Debug: No, MCU ESP32, Frequency 160MHz, Flash 4MB, RAM 320KB
  • DFRobot 🔥 — gravity-defying brand name, gravity-defying board list
    • board_espressif32_firebeetle32 — platform platform_espressif32, Debug: External, MCU ESP32, Frequency 240MHz, Flash 4MB, RAM 320KB
  • DOIT 💅 — longest board name in this whole stretch and honestly? slay
    • board_espressif32_esp32doit-devkit-v1 — platform platform_espressif32, Debug: External, MCU ESP32, Frequency 240MHz, Flash 4MB, RAM 320KB

DSTIKE 🎀

  • board_espressif32_d-duino-32 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB

Dongsen Technology ✨

  • board_espressif32_pocket_32 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB

DycodeX 💜

  • board_espressif32_espectro32 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB

ESP32vn 🌸

  • board_espressif32_esp32vn-iot-uno — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB

Electronic SweetPeas 🍓

  • board_espressif32_esp320 — platform: platform_espressif32, debug: No, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB

Espressif 🔥

okay bestie, this one's the whole moment — three boards, all iconic, all ESP32-core energy 👑

  • board_espressif32_pico32 — platform: platform_espressif32, debug: No, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB
  • board_espressif32_esp-wrover-kit — platform: platform_espressif32, debug: On-board, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB
  • board_espressif32_esp32dev — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB
the wrover-kit is lowkey the one with On-board debug instead of External, so if you need built-in debugging without extra hardware, that's your girl 💅

Fred 🦋

  • board_espressif32_frogboard — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB

Hardkernel ⭐

(the table rolls on into this manufacturer next — stay tuned, bestie, the list does NOT stop here 🫶)

okay so the ODROID row finally finishes and then we're straight into a whole parade of ESP32 vendors — grab a snack bestie, this is a long one 🍓

  • board_espressif32_odroid_esp32 — platform: platform_espressif32 · debug: No · MCU: ESP32 · frequency: 240MHz · flash: 16MB · RAM: 320KB

✨ Heltec Automation ✨

four boards, and the way that three of them say External debug while the baby one says No… noted 👑

  • board_espressif32_heltec_wifi_kit_32 — platform: platform_espressif32 · debug: No · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB
  • board_espressif32_heltec_wifi_lora_32 — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB
  • board_espressif32_heltec_wifi_lora_32_V2 — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 8MB · RAM: 320KB
  • board_espressif32_heltec_wireless_stick — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 8MB · RAM: 320KB

lowkey the two 8MB ones ate and left no crumbs compared to the 4MB kit 💅


🌸 Hornbill 🌸

just two little birds and they're both giving External

  • board_espressif32_hornbill32dev — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB
  • board_espressif32_hornbill32minima — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

fr fr they are literally identical in every column except the name, iconic twin behaviour 🦋


🎀 IntoRobot 🎀

one (1) board, and it said No to debug

  • board_espressif32_intorobot — platform: platform_espressif32 · debug: No · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

🔥 M5Stack 🔥

okay this is the part where the numbers get spicy. four boards, all No debug, all 240MHz, all ESP32 — but look at the flash and RAM, bestie 😭

  • board_espressif32_m5stack-core-esp32 — platform: platform_espressif32 · debug: No · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB
  • board_espressif32_m5stack-fire — platform: platform_espressif32 · debug: No · MCU: ESP32 · frequency: 240MHz · flash: 16MB · RAM: 6.25MB
  • board_espressif32_m5stack-grey — platform: platform_espressif32 · debug: No · MCU: ESP32 · frequency: 240MHz · flash: 16MB · RAM: 520KB
  • board_espressif32_m5stick-c — platform: platform_espressif32 · debug: No · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB
the way board_espressif32_m5stack-fire and board_espressif32_m5stack-grey both rock 16MB flash but the fire has 6.25MB RAM and the grey has 520KB… the math is not mathing and yet there it is 🙈

⭐ MH-ET Live ⭐

and we close this stretch with two dev boards that both woke up and chose External

  • board_espressif32_mhetesp32devkit — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB
  • board_espressif32_mhetesp32minikit — platform: platform_espressif32 · debug: External · MCU: ESP32 · frequency: 240MHz · flash: 4MB · RAM: 320KB

periodt — every one of these lives under the platform_espressif32 platform, every single one is an ESP32 running at 240MHz, and the only things that ever change are the debug column, the flash and the RAM 💖


│ board_espressif32_onehorse32dev │ platform_espressif32 │ No │ ESP32 │ 240MHz │ 4MB │ 320KB │


✨ Boards by Vendor, continued 💅

okay so we're STILL going through the vendor tables bestie, we are so close, keep your eyes on the prize 🎀

🧱 Magicblocks.io

  • board_espressif32_magicbit — platform platform_espressif32, Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (no debug probe, just vibes and 240 megahertz of pure main character energy) ✨

🧱 MakerAsia

  • board_espressif32_nano32 — platform platform_espressif32, Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (nano by name, fully capable by nature fr fr) 🦋

🧱 Microduino

  • board_espressif32_microduino-core-esp32 — platform platform_espressif32, Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (a whole ESP32 core in a teeny tiny form factor, it's giving miniature icon) 🍓

🧱 NodeMCU

  • board_espressif32_nodemcu-32s — platform platform_espressif32, Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (bestie this one HAS external debug, so you can actually poke at it, obsessed) 🔥

🧱 Noduino

  • board_espressif32_quantum — platform platform_espressif32, Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 16MB, RAM: 320KB (SIXTEEN megabytes of flash?? that's a whole photo album, she's stacked) 👑

🧱 OLIMEX

  • board_espressif32_esp32-devkitlipo — platform platform_espressif32, Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (external debugger, so you get the full dev experience) 💜
  • board_espressif32_esp32-evb — platform platform_espressif32, Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (EVB = evaluation board, and she evaluates REAL hard) 💜
  • board_espressif32_esp32-gateway — platform platform_espressif32, Debug: External, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (a gateway board with external debug, very demure, very connected) 💜
  • board_espressif32_esp32-pro — platform platform_espressif32, Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (she said "pro" but no external debug, so the pro-ness is all internal, iykyk) 💜
  • board_espressif32_esp32-poe — platform platform_espressif32, Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (Power over Ethernet, so one cable does the whole job, slay) 💜
  • board_espressif32_esp32-poe-iso — platform platform_espressif32, Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (same PoE energy but ISO — electrically isolated, she's a little more careful than her sister) 💜
ngl the OLIMEX crew is a whole squad, three of them bring External debug and three of them just rawdog it with No. No judgement, every board is valid 💖

🧱 OROCA

  • board_espressif32_oroca_edubot — platform platform_espressif32, Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (an edu-bot, literally made for learning, so cute, so STEM) 🌸

🧱 Onehorse

  • board_espressif32_onehorse32dev — platform platform_espressif32, Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB (one horse, one dev board, no debug, all confidence) ⭐

same columns as always, bestie: Name, Platform, Debug, MCU, Frequency, Flash, RAM — every single value above is copied exactly, no cap, not one digit changed 🫶

still more vendors coming, don't you dare close the terminal 💅✨

🐍 Pycom Ltd.

okay so Pycom is up first and they're giving variety, we love to see it 💖

  • board_espressif32_pycom_gpy — platform platform_espressif32, debug: No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
  • board_espressif32_lopy — platform platform_espressif32, debug: External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
  • board_espressif32_lopy4 — platform platform_espressif32, debug: External, MCU ESP32, 240MHz, flash 4MB, RAM 1.25MB (not the lopy4 coming through with the extra RAM, periodt 💅)

🌸 Qmobot LLP

just the one board bestie, but she's doing her thing ✨

  • board_espressif32_qchip — platform platform_espressif32, debug: No, MCU ESP32, 240MHz, flash 4MB, RAM 320KB

🎀 SG-O

single board energy, and that board is giving "airMon" 🦋

  • board_espressif32_sg-o_airMon — platform platform_espressif32, debug: External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
heads up bestie, that name has a literal hyphen in it: sg-o_airMon — copy it exactly, no autocorrecting, iykyk

💜 Silicognition

one board, External debug, no notes 🙈

  • board_espressif32_wesp32 — platform platform_espressif32, debug: External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB

🔥 SparkFun

bestie this board name is LOWKEY a whole sentence, but we respect it 💀

  • board_espressif32_sparkfun_lora_gateway_1-channel — platform platform_espressif32, debug: External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB

⭐ SparkFun Electronics

(yeah it's the same SparkFun, different listing header, not me pointing that out 💅)

  • board_espressif32_esp32thing — platform platform_espressif32, debug: External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB

🌈 TTGO

okay TTGO said "here's a whole little family" and honestly? iconic 👑

  • board_espressif32_ttgo-lora32-v1 — platform platform_espressif32, debug: External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
  • board_espressif32_ttgo-lora32-v2 — platform platform_espressif32, debug: External, MCU ESP32, 240MHz, flash 4MB, RAM 320KB
  • board_espressif32_ttgo-t-beam — platform platform_espressif32, debug: External, MCU ESP32, 240MHz, flash 4MB, RAM 1.25MB (t-beam said "more RAM actually" and we stan 🫶)
quick vibe check: v1 and v2 are twinsies on paper here — same platform, same debug, same ESP32, same 240MHz, same 4MB, same 320KB. the difference lives in the board name only, so don't go inventing specs, fr fr.

okay so we're STILL deep in the board table and bestie it just keeps going — we're in the ESP32 section, all of these live on platform_espressif32, and every single one of them is a 240MHz ESP32. clocking that in, let's go 💖


🍓 ThaiEasyElec

  • board_espressif32_espino32 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB

✨ TinyPICO

  • board_espressif32_tinypico — platform: platform_espressif32, debug: No, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB

🦋 Turta

  • board_espressif32_turta_iot_node — platform: platform_espressif32, debug: No, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB

💀 Unknown

  • board_espressif32_fm-devkit — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB
ngl the vendor literally being called "Unknown" is sending me 😭 but the board itself is very much known, it's the fm-devkit, periodt.

🌈 VintLabs

  • board_espressif32_vintlabs-devkit-v1 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB

👑 WEMOS

  • board_espressif32_lolin_d32 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB
  • board_espressif32_lolin_d32_pro — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB
  • board_espressif32_lolin32 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB
  • board_espressif32_wemos_d1_mini32 — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB
  • board_espressif32_wemosbat — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB
five boards in one house?? WEMOS ate and left no crumbs, the D32, the D32 Pro, the classic lolin32, the D1 mini32 AND the wemosbat — all of them debug: External, all of them 4MB flash, 320KB RAM 💅

🧚 Widora

and yep, Widora's up next — hold that thought, because this table is NOT done with us yet 😌

  • board_espressif32_widora-air — platform: platform_espressif32, debug: No, MCU: ESP32, frequency: 240MHz, flash: 16MB, RAM: 320KB ✨

🌸 XinaBox

okay bestie, new vendor block, new vibe 💖 here's what XinaBox is bringing:

Nameboard_espressif32_xinabox_cw02
Platformplatform_espressif32
DebugExternal
MCUESP32
Frequency240MHz
Flash4MB
RAM320KB

So yeah — board_espressif32_xinabox_cw02 rides on platform_espressif32, it's an ESP32 at 240MHz, debug is External, and it's packing 4MB of flash with 320KB of RAM. No cap 🫶


🦋 oddWires

and then oddWires pulls up with two boards, both matching each other's energy fr fr:

  • board_espressif32_iotbusio — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB 💅
  • board_espressif32_iotbusproteus — platform: platform_espressif32, debug: External, MCU: ESP32, frequency: 240MHz, flash: 4MB, RAM: 320KB 💅

like, they're literally twins — same platform_espressif32, same External debug, same ESP32, same 240MHz, same 4MB flash, same 320KB RAM. iconic behavior honestly, and it ate 👑

heads up bestie: those box-drawing characters in the raw dump are just the table borders doing their little thing — the actual data is what we listed above, and it's all still here, nothing dropped, periodt.

🌸 u-blox

No fr, the u-blox crew is right here in the list 💖

  • board_espressif32_nina_w10 — platform: platform_espressif32, Debug: No 🙈, MCU: ESP32, Frequency: 240MHz, Flash: 2MB, RAM: 320KB

That's it for u-blox in this chunk — one lonely little board sitting there with its 320KB of RAM, doing its best. We love her anyway 🫶


🌈 Freedom E SDK — Configuration

Okay bestie, this is the Freedom E SDK corner of the docs and it has a lot going on. Let's break it down 💅

The configuration line is literally:

projectconf_env_framework = freedom-e-sdk

That's it. That's the whole config. Slay ✨

The tagline for this whole thing is:

Open Source Software for Developing on the SiFive Freedom E Platform

And for the tea ☕ the docs say: For more detailed information please visit vendor site.


🎀 Contents

Here's what's inside this section, in order:

  • Debugging
  • Examples
  • Platforms
  • Boards

💜 Debugging

So piodebug is described as the "1-click" solution for debugging with a zero configuration. Zero configuration!! Not me being obsessed with that 😭🔥

Underneath it, two sub-bullets:

  • Tools & Debug Probes
    • On-Board Debug Tools

🦋 Tools & Debug Probes

Here's the deal, bestie:

  • Supported debugging tools are listed in the "Debug" column. 👀
  • For more detailed information, please scroll table by horizontal — yes the table is that wide, you gotta scroll sideways, it's giving runway 🌈
  • You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. Very demure, very configurable ✨
WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions. ⚠️ Like, actually install them. Don't skip this step and then come crying to me, I will say I told you so 🙈

🎀 On-Board Debug Tools

Okay this part is genuinely iconic:

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe. 👑

No extra hardware, no shopping trip, no spending your allowance. It's already there. Main character energy fr fr 💖

The columns for this table are: Name, Platform, MCU, Frequency, Flash, RAM.

  • board_sifive_e310-arty — platform: platform_sifive, MCU: FE310, Frequency: 450MHz, Flash: 16MB, RAM: 256MB
  • board_sifive_hifive-unleashed — platform: platform_sifive, MCU: FU540, Frequency: 1500MHz, Flash: 32MB, RAM: 8GB 🔥 (1500MHz?? 8GB of RAM?? she's a whole desktop computer bestie)
  • board_sifive_hifive1 — platform: platform_sifive, MCU: FE310, Frequency: 320MHz, Flash: 16MB, RAM: 16KB
  • board_sifive_hifive1-revb — platform: platform_sifive, MCU: FE310, Frequency: 320MHz, Flash: 16MB, RAM: 16KB
  • board_sifive_sparkfun_redboard_v — platform: platform_sifive, MCU: FE310, Frequency: 320MHz, Flash: 16MB, RAM: 16KB
  • board_sifive_sparkfun_thing_plus_v — platform: platform_sifive, MCU: FE310, Frequency: 320MHz, Flash: 16MB, RAM: 16KB

Copy those board names exactly as written, character for character — they're the real deal, no paraphrasing, no "close enough" 💅


✨ Examples

Just the one example listed here, and she's a classic:

  • Freedom E SDK for SiFive 🎀

🌸 Platforms

Columns: Name, Description.

  • platform_sifive — SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before.

Lowkey a whole mission statement in a table cell 😭 open source + automation + faster + cheaper hardware = the vibe ✨


Boards 🌈

NOTE: bestie, read this before you start scrolling, okay?
  • You can list pre-configured boards by the cmd_boards command, or by using the PlatformIO Boards Explorer. ✨
  • For more detailed board information please scroll the tables below by horizontally. 💅 (yes, sideways. the tables are long. it's giving horizontal scroll realness)

SiFive 🦋

  • board_sifive_hifive-unleashed — Platform: platform_sifive · Debug: On-board · MCU: FU540 · Frequency: 1500MHz · Flash: 32MB · RAM: 8GB 👑
  • board_sifive_hifive1 — Platform: platform_sifive · Debug: On-board · MCU: FE310 · Frequency: 320MHz · Flash: 16MB · RAM: 16KB
  • board_sifive_hifive1-revb — Platform: platform_sifive · Debug: On-board · MCU: FE310 · Frequency: 320MHz · Flash: 16MB · RAM: 16KB

SparkFun 🌸

  • board_sifive_sparkfun_redboard_v — Platform: platform_sifive · Debug: On-board · MCU: FE310 · Frequency: 320MHz · Flash: 16MB · RAM: 16KB
  • board_sifive_sparkfun_thing_plus_v — Platform: platform_sifive · Debug: On-board · MCU: FE310 · Frequency: 320MHz · Flash: 16MB · RAM: 16KB
not the truncated board names 💀 literally copy them character for character, do NOT get cute with them.

Xilinx 💜

  • board_sifive_e310-arty — Platform: platform_sifive · Debug: On-board · MCU: FE310 · Frequency: 450MHz · Flash: 16MB · RAM: 256MB 🔥

GigaDevice GD32V SDK Configuration 🎀

projectconf_env_framework = gd32vf103-sdk

GigaDevice GD32VF103 Firmware Library (SDK)

For more detailed information please visit vendor site. 🫶


Contents ⭐

  • Debugging
  • Examples
  • Platforms
  • Boards

Debugging 💖

piodebug — the "1-click" solution for debugging with a zero configuration. no cap, it really is that easy. ✨

  • Tools & Debug Probes
    • External Debug Tools

Tools & Debug Probes 🧚

Supported debugging tools are listed in the "Debug" column. For more detailed information, please scroll the table by horizontal. 😭 (again with the horizontal scroll, i know)

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for further instructions. don't skip this step bestie, fr fr. 🙈

External Debug Tools 🔥

Boards listed below are compatible with piodebug but DEPEND ON an external debug probe. They ARE NOT READY for debugging. 😭 Please click on the board name for further details.

  • board_gd32v_gd32vf103v-eval — Platform: platform_gd32v · MCU: GD32VF103VBT6 · Frequency: 108MHz · Flash: 128KB · RAM: 32KB
  • board_gd32v_sipeed-longan-nano — Platform: platform_gd32v · MCU: GD32VF103CBT6 · Frequency: 108MHz · Flash: 128KB · RAM: 32KB
  • board_gd32v_sipeed-longan-nano-lite — Platform: platform_gd32v · MCU: GD32VF103C8T6 · Frequency: 108MHz · Flash: 64KB · RAM: 20KB
  • board_gd32v_wio_lite_risc-v — Platform: platform_gd32v · MCU: GD32VF103CBT6 · Frequency: 108MHz · Flash: 128KB · RAM: 32KB

okay that's the whole board lineup for this chunk, keep scrolling bestie, there's more 💖

✨ Examples ✨

  • 🎀 GigaDevice GD32V SDK for GigaDevice GD32V

🌈 Platforms 🌈

  • platform_gd32v — The GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the RISC-V core with an impressive balance of processing power, reduced power consumption and peripheral set. bestie it's giving efficiency icon 💅

💅 Boards 💅

NOTE: 👀 okay so, heads up:
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally.

SeeedStudio 🌸

  • board_gd32v_wio_lite_risc-v — Platform: platform_gd32v · Debug: External · MCU: GD32VF103CBT6 · Frequency: 108MHz · Flash: 128KB · RAM: 32KB

Sipeed 🦋

  • board_gd32v_gd32vf103v-eval — Platform: platform_gd32v · Debug: External · MCU: GD32VF103VBT6 · Frequency: 108MHz · Flash: 128KB · RAM: 32KB
  • board_gd32v_sipeed-longan-nano — Platform: platform_gd32v · Debug: External · MCU: GD32VF103CBT6 · Frequency: 108MHz · Flash: 128KB · RAM: 32KB
  • board_gd32v_sipeed-longan-nano-lite — Platform: platform_gd32v · Debug: External · MCU: GD32VF103C8T6 · Frequency: 108MHz · Flash: 64KB · RAM: 20KB

🍓 Kendryte FreeRTOS SDK 🍓

⚙️ Configuration ⚙️

projectconf_env_framework = kendryte-freertos-sdk

Kendryte SDK with FreeRTOS support 🫶

For more detailed information please visit vendor site.

📚 Contents 📚

  • Debugging
  • Examples
  • Platforms
  • Boards

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration. ✨ no cap, it really is that easy

  • Tools & Debug Probes
    • External Debug Tools

🛠️ Tools & Debug Probes 🛠️

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

WARNING: ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

🔍 External Debug Tools 🔍

Boards listed below are compatible with piodebug but DEPEND ON external debug probe. They ARE NOT READY for debugging. 😭 Please click on board name for the further details.

  • board_kendryte210_sipeed-maix-bit — Platform: platform_kendryte210 · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-maix-bit-mic — Platform: platform_kendryte210 · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-maix-go — Platform: platform_kendryte210 · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-maix-one-dock — Platform: platform_kendryte210 · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-maixduino — Platform: platform_kendryte210 · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-MF1 — Platform: platform_kendryte210 · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB

✨ Examples ✨

  • 🎀 Kendryte FreeRTOS SDK for Kendryte K210

🌈 Platforms 🌈

  • platform_kendryte210 — Kendryte K210 is an AI capable RISCV64 dual core SoC. 🔥 AI and dual core? obsessed.

💅 Boards 💅

NOTE: 👀 read me first bestie:
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally.

Sipeed 🦋

  • board_kendryte210_sipeed-maix-bit — Platform: platform_kendryte210 · Debug: External · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-maix-bit-mic — Platform: platform_kendryte210 · Debug: External · MCU: K210 · Frequency: 400MHz · Flash: 16MB · RAM: 6MB
  • board_kendryte210_sipeed-maix-go — platform platform_kendryte210, Debug External, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-maix-one-dock — platform platform_kendryte210, Debug External, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-maixduino — platform platform_kendryte210, Debug External, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-MF1 — platform platform_kendryte210, Debug External, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB

🧸 Kendryte Standalone SDK

⚙️ Configuration

Set the framework like this, bestie:

projectconf_env_framework = kendryte-standalone-sdk

Kendryte Standalone SDK without OS support — yeah, no operating system, just vibes and raw silicon. 🫶

For more detailed information please visit vendor site.


📚 Contents

  1. Debugging
  2. Examples
  3. Platforms
  4. Boards

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. Iconic behaviour honestly. ✨

  • Tools & Debug Probes
    • External Debug Tools

🔍 Tools & Debug Probes

Supported debugging tools are listed in the "Debug" column. For more detailed information, please scroll table by horizontal (yes, the table is that wide, swipe away). You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions. Do not skip this, I am literally begging. 😭

🧲 External Debug Tools

Boards listed below are compatible with piodebug but DEPEND ON an external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details. Like, they're cute but they're not ready, okay? 🙈

  • board_kendryte210_sipeed-maix-bit — platform platform_kendryte210, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-maix-bit-mic — platform platform_kendryte210, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-maix-go — platform platform_kendryte210, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-maix-one-dock — platform platform_kendryte210, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-maixduino — platform platform_kendryte210, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-MF1 — platform platform_kendryte210, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB

🌸 Examples

  • Kendryte Standalone SDK for Kendryte K210

🦋 Platforms

  • platform_kendryte210 — Kendryte K210 is an AI capable RISCV64 dual core SoC. AI capable!! dual core!! RISCV64!! she's doing a lot, and she's serving. 💖

👑 Boards

NOTE: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

🍓 Sipeed

  • board_kendryte210_sipeed-maix-bit — platform platform_kendryte210, Debug External, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-maix-bit-mic — platform platform_kendryte210, Debug External, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-maix-go — platform platform_kendryte210, Debug External, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-maix-one-dock — platform platform_kendryte210, Debug External, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-maixduino — platform platform_kendryte210, Debug External, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB
  • board_kendryte210_sipeed-MF1 — platform platform_kendryte210, Debug External, MCU K210, Frequency 400MHz, Flash 16MB, RAM 6MB

└────────────────────────────────────────┴──────────────────────┴──────────┴──────┴───────────┴───────┴─────┘

🌸 libOpenCM3 🌸

✨ Configuration ✨

ok bestie first things first, you gotta set the vibe in your config:

projectconf_env_framework = libopencm3

Now the tea ☕ — the libOpenCM3 framework is out here trying to create a free/libre/open-source firmware library for a whole bunch of ARM Cortex-M0(+)/M3/M4 microcontrollers. Like, it's giving range. Which ones? Sit down:

  • ST STM32
  • Ti Tiva and Stellaris
  • NXP LPC 11xx, 13xx, 15xx, 17xx parts
  • Atmel SAM3
  • Energy Micro EFM32
  • and others 💅

For more detailed information please visit vendor site. (yeah that's all it says, go look it up lol)


📋 Contents 📋

  • Debugging
  • Examples
  • Platforms
  • Boards

🐛 Debugging 🐛

piodebug — it's the "1-click" solution for debugging with a zero configuration. no cap, zero config, we love to see it 💖

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🔧 Tools & Debug Probes 🔧

The debugging tools we support are literally listed in the "Debug" column. Want more detail? Please scroll table by horizontal, bestie — it's a wide one, she's got range 📏

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. Switching = slay.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions. 🚨 like genuinely, do this first or nothing works, and then you'll be sad, and I'll be sad, and nobody wants that.

🎀 On-Board Debug Tools 🎀

okay these boards?? they have an on-board debug probe and they ARE READY for debugging! You do not need to use/buy external debug probe. icon behavior, honestly. The board ate and left no crumbs 💅✨

  • board_ststm32_nucleo_f103rb — Platform: platform_ststm32 · MCU: STM32F103RBT6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_disco_f303vc — Platform: platform_ststm32 · MCU: STM32F303VCT6 · Frequency: 72MHz · Flash: 256KB · RAM: 48KB
  • board_ststm32_disco_f407vg — Platform: platform_ststm32 · MCU: STM32F407VGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 128KB
  • board_ststm32_disco_l152rb — Platform: platform_ststm32 · MCU: STM32L152RBT6 · Frequency: 32MHz · Flash: 128KB · RAM: 16KB
  • board_titiva_lplm4f120h5qr — Platform: platform_titiva · MCU: LPLM4F120H5QR · Frequency: 80MHz · Flash: 256KB · RAM: 32KB
  • board_titiva_lptm4c1230c3pm — Platform: platform_titiva · MCU: LPTM4C1230C3PM · Frequency: 80MHz · Flash: 256KB · RAM: 32KB
  • board_titiva_lptm4c1294ncpdt — Platform: platform_titiva · MCU: LPTM4C1294NCPDT · Frequency: 120MHz · Flash: 1MB · RAM: 256KB

🧚 External Debug Tools 🧚

and now for the boards that are compatible with piodebug but DEPEND ON external debug probe. They ARE NOT READY for debugging 😭 you gotta bring your own probe, bestie, sorry, them's the rules. Please click on board name for the further details.

  • board_ststm32_1bitsy_stm32f415rgt — Platform: platform_ststm32 · MCU: STM32F415RGT · Frequency: 168MHz · Flash: 1MB · RAM: 128KB
  • board_ststm32_blackpill_f103c8 — Platform: platform_ststm32 · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_blackpill_f103c8_128 — Platform: platform_ststm32 · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_bluepill_f103c8 — Platform: platform_ststm32 · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_bluepill_f103c8_128k — Platform: platform_ststm32 · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_maple — Platform: platform_ststm32 · MCU: STM32F103RBT6 · Frequency: 72MHz · Flash: 108KB · RAM: 17KB
  • board_ststm32_maple_ret6 — Platform: platform_ststm32 · MCU: STM32F103RET6 · Frequency: 72MHz · Flash: 256KB · RAM: 48KB
  • board_ststm32_maple_mini_b20 — Platform: platform_ststm32 · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 120KB · RAM: 20KB
  • board_ststm32_maple_mini_origin — Platform: platform_ststm32 · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 108KB · RAM: 17KB
  • board_ststm32_olimexino — Platform: platform_ststm32 · MCU: STM32F103RBT6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_genericSTM32F103C8 — Platform: platform_ststm32 · MCU: STM32F103C8T6 · Frequency: 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_genericSTM32F103CB — Platform: platform_ststm32 · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_genericSTM32F103R8 — Platform: platform_ststm32 · MCU: STM32F103R8T6 · Frequency: 72MHz · Flash: 64KB · RAM: 20KB
  • board_ststm32_genericSTM32F103RB — Platform: platform_ststm32 · MCU: STM32F103RBT6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB

…okay so the STM32 table was not done with us yet bestie, it just keeps going 😭 here's the rest of the generic platform_ststm32 entries — same columns as before: name, platform, MCU, frequency, flash, RAM. Go off 👑

  • board_ststm32_genericSTM32F103RC — platform platform_ststm32, MCU STM32F103RCT6, 72MHz, flash 256KB, RAM 48KB 💖
  • board_ststm32_genericSTM32F103RE — platform platform_ststm32, MCU STM32F103RET6, 72MHz, flash 512KB, RAM 64KB ✨
  • board_ststm32_genericSTM32F103T8 — platform platform_ststm32, MCU STM32F103T8T6, 72MHz, flash 64KB, RAM 20KB 🦋
  • board_ststm32_genericSTM32F103TB — platform platform_ststm32, MCU STM32F103TBT6, 72MHz, flash 128KB, RAM 20KB 🌸
  • board_ststm32_genericSTM32F103VB — platform platform_ststm32, MCU STM32F103VBT6, 72MHz, flash 128KB, RAM 20KB 💅
  • board_ststm32_genericSTM32F103VC — platform platform_ststm32, MCU STM32F103VCT6, 72MHz, flash 256KB, RAM 48KB 🫶
  • board_ststm32_genericSTM32F103VD — platform platform_ststm32, MCU STM32F103VDT6, 72MHz, flash 384KB, RAM 64KB 🔥
  • board_ststm32_genericSTM32F103VE — platform platform_ststm32, MCU STM32F103VET6, 72MHz, flash 512KB, RAM 64KB 👑
  • board_ststm32_genericSTM32F103ZC — platform platform_ststm32, MCU STM32F103ZCT6, 72MHz, flash 256KB, RAM 48KB 🌈
  • board_ststm32_genericSTM32F103ZD — platform platform_ststm32, MCU STM32F103ZDT6, 72MHz, flash 384KB, RAM 64KB ⭐
  • board_ststm32_genericSTM32F103ZE — platform platform_ststm32, MCU STM32F103ZET6, 72MHz, flash 512KB, RAM 64KB 💜

✨ Examples ✨

  • libOpenCM3 for ST STM32 🌸
  • libOpenCM3 for TI TIVA 🌸

🦋 Platforms 🦋

  • platform_ststm32 — the STM32 family, aka 32-bit Flash MCUs built on the ARM Cortex-M processor, designed to hand MCU users brand new degrees of freedom, no cap. It's a 32-bit product range that pulls together very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, all while keeping full integration and ease of development intact 💖
  • platform_titiva — Texas Instruments TM4C12x MCUs, and they're serving the industrys most popular ARM Cortex-M4 core with scalable memory and package options, unparalleled connectivity peripherals, advanced application functions, industry-leading analog integration, and extensive software solutions 🎀

👑 Boards 👑

NOTE: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer 💫 - For more detailed board information please scroll the tables below by horizontally 👀

1BitSquared

columns are Name · Platform · Debug · MCU · Frequency · Flash · RAM, and here's the whole lineup:

  • board_ststm32_1bitsy_stm32f415rgt — platform platform_ststm32, debug External, MCU STM32F415RGT, 168MHz, flash 1MB, RAM 128KB 🔥

Generic

same columns, same energy:

  • board_ststm32_blackpill_f103c8 — platform platform_ststm32, debug External, MCU STM32F103C8T6, 72MHz, flash 64KB, RAM 20KB 🖤
  • board_ststm32_blackpill_f103c8_128 — platform platform_ststm32, debug External, MCU STM32F103C8T6, 72MHz, flash 128KB, RAM 20KB 🖤✨
  • board_ststm32_bluepill_f103c8 — platform platform_ststm32, debug External, MCU STM32F103C8T6, 72MHz, flash 64KB, RAM 20KB 💙
  • board_ststm32_bluepill_f103c8_128k — platform platform_ststm32, debug External, MCU STM32F103C8T6, 72MHz, flash 128KB, RAM 20KB 💙✨

...and the generic STM32F103 roster keeps going, bestie, no thoughts just boards 💅 every single one of these is chillin' on platform_ststm32 with External debug energy:

  • board_ststm32_genericSTM32F103C8 — MCU STM32F103C8T6, 72MHz, 64KB flash, 20KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103CB — MCU STM32F103CBT6, 72MHz, 128KB flash, 20KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103R8 — MCU STM32F103R8T6, 72MHz, 64KB flash, 20KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103RB — MCU STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103RC — MCU STM32F103RCT6, 72MHz, 256KB flash, 48KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103RE — MCU STM32F103RET6, 72MHz, 512KB flash, 64KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103T8 — MCU STM32F103T8T6, 72MHz, 64KB flash, 20KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103TB — MCU STM32F103TBT6, 72MHz, 128KB flash, 20KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103VB — MCU STM32F103VBT6, 72MHz, 128KB flash, 20KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103VC — MCU STM32F103VCT6, 72MHz, 256KB flash, 48KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103VD — MCU STM32F103VDT6, 72MHz, 384KB flash, 64KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103VE — MCU STM32F103VET6, 72MHz, 512KB flash, 64KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103ZC — MCU STM32F103ZCT6, 72MHz, 256KB flash, 48KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103ZD — MCU STM32F103ZDT6, 72MHz, 384KB flash, 64KB RAM, debug External, platform platform_ststm32
  • board_ststm32_genericSTM32F103ZE — MCU STM32F103ZET6, 72MHz, 512KB flash, 64KB RAM, debug External, platform platform_ststm32

and THAT'S the whole generic family, slay 💖


🍁 LeafLabs 🍁

okay these are the Maple girlies and they are iconic, fr fr:

  • board_ststm32_maple — MCU STM32F103RBT6, 72MHz, 108KB flash, 17KB RAM, debug External, platform platform_ststm32
  • board_ststm32_maple_ret6 — MCU STM32F103RET6, 72MHz, 256KB flash, 48KB RAM, debug External, platform platform_ststm32
  • board_ststm32_maple_mini_b20 — MCU STM32F103CBT6, 72MHz, 120KB flash, 20KB RAM, debug External, platform platform_ststm32
  • board_ststm32_maple_mini_origin — MCU STM32F103CBT6, 72MHz, 108KB flash, 17KB RAM, debug External, platform platform_ststm32
not the two minis having the same MCU but different flash and RAM numbers 😭 the _b20 said 120KB/20KB and the _origin said 108KB/17KB, so like... pick your fighter bestie, the numbers are literally right there 👑

💜 Olimex 💜

one board, one legend, she doesn't need a whole squad:

  • board_ststm32_olimexino — MCU STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM, debug External, platform platform_ststm32

✨ ST ✨

and here comes the house brand 👑 where the debug column switches it up from External to On-board, iykyk:

  • board_ststm32_nucleo_f103rb — MCU STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM, debug On-board, platform platform_ststm32
  • board_ststm32_disco_f303vc — platform platform_ststm32, debug On-board, MCU STM32F303VCT6, 72MHz, flash 256KB, RAM 48KB 🦋
  • board_ststm32_disco_f407vg — platform platform_ststm32, debug On-board, MCU STM32F407VGT6, 168MHz, flash 1MB, RAM 128KB 🦋
  • board_ststm32_disco_l152rb — platform platform_ststm32, debug On-board, MCU STM32L152RBT6, 32MHz, flash 128KB, RAM 16KB 🦋

okay that's the STM32 lineup wrapped, bestie, and the table said periodt ✨


🎀 TI 🎀

next up it's giving Texas Instruments energy, no cap, and here's the whole squad 💅 same columns as always: Name · Platform · Debug · MCU · Frequency · Flash · RAM

  • board_titiva_lplm4f120h5qr — platform platform_titiva, debug On-board, MCU LPLM4F120H5QR, 80MHz, flash 256KB, RAM 32KB 🍓
  • board_titiva_lptm4c1230c3pm — platform platform_titiva, debug On-board, MCU LPTM4C1230C3PM, 80MHz, flash 256KB, RAM 32KB 🍓
  • board_titiva_lptm4c1294ncpdt — platform platform_titiva, debug On-board, MCU LPTM4C1294NCPDT, 120MHz, flash 1MB, RAM 256KB 🍓

and yes the TI section keeps going, we're not done yet — more boards incoming 👑

---

🧚 Mbed 🧚

Configuration

projectconf_env_framework = mbed

okay so the mbed framework? the mbed SDK was literally designed to give you enough hardware abstraction to be intuitive and concise, but also powerful enough to build complex projects. it's built on the low-level ARM CMSIS APIs, so you can code down to the metal if you need to. and on top of the SDK, the mbed Developer Community built a whole cookbook of hundreds of reusable peripheral and module libraries, plus RTOS, USB and Networking libraries. iconic 💅

for more detailed information please visit vendor site. 🫶

Contents

  • Configuration
  • Debugging
  • Examples
  • Platforms
  • Boards

Configuration

  • Configuration system
  • Mbed lib and Mbed OS 5
  • Build profiles
  • Ignoring particular components
  • Custom Targets

Configuration system

PlatformIO lets you customize mbed OS compile time configuration parameters using the mbed_app.json manifest. it has to live in the root of your project, on the same level as projectconf. no cap.

configuration is defined using JSON. some examples of configuration parameters:

  • the sampling period for a data acquisition application.
  • the default stack size for a newly created OS thread.
  • the receive buffer size of a serial communication library.
  • the flash and RAM memory size of a target board.

see more details in the official ARM Mbed OS Configuration System. ✨

a few PlatformIO-ready projects based on ARM mbed OS which use mbed_app.json:

  • Freescale Kinetis: mbed-rtos-tls-client
  • ST STM32: mbed-rtos-mesh-minimal

Mbed lib and Mbed OS 5

PlatformIO lets you compile projects with or without Mbed OS. by default, your project is built without the OS feature. but heads up bestie — most of the framework functionality requires the OS to be enabled. to add the OS feature you use a special macro definition that needs to be added to projectconf_build_flags of projectconf:

  • PIO_FRAMEWORK_MBED_RTOS_PRESENT — build the project with enabled rtos

an example of projectconf with enabled rtos:

[env:wizwiki_w7500p]
platform = wiznet7500
framework = mbed
board = wizwiki_w7500p
build_flags = -D PIO_FRAMEWORK_MBED_RTOS_PRESENT

Build profiles

by default, PlatformIO builds your project using the develop profile, which gives you optimized firmware size with full error information and lets the MCU go to sleep mode 😴. but if the default build profile isn't it for your project, there are two other profiles — release and debug — that you can enable with special macro definitions. you change the build profile in projectconf_build_flags of projectconf:

  • MBED_BUILD_PROFILE_RELEASE — release profile (smallest firmware, minimal error info)
  • MBED_BUILD_PROFILE_DEBUG — debug profile (largest firmware, disabled sleep mode)

more info about the differences between build profiles is on the official page ARM Mbed OS Build Profiles. 🦋

Ignoring particular components

if you don't need all parts of the framework, or you just want to cut down compilation time, you can explicitly exclude folders with redundant sources. for example, to remove cellular, mbedtls and nanostack features from the build process, navigate to projectconf_pio_packages_dir and create a new file framework-mbed/features/.mbedignore with the following contents:

cellular/*
mbedtls/*
nanostack/*

if you want to exclude the entire folder, just create the .mbedignore file and add only one symbol * to it. that's it, that's the whole trick 💀

Custom Targets

if your board isn't officially supported by Mbed, you can manually add custom board definitions to your project. first of all, you need to create a special file custom_targets.json in the root folder of your project where you describe your board. for example, here's the configuration for the NUCLEO-F401RE board:

{
  "NUCLEO_F401RE": {
        "inherits": ["FAMILY_STM32"],
        "supported_form_factors": ["ARDUINO", "MORPHO"],
        "core": "Cortex-M4F",
        "extra_labels_add": ["STM32F4", "STM32F401xE", "STM32F401RE"],
        "config": {
            "clock_source": {
                "help": "Mask value : USE_PLL_HSE_EXTC | USE_PLL_HSE_XTAL (need HW patch) | USE_PLL_HSI",
                "value": "USE_PLL_HSE_EXTC|USE_PLL_HSI",
                "macro_name": "CLOCK_SOURCE"
            }
        },
        "detect_code": ["0720"],
        "macros_add": ["USB_STM_HAL", "USBHOST_OTHER"],
        "device_has_add": [
            "SERIAL_ASYNCH",
            "FLASH",
            "MPU"
        ],
        "release_versions": ["2", "5"],
        "device_name": "STM32F401RE"
    }
}

secondly, you need to add code specific to your target to the src folder of your project. usually it's a good idea to isolate this code in a separate folder and add the path to this folder to projectconf_build_flags of projectconf:

[env:my_custom_board]
platform = nxplpc
framework = mbed
board = my_custom_board
build_flags = -I$PROJECT_SRC_DIR/MY_CUSTOM_BOARD_TARGET

next, you need to inform PlatformIO that there's a new custom board. to do this, you can create a boards directory in the root folder of your project and add a board manifest file with your board name, e.g. my_custom_board.json as described here board_creating. 📝

after these steps, your project structure should look like this:

project_dir
├── include
├── boards
│    └── my_custom_board.json
├── src
│    ├── main.cpp
│    └── MY_CUSTOM_BOARD_TARGET
│         ├── pinNames.h
│         └── pinNames.c
├── custom_targets.json
└── platformio.ini

more information about adding custom targets can be found on the official page

Adding and configuring targets.

see full examples with a custom board:

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. no setup arc, just vibes 🎀

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

Tools & Debug Probes

supported debugging tools are listed in the "Debug" column. for more detailed information, please scroll the table by horizontal. you can switch between debugging tools using the projectconf_debug_tool option in projectconf. ✨

WARNING: you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further instructions. don't skip this bestie, fr fr 😭

On-Board Debug Tools

boards listed below have an on-board debug probe and ARE READY for debugging! you do not need to use/buy an external debug probe. periodt. 👑

  • board_ststm32_disco_f412zg — platform platform_ststm32, MCU STM32F412ZGT6, frequency 100MHz, flash 1MB, RAM 256KB ⭐
  • board_ststm32_b96b_f446ve — platform platform_ststm32, MCU STM32F446VET6, frequency 168MHz, flash 512KB, RAM 128KB 🌸
  • board_nxplpc_lpc11u24_301 — platform platform_nxplpc, MCU LPC11U24, frequency 48MHz, flash 32KB, RAM 8KB 🦋

Still the same four-ish columns, bestie: board id, platform, the actual chip, clock speed, flash, RAM. Table's still rolling, so let's keep scrolling 👑

  • board_atmelsam_samr21_xpro — platform platform_atmelsam, chip SAMR21G18A, 48MHz, 256KB flash, 32KB RAM ✨
  • board_atmelsam_samd21g18a — platform platform_atmelsam, chip SAMD21G18A, 48MHz, 256KB flash, 32KB RAM 🦋
  • board_atmelsam_samd21_xpro — platform platform_atmelsam, chip SAMD21J18A, 48MHz, 256KB flash, 32KB RAM 💖
  • board_atmelsam_saml21_xpro_b — platform platform_atmelsam, chip SAML21J18B, 48MHz, 256KB flash, 32KB RAM 🎀

  • board_nordicnrf51_bbcmicrobit — platform platform_nordicnrf51, chip NRF51822, 16MHz, 256KB flash, 16KB RAM 🫶

  • board_nxplpc_lpc4330_m4 — platform platform_nxplpc, chip LPC4330, 204MHz, 8MB flash, 264KB RAM 🔥 (eight whole megabytes, she's not playing)
  • board_nxplpc_elektor_cocorico — platform platform_nxplpc, chip LPC812, 30MHz, 16KB flash, 4KB RAM 🍓 (tiny but she's doing her best, and that's iconic)

  • board_nordicnrf52_delta_dfbm_nq620 — platform platform_nordicnrf52, chip NRF52832, 64MHz, 512KB flash, 64KB RAM 💅

  • board_nordicnrf51_dfcm_nnn40 — platform platform_nordicnrf51, chip NRF51822, 32MHz, 256KB flash, 32KB RAM 🌸
  • board_nordicnrf51_delta_dfcm_nnn50 — platform platform_nordicnrf51, chip NRF51822, 32MHz, 256KB flash, 16KB RAM 🌈

  • board_siliconlabsefm32_efm32gg_stk3700 — platform platform_siliconlabsefm32, chip EFM32GG990F1024, 48MHz, 1MB flash, 128KB RAM ⭐
  • board_siliconlabsefm32_efm32lg_stk3600 — platform platform_siliconlabsefm32, chip EFM32LG990F256, 48MHz, 256KB flash, 32KB RAM 🧚
  • board_siliconlabsefm32_efm32wg_stk3800 — platform platform_siliconlabsefm32, chip EFM32WG990F256, 48MHz, 256KB flash, 32KB RAM 💜
  • board_siliconlabsefm32_efm32zg_stk3200 — platform platform_siliconlabsefm32, chip EFM32ZG222F32, 24MHz, 32KB flash, 4KB RAM 🙈

  • board_nxplpc_lpc4088_dm — platform platform_nxplpc, chip LPC4088, 120MHz, 512KB flash, 96KB RAM ✨
  • board_nxplpc_lpc4088 — platform platform_nxplpc, chip LPC4088, 120MHz, 512KB flash, 96KB RAM 💖 (same specs, no _dm on the name — yes, they're both here, that's not a typo bestie)

  • board_freescalekinetis_IBMEthernetKit — platform platform_freescalekinetis, chip MK64FN1M0VLL12, 120MHz, 1MB flash, 256KB RAM 👑
  • board_freescalekinetis_frdm_k20d50m — platform platform_freescalekinetis, chip MK20DX128VLH5, 48MHz, 128KB flash, 16KB RAM 🎀
  • board_freescalekinetis_frdm_k22f — platform platform_freescalekinetis, chip MK22FN512VLH12, 120MHz, 512KB flash, 128KB RAM 🦋
  • board_freescalekinetis_frdm_k64f — platform platform_freescalekinetis, chip MK64FN1M0VLL12, 120MHz, 1MB flash, 256KB RAM 💅
  • board_freescalekinetis_frdm_k66f — platform platform_freescalekinetis, chip MK66FN2M0VMD18, 180MHz, 2MB flash, 256KB RAM 🔥 (two megabytes of flash, she ate and left no crumbs)
  • board_freescalekinetis_frdm_k82f — platform platform_freescalekinetis, chip MK82FN256VLL15, 150MHz, 256KB flash, 256KB RAM 🌈 (flash and RAM matching at 256KB? balance, periodt)
  • board_freescalekinetis_frdm_kl05z — platform platform_freescalekinetis, chip MKL05Z32VFM4, 48MHz, 32KB flash, 4KB RAM 🍓
  • board_freescalekinetis_frdm_kl25z — platform platform_freescalekinetis, chip MKL25Z128VLK4, 48MHz, 128KB flash, 16KB RAM 🧚

ngl bestie, the way this list just keeps going? Respect the commitment. Still more coming 💀

okay continuing the board lineup, no stopping, we're in it now 💅

  • board_freescalekinetis_frdm_kl27z — platform platform_freescalekinetis, chip MKL27Z64VLH4, clocked at 48MHz, with 64KB of flash and 16KB of RAM
  • board_freescalekinetis_frdm_kl43z — platform platform_freescalekinetis, chip MKL43Z256VLH4, 48MHz, 256KB flash, 32KB RAM
  • board_freescalekinetis_frdm_kl46z — platform platform_freescalekinetis, chip MKL46Z256VLL4, 48MHz, 256KB flash, 32KB RAM
  • board_freescalekinetis_frdm_kw41z — platform platform_freescalekinetis, chip MKW41Z512VHT4, 48MHz, 512KB flash, 128KB RAM
  • board_riscv_gap_gapuino — platform platform_riscv_gap, chip GAP8, 250MHz, 64MB flash, 8MB RAM (a whole 64MB bestie, she's eating fr fr)
  • board_nordicnrf51_wallbot_ble — platform platform_nordicnrf51, chip NRF51822, 16MHz, 128KB flash, 16KB RAM
  • board_ststm32_rhombio_l476dmw1k — platform platform_ststm32, chip STM32L476VGT6, 80MHz, 1MB flash, 128KB RAM
  • board_nxplpc_lpc11u68 — platform platform_nxplpc, chip LPC11U68, 50MHz, 256KB flash, 36KB RAM
  • board_nxplpc_lpc824 — platform platform_nxplpc, chip LPC824, 30MHz, 32KB flash, 8KB RAM
  • board_maxim32_max32600mbed — platform platform_maxim32, chip MAX32600, 24MHz, 256KB flash, 32KB RAM
  • board_ststm32_mbed_connect_odin — platform platform_ststm32, chip STM32F439ZIY6, 168MHz, 2MB flash, 256KB RAM
  • board_nxplpc_lpc812 — platform platform_nxplpc, chip LPC812, 30MHz, 16KB flash, 4KB RAM
  • board_nxplpc_lpc54114 — platform platform_nxplpc, chip LPC54114J256BD64, 100MHz, 256KB flash, 192KB RAM (192KB of RAM?? okay she's stacked 🫶)
  • board_nxplpc_lpc546xx — platform platform_nxplpc, chip LPC54608ET512, 180MHz, 512KB flash, 200KB RAM
  • board_nxpimxrt_mimxrt1050_evk — platform platform_nxpimxrt, chip MIMXRT1052DVL6B, 600MHz, 64MB flash, 512KB RAM (600MHz. no cap. she is the moment ⭐)
  • board_nxplpc_lpc11u24 — platform platform_nxplpc, chip LPC11U24, 48MHz, 32KB flash, 8KB RAM
  • board_nxplpc_lpc1768 — platform platform_nxplpc, chip LPC1768, 96MHz, 512KB flash, 64KB RAM
  • board_nordicnrf51_nrf51_dongle — platform platform_nordicnrf51, chip NRF51822, 32MHz, 256KB flash, 32KB RAM
  • board_nordicnrf51_nrf51_mkit — platform platform_nordicnrf51, chip NRF51822, 16MHz, 128KB flash, 16KB RAM
  • board_nordicnrf51_nrf51_dk — platform platform_nordicnrf51, chip NRF51822, 32MHz, 256KB flash, 32KB RAM
  • board_nordicnrf52_nrf52_dk — platform platform_nordicnrf52, chip NRF52832, 64MHz, 512KB flash, 64KB RAM
  • board_nordicnrf52_nrf52840_dk — platform platform_nordicnrf52, chip NRF52840, 64MHz, 1MB flash, 256KB RAM (a whole megabyte of flash, she's thriving 🌸)
  • board_nordicnrf51_redBearLabBLENano — platform platform_nordicnrf51, chip NRF51822, 16MHz, 256KB flash, 32KB RAM
  • board_nordicnrf52_redbear_blenano2 — platform platform_nordicnrf52, chip NRF52832, 64MHz, 512KB flash, 64KB RAM

and the list just keeps on going bestie, we are not done, do not close the terminal 💖

  • board_nordicnrf51_redBearLab — platform platform_nordicnrf51, MCU NRF51822, running at 16MHz, with 256KB of flash and 16KB of RAM 🦋
  • board_ststm32_cloud_jam — platform platform_ststm32, MCU STM32F401RET6, 84MHz, 512KB flash, 96KB RAM ✨
  • board_ststm32_cloud_jam_l4 — platform platform_ststm32, MCU STM32L476RGT6, 80MHz, 1MB flash, 128KB RAM ✨
  • board_siliconlabsefm32_efm32hg_stk3400 — platform platform_siliconlabsefm32, MCU EFM32HG322F64, 25MHz, 64KB flash, 8KB RAM 🌸
  • board_siliconlabsefm32_efm32pg_stk3401 — platform platform_siliconlabsefm32, MCU EFM32PG1B200F256GM48, 40MHz, 256KB flash, 32KB RAM 🌸
  • board_ststm32_disco_f334c8 — platform platform_ststm32, MCU STM32F334C8T6, 72MHz, 64KB flash, 12KB RAM 💅
  • board_ststm32_disco_f401vc — platform platform_ststm32, MCU STM32F401VCT6, 84MHz, 256KB flash, 64KB RAM 💅
  • board_ststm32_disco_f413zh — platform platform_ststm32, MCU STM32F413ZHT6, 100MHz, 512KB flash, 128KB RAM 🔥
  • board_ststm32_disco_f429zi — platform platform_ststm32, MCU STM32F429ZIT6, 180MHz, 2MB flash, 256KB RAM 👑
  • board_ststm32_disco_f469ni — platform platform_ststm32, MCU STM32F469NIH6, 180MHz, 1MB flash, 384KB RAM 👑
  • board_ststm32_disco_f746ng — platform platform_ststm32, MCU STM32F746NGH6, 216MHz, 1MB flash, 320KB RAM 🔥
  • board_ststm32_disco_f769ni — platform platform_ststm32, MCU STM32F769NIH6, 216MHz, 1MB flash, 512KB RAM 🔥
  • board_ststm32_disco_l053c8 — platform platform_ststm32, MCU STM32L053C8T6, 32MHz, 64KB flash, 8KB RAM 🍓
  • board_ststm32_disco_l476vg — platform platform_ststm32, MCU STM32L476VGT6, 80MHz, 1MB flash, 128KB RAM 🍓
  • board_ststm32_disco_l496ag — platform platform_ststm32, MCU STM32L496AGI6, 80MHz, 1MB flash, 320KB RAM 🍓
  • board_ststm32_disco_l475vg_iot01a — platform platform_ststm32, MCU STM32L475VGT6, 80MHz, 1MB flash, 128KB RAM 💜
  • board_ststm32_disco_l072cz_lrwan1 — platform platform_ststm32, MCU STM32L072CZ, 32MHz, 192KB flash, 20KB RAM 💜
  • board_ststm32_disco_f072rb — platform platform_ststm32, MCU STM32F072RBT6, 48MHz, 128KB flash, 16KB RAM 🌈
  • board_ststm32_nucleo_f030r8 — platform platform_ststm32, MCU STM32F030R8T6, 48MHz, 64KB flash, 8KB RAM ⭐
  • board_ststm32_nucleo_f031k6 — platform platform_ststm32, MCU STM32F031K6T6, 48MHz, 32KB flash, 4KB RAM ⭐
  • board_ststm32_nucleo_f042k6 — platform platform_ststm32, MCU STM32F042K6T6, 48MHz, 32KB flash, 6KB RAM ⭐
  • board_ststm32_nucleo_f070rb — platform platform_ststm32, MCU STM32F070RBT6, 48MHz, 128KB flash, 16KB RAM 🎀
  • board_ststm32_nucleo_f072rb — platform platform_ststm32, MCU STM32F072RBT6, 48MHz, 128KB flash, 16KB RAM 🎀
  • board_ststm32_nucleo_f091rc — platform platform_ststm32, MCU STM32F091RCT6, 48MHz, 256KB flash, 32KB RAM 🎀
bestie the pattern here is so clean — board_<platform>_<board> in the id, then the platform it lives on, then the actual silicon, then clock speed, flash and RAM. Once you see it you can't unsee it, iykyk 💖

Like, notice how the disco and nucleo ones are all platform_ststm32 and they just keep escalating — 48MHz little baby ones chilling next to a 216MHz STM32F769NIH6 with 1MB/512KB. That's main character energy fr fr. 👑

And the board_ststm32_disco_l072cz_lrwan1 with its lil 192KB flash and 20KB RAM? Not the biggest but it's giving specialized. Respect it. 🫶

The naming is lowkey chaotic in a fun way — board_ststm32_cloud_jam_l4 vs board_ststm32_cloud_jam, and then the _iot01a and _lrwan1 suffixes tacked on like accessories. But no cap, every single one of those suffixes is load-bearing. Don't go dropping them. 😭


  • board_ststm32_nucleo_f103rb — platform platform_ststm32, MCU STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM 💖
  • board_ststm32_nucleo_f207zg — platform platform_ststm32, MCU STM32F207ZGT6, 120MHz, 1MB flash, 128KB RAM 💖
  • board_ststm32_nucleo_f302r8 — platform platform_ststm32, MCU STM32F302R8T6, 72MHz, 64KB flash, 16KB RAM 💖
  • board_ststm32_nucleo_f303k8 — platform platform_ststm32, MCU STM32F303K8T6, 72MHz, 64KB flash, 12KB RAM 💖
  • board_ststm32_nucleo_f303re — platform platform_ststm32, MCU STM32F303RET6, 72MHz, 512KB flash, 64KB RAM 💖
  • board_ststm32_nucleo_f303ze — platform platform_ststm32, MCU STM32F303ZET6, 72MHz, 512KB flash, 64KB RAM 💖
  • board_ststm32_nucleo_f334r8 — platform platform_ststm32, MCU STM32F334R8T6, 72MHz, 64KB flash, 16KB RAM 💖
  • board_ststm32_nucleo_f401re — platform platform_ststm32, MCU STM32F401RET6, 84MHz, 512KB flash, 96KB RAM 💖
  • board_ststm32_nucleo_f410rb — platform platform_ststm32, MCU STM32F410RBT6, 100MHz, 128KB flash, 32KB RAM 💖
  • board_ststm32_nucleo_f411re — platform platform_ststm32, MCU STM32F411RET6, 100MHz, 512KB flash, 128KB RAM 💖
  • board_ststm32_nucleo_f412zg — platform platform_ststm32, MCU STM32F412ZGT6, 100MHz, 1MB flash, 256KB RAM 💖
  • board_ststm32_nucleo_f413zh — platform platform_ststm32, MCU STM32F413ZHT6, 100MHz, 512KB flash, 128KB RAM 💖
  • board_ststm32_nucleo_f429zi — platform platform_ststm32, MCU STM32F429ZIT6, 180MHz, 2MB flash, 256KB RAM 💖
  • board_ststm32_nucleo_f439zi — platform platform_ststm32, MCU STM32F439ZIT6, 180MHz, 2MB flash, 256KB RAM 💖
  • board_ststm32_nucleo_f446re — platform platform_ststm32, MCU STM32F446RET6, 180MHz, 512KB flash, 128KB RAM 💖
  • board_ststm32_nucleo_f446ze — platform platform_ststm32, MCU STM32F446ZET6, 180MHz, 512KB flash, 128KB RAM 💖
  • board_ststm32_nucleo_f746zg — platform platform_ststm32, MCU STM32F746ZGT6, 216MHz, 1MB flash, 320KB RAM 💖
  • board_ststm32_nucleo_f756zg — platform platform_ststm32, MCU STM32F756ZG, 216MHz, 1MB flash, 320KB RAM 💖
  • board_ststm32_nucleo_f767zi — platform platform_ststm32, MCU STM32F767ZIT6, 216MHz, 2MB flash, 512KB RAM 💖
  • board_ststm32_nucleo_h743zi — platform platform_ststm32, MCU STM32H743ZIT6, 400MHz, 2MB flash, 512KB RAM 💖
  • board_ststm32_nucleo_l031k6 — platform platform_ststm32, MCU STM32L031K6T6, 32MHz, 32KB flash, 8KB RAM 💖
  • board_ststm32_nucleo_l053r8 — platform platform_ststm32, MCU STM32L053R8T6, 32MHz, 64KB flash, 8KB RAM 💖
  • board_ststm32_nucleo_l073rz — platform platform_ststm32, MCU STM32L073RZ, 32MHz, 192KB flash, 20KB RAM 💖
  • board_ststm32_nucleo_l152re — platform platform_ststm32, MCU STM32L152RET6, 32MHz, 512KB flash, 80KB RAM 💖

okay bestie, that's the whole Nucleo fam right there ✨ every single one is running platform_ststm32 (yes, same platform for all of them, no cap) and each line gives you the exact MCU part number, clock speed, flash size, and RAM size — fr fr, that's the spec sheet energy you need when you're picking which board is gonna be your main character 💅

ngl the range here is kinda iconic?? like you got the lil baby board_ststm32_nucleo_l031k6 chugging along at 32MHz with a humble 32KB of flash and 8KB of RAM 🥺 and then you got the absolute beast board_ststm32_nucleo_h743zi out here at 400MHz with 2MB flash and 512KB RAM like it's not even trying 👑

quick vibe check on the columns so you're not out here guessing 🦋

  • first column → the board ID you'd hand to PlatformIO (board_...), literally the name you type when you want this exact board 💖
  • second column → the platform it belongs to, and yup it's platform_ststm32 for every single one of these 🎀
  • third column → the MCU part number, copy it exactly, no fixing it, no remixing it 🙈
  • fourth column → the clock speed in MHz ⚡
  • fifth column → flash memory in KB/MB 🌸
  • sixth column → RAM in KB/MB 🌈

and that's the tea, bestie — go flash something iconic 💅✨

  • board_ststm32_nucleo_l432kc — platform platform_ststm32, MCU STM32L432KCU6, runs at 80MHz, 256KB flash, 64KB RAM 💖
  • board_ststm32_nucleo_l433rc_p — platform platform_ststm32, MCU STM32L433RC, 80MHz, 256KB flash, 64KB RAM ✨
  • board_ststm32_nucleo_l476rg — platform platform_ststm32, MCU STM32L476RGT6, 80MHz, 1MB flash, 128KB RAM 🎀
  • board_ststm32_nucleo_l486rg — platform platform_ststm32, MCU STM32L486RGT6, 80MHz, 1MB flash, 128KB RAM 🦋
  • board_ststm32_nucleo_l496zg — platform platform_ststm32, MCU STM32L496ZGT6, 80MHz, 1MB flash, 128KB RAM 🌸
  • board_ststm32_nucleo_l496zg_p — platform platform_ststm32, MCU STM32L496ZGT6P, 80MHz, 1MB flash, 320KB RAM 💅 (look at that RAM glow-up fr)
  • board_ststm32_nucleo_l4r5zi — platform platform_ststm32, MCU STM32L4R5ZIT6, 120MHz, 2MB flash, 640KB RAM 🔥 main character energy
  • board_ststm32_disco_f030r8 — platform platform_ststm32, MCU STM32F030R8T6, 48MHz, 64KB flash, 8KB RAM 🌈
  • board_ststm32_disco_f051r8 — platform platform_ststm32, MCU STM32F051R8T6, 48MHz, 64KB flash, 8KB RAM ⭐
  • board_ststm32_disco_f303vc — platform platform_ststm32, MCU STM32F303VCT6, 72MHz, 256KB flash, 48KB RAM 💀
  • board_ststm32_disco_f407vg — platform platform_ststm32, MCU STM32F407VGT6, 168MHz, 1MB flash, 128KB RAM 🙈
  • board_ststm32_disco_f100rb — platform platform_ststm32, MCU STM32F100RBT6, 24MHz, 128KB flash, 8KB RAM 🍓 (she's a chill lil disco board, lowkey)
  • board_ststm32_silica_sensor_node — platform platform_ststm32, MCU STM32L476JG, 80MHz, 1MB flash, 128KB RAM 🧚
  • board_nordicnrf51_seeedArchBLE — platform platform_nordicnrf51, MCU NRF51822, 16MHz, 128KB flash, 16KB RAM 💜
  • board_nordicnrf51_seeedArchLink — platform platform_nordicnrf51, MCU NRF51822, 16MHz, 256KB flash, 16KB RAM 💖
  • board_ststm32_seeedArchMax — platform platform_ststm32, MCU STM32F407VET6, 168MHz, 512KB flash, 192KB RAM ✨
  • board_nxplpc_seeedArchPro — platform platform_nxplpc, MCU LPC1768, 96MHz, 512KB flash, 64KB RAM 🎀
  • board_nordicnrf51_seeedTinyBLE — platform platform_nordicnrf51, MCU NRF51822, 16MHz, 256KB flash, 16KB RAM 🦋
  • board_ststm32_wio_3g — platform platform_ststm32, MCU STM32F439VI, 180MHz, 2MB flash, 256KB RAM 🌸 (180MHz?? ate, no crumbs)
  • board_nordicnrf51_hrm1017 — platform platform_nordicnrf51, MCU NRF51822, 16MHz, 256KB flash, 16KB RAM 💅
  • board_nxplpc_lpc1114fn28 — platform platform_nxplpc, MCU LPC1114FN28, 48MHz, 32KB flash, 4KB RAM 🔥 (tiny but trying her best 🥺)
  • board_nxplpc_ssci824 — platform platform_nxplpc, MCU LPC824, 30MHz, 32KB flash, 8KB RAM 🌈
  • board_nordicnrf51_ty51822r3 — platform platform_nordicnrf51, MCU NRF51822, 32MHz, 256KB flash, 32KB RAM ⭐ (double the clock of her nrf51 sisters, we love a glow-up)
  • board_siliconlabsefm32_tb_sense_12 — platform platform_siliconlabsefm32, MCU EFR32MG12P432F1024, 40MHz, 1MB flash, 256KB RAM 👑

  • board_nordicnrf51_vbluno51 — platform: platform_nordicnrf51 · MCU: NRF51822 · 16MHz · flash 128KB · RAM 32KB 🦋

  • board_wiznet7500_wizwiki_w7500 — platform: platform_wiznet7500 · MCU: WIZNET7500 · 48MHz · flash 128KB · RAM 48KB ✨

  • board_wiznet7500_wizwiki_w7500eco — platform: platform_wiznet7500 · MCU: WIZNET7500ECO · 48MHz · flash 128KB · RAM 48KB 🌸

  • board_wiznet7500_wizwiki_w7500p — platform: platform_wiznet7500 · MCU: WIZNET7500P · 48MHz · flash 128KB · RAM 48KB 💜

  • board_ststm32_sakuraio_evb_01 — platform: platform_ststm32 · MCU: STM32F411RET6 · 100MHz · flash 1MB · RAM 128KB 🌈

  • board_nxplpc_ubloxc027 — platform: platform_nxplpc · MCU: LPC1768 · 96MHz · flash 512KB · RAM 64KB 🎀

  • board_ststm32_ublox_c030_r410m — platform: platform_ststm32 · MCU: STM32F437VG · 180MHz · flash 1MB · RAM 256KB 🔥

  • board_nordicnrf52_ublox_evk_nina_b1 — platform: platform_nordicnrf52 · MCU: NRF52832 · 64MHz · flash 512KB · RAM 64KB 💖

  • board_nordicnrf51_nrf51822_y5_mbug — platform: platform_nordicnrf51 · MCU: NRF51822 · 16MHz · flash 256KB · RAM 16KB ⭐

🛠️ External Debug Tools 🛠️

okay bestie, this next batch is giving special energy so listen up 💅

  • Boards listed below are compatible with piodebug but DEPEND ON an external debug probe. 🔌
  • They ARE NOT READY for debugging. 🚫
  • Please click on the board name for the further details. 👀
ngl this is the "we see you, we love you, but you need extra hardware" section. Not a vibe fail, just a heads-up. 🫶

  • board_ststm32_bluepill_f103c8 — platform: platform_ststm32 · MCU: STM32F103C8T6 · 72MHz · flash 64KB · RAM 20KB 💙

  • board_nxplpc_lpc11u35_501 — platform: platform_nxplpc · MCU: LPC11U35 · 48MHz · flash 64KB · RAM 10KB 🌸

  • board_nxplpc_lpc1347 — platform: platform_nxplpc · MCU: LPC1347 · 72MHz · flash 64KB · RAM 12KB 🦋

  • board_nxplpc_lpc11u35 — platform: platform_nxplpc · MCU: LPC11U35 · 48MHz · flash 64KB · RAM 10KB ✨

  • board_ststm32_elmo_f411re — platform: platform_ststm32 · MCU: STM32F411RET6 · 100MHz · flash 512KB · RAM 128KB 💜

  • board_freescalekinetis_frdm_kl82z — platform: platform_freescalekinetis · MCU: MKL82Z128VLK7 · 96MHz · flash 128KB · RAM 96KB 🌈

  • board_freescalekinetis_frdm_kw24d — platform: platform_freescalekinetis · MCU: MKW24D512 · 50MHz · flash 512KB · RAM 64KB 🎀

  • board_freescalekinetis_hexiwear — platform: platform_freescalekinetis · MCU: MK64FN1M0VDC12 · 120MHz · flash 1MB · RAM 256KB 🔥

  • board_maxim32_max32620fthr — platform: platform_maxim32 · MCU: MAX32620FTHR · 96MHz · flash 2MB · RAM 256KB 💖

  • board_ststm32_mts_dragonfly_f411re — platform: platform_ststm32 · MCU: STM32F411RET6 · 100MHz · flash 512KB · RAM 128KB 👑

  • board_maxim32_max32620hsp — platform: platform_maxim32 · MCU: MAX32620 · 96MHz · flash 2MB · RAM 256KB 🌟

  • board_maxim32_maxwsnenv — platform: platform_maxim32 · MCU: MAX32610 · 24MHz · flash 256KB · RAM 32KB 🍓

...and the board list just keeps going, bestie, it's giving infinity scarf energy 🧣✨ here's the rest of the table, copied character for character because we do not mess with board names:

├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_mts_mdot_f405rg      │ platform_ststm32          │ STM32F411RET6  │ 100MHz    │ 512KB │ 128KB │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_mts_mdot_f411re      │ platform_ststm32          │ STM32F411RET6  │ 100MHz    │ 512KB │ 128KB │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_xdot_l151cc          │ platform_ststm32          │ STM32L151CCU6  │ 32MHz     │ 256KB │ 32KB  │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_mote_l152rc          │ platform_ststm32          │ STM32L152RC    │ 32MHz     │ 256KB │ 32KB  │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_nxplpc_blueboard_lpc11u24    │ platform_nxplpc           │ LPC11U24       │ 48MHz     │ 32KB  │ 8KB   │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_nxplpc_lpc11c24              │ platform_nxplpc           │ LPC11C24       │ 48MHz     │ 32KB  │ 8KB   │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_nxplpc_lpc11u34_421          │ platform_nxplpc           │ LPC11U34       │ 48MHz     │ 40KB  │ 8KB   │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_nxplpc_lpc11u37_501          │ platform_nxplpc           │ LPC11U37       │ 48MHz     │ 128KB │ 10KB  │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_nxplpc_lpc1549               │ platform_nxplpc           │ LPC1549        │ 72MHz     │ 256KB │ 36KB  │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_olimexino            │ platform_ststm32          │ STM32F103RBT6  │ 72MHz     │ 128KB │ 20KB  │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_nordicnrf52_sdt52832b        │ platform_nordicnrf52      │ NRF52832       │ 64MHz     │ 512KB │ 64KB  │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_genericSTM32F103C8   │ platform_ststm32          │ STM32F103C8T6  │ 72MHz     │ 64KB  │ 20KB  │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_genericSTM32F103RB   │ platform_ststm32          │ STM32F103RBT6  │ 72MHz     │ 128KB │ 20KB  │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_nxplpc_dipcortexm0           │ platform_nxplpc           │ LPC11U24       │ 50MHz     │ 32KB  │ 8KB   │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_teensy_teensy31              │ platform_teensy           │ MK20DX256      │ 72MHz     │ 256KB │ 64KB  │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_ublox_c030_n211      │ platform_ststm32          │ STM32F437VG    │ 180MHz    │ 1MB   │ 256KB │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_ublox_c030_u201      │ platform_ststm32          │ STM32F437VG    │ 180MHz    │ 1MB   │ 256KB │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_ublox_evk_odin_w2    │ platform_ststm32          │ STM32F439ZIY6  │ 168MHz    │ 2MB   │ 256KB │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_ststm32_mtb_ublox_odin_w2    │ platform_ststm32          │ STM32F439ZIY6  │ 168MHz    │ 2MB   │ 256KB │
├────────────────────────────────────┼───────────────────────────┼────────────────┼───────────┼───────┼───────┤
│ board_nxplpc_lpc11u35_y5_mbug      │ platform_nxplpc           │ LPC11U35       │ 48MHz     │ 64KB  │ 10KB  │
└────────────────────────────────────┴───────────────────────────┴────────────────┴───────────┴───────┴───────┘

Notable: board_ststm32_genericSTM32F103C8 and board_ststm32_genericSTM32F103RB are the "generic" STM32F103 boards, the ublox_c030_n211 / ublox_c030_u201 twins are both STM32F437VG at 180MHz with 1MB flash and 256KB RAM, and the ublox_evk_odin_w2 / mtb_ublox_odin_w2 pair share the STM32F439ZIY6 at 168MHz with 2MB flash and 256KB RAM. Same silicon, different board names — classic 💀.

That's the whole table, periodt. 👑


🌸 Examples 🌸

okay so the manpage just hits you with a lil shopping list of Mbed platform docs, and honestly? it's giving "curated Pinterest board for embedded girlies" 🎀 here's every single one:

  • Mbed for Atmel SAM
  • Mbed for Freescale Kinetis
  • Mbed for Maxim 32
  • Mbed for Nordic nRF51
  • Mbed for Nordic nRF52
  • Mbed for NXP i.MX RT
  • Mbed for NXP LPC
  • Mbed for RISC-V GAP
  • Mbed for Silicon Labs EFM32
  • Mbed for ST STM32
  • Mbed for Teensy
  • Mbed for WIZNet W7500

Twelve of them. Twelve separate vendor families, bestie. Atmel SAM, Freescale Kinetis, Maxim 32, Nordic nRF51, Nordic nRF52, NXP i.MX RT, NXP LPC, RISC-V GAP, Silicon Labs EFM32, ST STM32, Teensy, and WIZNet W7500 — if your chip is in that list, there's an Mbed platform doc waiting for you like a lil welcome committee 🫶

  • platform_atmelsam — bestie, this one's Atmel | SMART, serving Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures 💅 and they range from 8KB all the way up to 2MB of Flash, including a rich peripheral and feature mix. it's giving variety ✨
  • platform_freescalekinetis — Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series 🦋 Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. no cap, that's a whole glow-up 💖
  • platform_maxim32 — Maxim's microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications 👑 Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. the way they're doing security and battery life?? iconic 🔥
  • platform_nordicnrf51 — the Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications 🌸 nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. multi-protocol queen fr fr 🧚
  • platform_nordicnrf52 — the nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power 🔋 they have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. main character energy, honestly 💜
  • platform_nxpimxrt — the i.MX RT series of crossover processors features the Arm Cortex-M core, real-time functionality and MCU usability at a cost-effective price 💸 lowkey a steal
  • platform_nxplpc — the NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors ✨ the LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0 🌈 internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. she's got layers 🎀
  • platform_riscv_gap — GreenWaves GAP8 IoT application processor enables the cost-effective development, deployment and autonomous operation of intelligent sensing devices that capture, analyze, classify and act on the fusion of rich data sources such as images, sounds or vibrations 👀 sensing the whole vibe check fr
  • platform_siliconlabsefm32 — Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz ⚡ based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption 🦋 bestie wakes up fast and goes right back to sleep, we love a nap queen 😴💖
  • platform_ststm32 — the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users 🌈 it offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. not her doing all of that at once 💅 periodt
  • platform_teensy — Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects 🎀 all programming is done via the USB port. no special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port 🔌 tiny but mighty, the itty bitty committee ate
  • platform_wiznet7500 — the IOP (Internet Offload Processor) W7500 is the …
and that's where this part cuts off bestie 😭 the W7500 sentence is still mid-sentence, so keep scrolling — more incoming 💖

...one-chip solution that literally integrates an ARM Cortex-M0, 128KB Flash and a hardwired TCP/IP core, all for various embedded application platforms — especially the ones that need Internet of things energy. no cap, that's a whole personality in one chip 🫶


🦋 Boards 🦋

NOTE: okay bestie, two things before you scroll, and you are gonna scroll 💅
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer ✨
  • For more detailed board information please scroll the tables below by horizontally.

🌸 96Boards 🌸

  • board_ststm32_b96b_f446ve — platform platform_ststm32, debug On-board, MCU STM32F446VET6, 168MHz, 512KB Flash, 128KB RAM

🌸 AppNearMe 🌸

  • board_nxplpc_micronfcboard — platform platform_nxplpc, debug No, MCU LPC11U34, 48MHz, 48KB Flash, 10KB RAM

🌸 Atmel 🌸

  • board_atmelsam_samr21_xpro — platform platform_atmelsam, debug On-board, MCU SAMR21G18A, 48MHz, 256KB Flash, 32KB RAM
  • board_atmelsam_samd21g18a — platform platform_atmelsam, debug On-board, MCU SAMD21G18A, 48MHz, 256KB Flash, 32KB RAM
  • board_atmelsam_samd21_xpro — platform platform_atmelsam, debug On-board, MCU SAMD21J18A, 48MHz, 256KB Flash, 32KB RAM
  • board_atmelsam_saml21_xpro_b — platform platform_atmelsam, debug On-board, MCU SAML21J18B, 48MHz, 256KB Flash, 32KB RAM

🌸 Avnet Silica 🌸

  • board_ststm32_silica_sensor_node — platform platform_ststm32, debug On-board, MCU STM32L476JG, 80MHz, 1MB Flash, 128KB RAM

🌸 BBC 🌸

  • board_nordicnrf51_bbcmicrobit — platform platform_nordicnrf51, debug On-board, MCU NRF51822, 16MHz, 256KB Flash, 16KB RAM

🌸 CQ Publishing 🌸

  • board_nxplpc_lpc11u35_501 — platform platform_nxplpc, debug External, MCU LPC11U35, 48MHz, 64KB Flash, 10KB RAM

🌸 Delta 🌸

  • board_nordicnrf52_delta_dfbm_nq620 — platform platform_nordicnrf52, debug On-board, MCU NRF52832, 64MHz, 512KB Flash, 64KB RAM
  • board_nordicnrf51_dfcm_nnn40 — lives on platform_nordicnrf51, debug is On-board, MCU is NRF51822, running at 32MHz with 256KB of flash and 32KB of RAM 💖
  • board_nordicnrf51_delta_dfcm_nnn50 — also on platform_nordicnrf51, On-board debug, NRF51822, 32MHz, 256KB flash, and a lil 16KB of RAM 🎀

Elektor Labs 💅

  • board_nxplpc_elektor_cocorico — platform is platform_nxplpc, debug On-board, MCU LPC812, 30MHz, 16KB flash, 4KB RAM ✨

Embedded Artists 🦋

  • board_nxplpc_lpc11u35 — platform_nxplpc, debug is External, MCU LPC11U35, 48MHz, 64KB flash, 10KB RAM 🌸
  • board_nxplpc_lpc4088_dm — platform_nxplpc, On-board debug, MCU LPC4088, 120MHz, 512KB flash, 96KB RAM 🔥
  • board_nxplpc_lpc4088 — platform_nxplpc, On-board debug, MCU LPC4088, 120MHz, 512KB flash, 96KB RAM 💜

Espotel 🧚

  • board_ststm32_elmo_f411re — platform platform_ststm32, debug External, MCU STM32F411RET6, 100MHz, 512KB flash, 128KB RAM 🌈

Freescale 👑

  • board_freescalekinetis_IBMEthernetKit — platform platform_freescalekinetis, On-board debug, MCU MK64FN1M0VLL12, 120MHz, 1MB flash, 256KB RAM 💖
  • board_freescalekinetis_frdm_k20d50m — platform_freescalekinetis, On-board debug, MCU MK20DX128VLH5, 48MHz, 128KB flash, 16KB RAM ✨
  • board_freescalekinetis_frdm_k22f — platform_freescalekinetis, On-board debug, MCU MK22FN512VLH12, 120MHz, 512KB flash, 128KB RAM 🎀
  • board_freescalekinetis_frdm_k64f — platform_freescalekinetis, On-board debug, MCU MK64FN1M0VLL12, 120MHz, 1MB flash, 256KB RAM 🌸
  • board_freescalekinetis_frdm_k66f — platform_freescalekinetis, On-board debug, MCU MK66FN2M0VMD18, 180MHz, 2MB flash, 256KB RAM 🔥
  • board_freescalekinetis_frdm_k82f — platform_freescalekinetis, On-board debug, MCU MK82FN256VLL15, 150MHz, 256KB flash, 256KB RAM 💜
  • board_freescalekinetis_frdm_kl05z — platform_freescalekinetis, On-board debug, MCU MKL05Z32VFM4, 48MHz, 32KB flash, 4KB RAM 🦋
  • board_freescalekinetis_frdm_kl25z — platform_freescalekinetis, On-board debug, MCU MKL25Z128VLK4, 48MHz, 128KB flash, 16KB RAM 🌈
  • board_freescalekinetis_frdm_kl27z — platform_freescalekinetis, On-board debug, MCU MKL27Z64VLH4, 48MHz, 64KB flash, 16KB RAM ✨
  • board_freescalekinetis_frdm_kl43z — platform_freescalekinetis, On-board debug, MCU MKL43Z256VLH4, 48MHz, 256KB flash, 32KB RAM 💅
  • board_freescalekinetis_frdm_kl46z — platform platform_freescalekinetis, debug: On-board, MCU MKL46Z256VLL4, 48MHz, flash 256KB, RAM 32KB ✨
  • board_freescalekinetis_frdm_kl82z — platform platform_freescalekinetis, debug: External, MCU MKL82Z128VLK7, 96MHz, flash 128KB, RAM 96KB ✨
  • board_freescalekinetis_frdm_kw24d — platform platform_freescalekinetis, debug: External, MCU MKW24D512, 50MHz, flash 512KB, RAM 64KB ✨
  • board_freescalekinetis_frdm_kw41z — platform platform_freescalekinetis, debug: On-board, MCU MKW41Z512VHT4, 48MHz, flash 512KB, RAM 128KB ✨

🫶 GHI Electronics 🫶

okay so this next one is a whole new vibe — different vendor, same energy:

  • board_nxplpc_oc_mbuino — platform platform_nxplpc, debug: No, MCU LPC11U24, 50MHz, flash 32KB, RAM 10KB 🌸

🌈 Generic 🌈

the "no brand, just vibes" section, and honestly? iconic. these are the boards people reach for when they want something plain and they know exactly what they're doing:

  • board_ststm32_bluepill_f103c8 — platform platform_ststm32, debug: External, MCU STM32F103C8T6, 72MHz, flash 64KB, RAM 20KB 💙
  • board_ststm32_genericSTM32F103C8 — platform platform_ststm32, debug: External, MCU STM32F103C8T6, 72MHz, flash 64KB, RAM 20KB 💙
  • board_ststm32_genericSTM32F103RB — platform platform_ststm32, debug: External, MCU STM32F103RBT6, 72MHz, flash 128KB, RAM 20KB 💙

🧚 GreenWaves Technologies 🧚

RISC-V girlies rise up, this one's for you:

  • board_riscv_gap_gapuino — platform platform_riscv_gap, debug: On-board, MCU GAP8, 250MHz, flash 64MB, RAM 8MB 👑
not me clocking that 250MHz and the 64MB flash like. bestie. that's a whole computer. 💅

🎀 JKSoft 🎀

tiny but mighty, we love a single-board moment:

  • board_nordicnrf51_wallbot_ble — platform platform_nordicnrf51, debug: On-board, MCU NRF51822, 16MHz, flash 128KB, RAM 16KB 🦋

⭐ Maxim ⭐

and here come the Maxim boards, all neatly lined up. this table doesn't even use the same border style as the others — it said "I'm different, I'm gonna use dashes" and honestly? respect. periodt.

  • board_maxim32_max32620fthr — platform platform_maxim32, debug: External, MCU MAX32620FTHR, 96MHz, flash 2MB, RAM 256KB 🔥
  • board_maxim32_max32625mbed — platform platform_maxim32, debug: No, MCU MAX32625, 96MHz, flash 512KB, RAM 160KB 🔥
  • board_maxim32_max32625nexpaq — platform platform_maxim32, debug: No, MCU MAX32625, 96MHz, flash 512KB, RAM 160KB 🔥
  • board_maxim32_max32625pico — platform platform_maxim32, debug: No, MCU MAX32625, 96MHz, flash 512KB, RAM 160KB 🔥
  • board_maxim32_max32600mbed — platform platform_maxim32, debug: On-board, MCU MAX32600, 24MHz, flash 256KB, RAM 32KB 🔥
  • board_maxim32_max32620hsp — platform platform_maxim32, debug: External, MCU MAX32620, 96MHz, flash 2MB, RAM 256KB 🔥
  • board_maxim32_max32630fthr — platform platform_maxim32, debug: No, MCU MAX32630, 96MHz, flash 2MB, RAM 512KB 🔥
quick vibe check on the fields, bestie, so you know what you're reading: Name is the board ID you'll be passing around, Platform is the platform package it lives in, Debug tells you whether it's got a debug probe On-board, needs an External one, or just says No 💀, then MCU, Frequency, Flash and RAM are exactly what they sound like.

okay so the board list just keeps going, and now we're hitting a whole little parade of vendors 💅 each one with its own fave platform, its own debug sitch, and its own lil MCU bestie. same columns as always: name, platform, debug, MCU, frequency, flash, RAM. let's go 🫶

first tho, one stray row from the previous chunk closing out the Maxim section:

  • board_maxim32_maxwsnenv — platform platform_maxim32, debug External, MCU MAX32610, 24MHz, 256KB flash, 32KB RAM

and then the vendors start arriving 🌈


💜 Micromint

just one icon in this house, and she's a chunky one:

  • board_nxplpc_lpc4330_m4 — platform platform_nxplpc, debug On-board, MCU LPC4330, 204MHz, 8MB flash, 264KB RAM
204MHz and 8MB of flash?? she ate and left no crumbs 👑

🌸 MikroElektronika

also a solo act, but make it Kinetis:

  • board_freescalekinetis_hexiwear — platform platform_freescalekinetis, debug External, MCU MK64FN1M0VDC12, 120MHz, 1MB flash, 256KB RAM

🎀 MultiTech

okay this group is giving "same energy, different names" because look at these specs fr fr:

  • board_ststm32_mts_dragonfly_f411re — platform platform_ststm32, debug External, MCU STM32F411RET6, 100MHz, 512KB flash, 128KB RAM
  • board_ststm32_mts_mdot_f405rg — platform platform_ststm32, debug External, MCU STM32F411RET6, 100MHz, 512KB flash, 128KB RAM
  • board_ststm32_mts_mdot_f411re — platform platform_ststm32, debug External, MCU STM32F411RET6, 100MHz, 512KB flash, 128KB RAM
  • board_ststm32_xdot_l151cc — platform platform_ststm32, debug External, MCU STM32L151CCU6, 32MHz, 256KB flash, 32KB RAM
not me noticing the f405rg one lists an STM32F411RET6 as its MCU 😭 that's literally what the table says bestie, I'm not touching it, I just report 💀

and yes, the xdot is the low-power one here — 32MHz, living her soft slow life 🌙


🦋 NGX Technologies

one board, one vibe:

  • board_nxplpc_blueboard_lpc11u24 — platform platform_nxplpc, debug External, MCU LPC11U24, 48MHz, 32KB flash, 8KB RAM

👑 NXP

and now the main event — NXP brought the whole friend group and every single one of them is running platform_nxplpc:

  • board_nxplpc_lpc11u24_301 — platform platform_nxplpc, debug On-board, MCU LPC11U24, 48MHz, 32KB flash, 8KB RAM
  • board_nxplpc_lpc11u68 — platform platform_nxplpc, debug On-board, MCU LPC11U68, 50MHz, 256KB flash, 36KB RAM
  • board_nxplpc_lpc824 — platform platform_nxplpc, debug On-board, MCU LPC824, 30MHz, 32KB flash, 8KB RAM
  • board_nxplpc_lpc11c24 — platform platform_nxplpc, debug External, MCU LPC11C24, 48MHz, 32KB flash, 8KB RAM
  • board_nxplpc_lpc11u34_421 — platform platform_nxplpc, debug External, MCU LPC11U34, 48MHz, 40KB flash, 8KB RAM
  • board_nxplpc_lpc11u37_501 — platform platform_nxplpc, debug External, MCU LPC11U37, 48MHz, 128KB flash, 10KB RAM

quick vibe check on this lineup: the _301, lpc11u68 and lpc824 are the On-board debug girlies, and the lpc11c24, lpc11u34_421 and lpc11u37_501 all went External. also 48MHz is so the signature move here — three of them are rocking it, the lpc11u68 flexes 50MHz, and the lpc824 is out here at 30MHz doing her own thing 🦋

as for storage, the lpc11u37_501 wins with 128KB flash and 10KB RAM, while the lpc11u24_301, lpc824 and lpc11c24 are all sitting at 32KB flash / 8KB RAM like the matching set they are ✨

and that's the board list so far — but bestie, we are not done, the table keeps unfolding 💖

  • board_nxplpc_lpc812 — platform: platform_nxplpc 💜 debug: On-board, MCU: LPC812, 30MHz, flash 16KB, RAM 4KB
  • board_nxplpc_lpc1549 — platform: platform_nxplpc 🦋 debug: External, MCU: LPC1549, 72MHz, flash 256KB, RAM 36KB
  • board_nxplpc_lpc54114 — platform: platform_nxplpc ✨ debug: On-board, MCU: LPC54114J256BD64, 100MHz, flash 256KB, RAM 192KB
  • board_nxplpc_lpc546xx — platform: platform_nxplpc 🌸 debug: On-board, MCU: LPC54608ET512, 180MHz, flash 512KB, RAM 200KB
  • board_nxpimxrt_mimxrt1050_evk — platform: platform_nxpimxrt 🔥 debug: On-board, MCU: MIMXRT1052DVL6B, 600MHz, flash 64MB, RAM 512KB
  • board_nxplpc_lpc11u24 — platform: platform_nxplpc 🎀 debug: On-board, MCU: LPC11U24, 48MHz, flash 32KB, RAM 8KB
  • board_nxplpc_lpc1768 — platform: platform_nxplpc 👑 debug: On-board, MCU: LPC1768, 96MHz, flash 512KB, RAM 64KB

Nordic ❄️✨

okay this section is serving pure Scandinavian chill, every single one is on-board debug and ngl they all kinda ate.

  • board_nordicnrf51_nrf51_dongle — platform: platform_nordicnrf51 💅 debug: On-board, MCU: NRF51822, 32MHz, flash 256KB, RAM 32KB
  • board_nordicnrf51_nrf51_mkit — platform: platform_nordicnrf51 🌈 debug: On-board, MCU: NRF51822, 16MHz, flash 128KB, RAM 16KB
  • board_nordicnrf51_nrf51_dk — platform: platform_nordicnrf51 🫶 debug: On-board, MCU: NRF51822, 32MHz, flash 256KB, RAM 32KB
  • board_nordicnrf52_nrf52_dk — platform: platform_nordicnrf52 ⭐ debug: On-board, MCU: NRF52832, 64MHz, flash 512KB, RAM 64KB
  • board_nordicnrf52_nrf52840_dk — platform: platform_nordicnrf52 💖 debug: On-board, MCU: NRF52840, 64MHz, flash 1MB, RAM 256KB

Olimex 🌿

just the one, but she's iconic and she knows it.

  • board_ststm32_olimexino — platform: platform_ststm32 🍓 debug: External, MCU: STM32F103RBT6, 72MHz, flash 128KB, RAM 20KB

Outrageous Circuits 💀

the name is literally giving "we're not like other boards" and honestly? valid.

  • board_nxplpc_mbuino — platform: platform_nxplpc 🧚 debug: No, MCU: LPC11U24, 48MHz, flash 32KB, RAM 8KB
not me clocking that the Debug column says No on this one 😭 so bestie, don't come for her expecting on-board debugging, okay? it's a no.

RedBearLab 🐻🎀

and finally we close out this stretch with the RedBear crew, Bluetooth legends fr fr.

  • board_nordicnrf51_redBearLabBLENano — platform: platform_nordicnrf51 💜 debug: On-board, MCU: NRF51822, 16MHz, flash 256KB, RAM 32KB
  • board_nordicnrf52_redbear_blenano2 — platform: platform_nordicnrf52 🌸 debug: On-board, MCU: NRF52832, 64MHz, flash 512KB, RAM 64KB
  • board_nordicnrf51_redBearLab — platform: platform_nordicnrf51 ✨ debug: On-board, MCU: NRF51822, 16MHz, flash 256KB, RAM 16KB

okay bestie the board table is STILL going and honestly? iconic. RushUp is finishing up its little era here — just two boards, both absolute cuties, and they're serving 🫶

  • board_ststm32_cloud_jam — platform is platform_ststm32, debug is On-board (she comes pre-loaded with her own debugger, no extra probe needed 💅), MCU is STM32F401RET6, running at 84MHz, with 512KB of flash and 96KB of RAM ✨
  • board_ststm32_cloud_jam_l4 — platform is platform_ststm32, debug On-board, MCU STM32L476RGT6 at 80MHz, and she's got 1MB flash + 128KB RAM 🌸

and that's a wrap on RushUp! she ate and left no crumbs 💖


👑 ST 👑

and now the moment you've all been waiting for — ST has entered the chat and she brought a WHOLE squad of disco boards and nucleo boards, all of them running platform_ststm32 with On-board debug, because that's just how this family does it. no cap. let's go one by one, bestie, because we do NOT skip entries in this house 🎀

  • board_ststm32_disco_f412zg — platform platform_ststm32, debug On-board, MCU STM32F412ZGT6, 100MHz, 1MB flash, 256KB RAM 💜
  • board_ststm32_disco_f334c8 — platform platform_ststm32, On-board, MCU STM32F334C8T6, 72MHz, 64KB flash, 12KB RAM 🌸
  • board_ststm32_disco_f401vc — platform platform_ststm32, On-board, MCU STM32F401VCT6, 84MHz, 256KB flash, 64KB RAM ✨
  • board_ststm32_disco_f413zh — platform platform_ststm32, On-board, MCU STM32F413ZHT6, 100MHz, 512KB flash, 128KB RAM 🦋
  • board_ststm32_disco_f429zi — platform platform_ststm32, On-board, MCU STM32F429ZIT6, 180MHz, 2MB flash, 256KB RAM 🔥 (look at that flash, she's HUGE, we love a big-flash queen)
  • board_ststm32_disco_f469ni — platform platform_ststm32, On-board, MCU STM32F469NIH6, 180MHz, 1MB flash, 384KB RAM 💖
  • board_ststm32_disco_f746ng — platform platform_ststm32, On-board, MCU STM32F746NGH6, 216MHz, 1MB flash, 320KB RAM 👑
  • board_ststm32_disco_f769ni — platform platform_ststm32, On-board, MCU STM32F769NIH6, 216MHz, 1MB flash, 512KB RAM 💀 (half a meg of RAM?? main character energy fr fr)
  • board_ststm32_disco_l053c8 — platform platform_ststm32, On-board, MCU STM32L053C8T6, 32MHz, 64KB flash, 8KB RAM 🍓 (smol and low-power, we respect the L series grind)
  • board_ststm32_disco_l476vg — platform platform_ststm32, On-board, MCU STM32L476VGT6, 80MHz, 1MB flash, 128KB RAM 🌈
  • board_ststm32_disco_l496ag — platform platform_ststm32, On-board, MCU STM32L496AGI6, 80MHz, 1MB flash, 320KB RAM 💜
  • board_ststm32_disco_l475vg_iot01a — platform platform_ststm32, On-board, MCU STM32L475VGT6, 80MHz, 1MB flash, 128KB RAM 🦋 (the iot01a one!! she's the whole IoT moment, iykyk)
  • board_ststm32_disco_l072cz_lrwan1 — platform platform_ststm32, On-board, MCU STM32L072CZ, 32MHz, 192KB flash, 20KB RAM ✨ (LoRaWAN energy, she talks to the sky)
  • board_ststm32_disco_f072rb — platform platform_ststm32, On-board, MCU STM32F072RBT6, 48MHz, 128KB flash, 16KB RAM 🌸

okay and now we pivot into the nucleo girlies, same family, same energy, still platform_ststm32, still On-board debug, no notes 💅

  • board_ststm32_nucleo_f030r8 — platform platform_ststm32, On-board, MCU STM32F030R8T6, 48MHz, 64KB flash, 8KB RAM 🎀
  • board_ststm32_nucleo_f031k6 — platform platform_ststm32, On-board, MCU STM32F031K6T6, 48MHz, 32KB flash, 4KB RAM 🙈 (4KB?? she's tiny but she's trying her best and we LOVE her)
  • board_ststm32_nucleo_f042k6 — platform platform_ststm32, On-board, MCU STM32F042K6T6, 48MHz, 32KB flash, 6KB RAM ⭐
  • board_ststm32_nucleo_f070rb — platform platform_ststm32, On-board, MCU STM32F070RBT6, 48MHz, 128KB flash, 16KB RAM 🧚
  • board_ststm32_nucleo_f072rb — platform platform_ststm32, On-board, MCU STM32F072RBT6, 48MHz, 128KB flash, 16KB RAM 🦋

more boards incoming bestie, the NUCLEO lineup really said "we're not leaving until you've seen all of us" 💅 every one of these is platform_ststm32, all On-board debug, so I'm just gonna give you the specs straight:

  • board_ststm32_nucleo_f091rc — platform platform_ststm32, debug On-board, MCU STM32F091RCT6, 48MHz, flash 256KB, RAM 32KB
  • board_ststm32_nucleo_f103rb — platform platform_ststm32, debug On-board, MCU STM32F103RBT6, 72MHz, flash 128KB, RAM 20KB
  • board_ststm32_nucleo_f207zg — platform platform_ststm32, debug On-board, MCU STM32F207ZGT6, 120MHz, flash 1MB, RAM 128KB
  • board_ststm32_nucleo_f302r8 — platform platform_ststm32, debug On-board, MCU STM32F302R8T6, 72MHz, flash 64KB, RAM 16KB
  • board_ststm32_nucleo_f303k8 — platform platform_ststm32, debug On-board, MCU STM32F303K8T6, 72MHz, flash 64KB, RAM 12KB
  • board_ststm32_nucleo_f303re — platform platform_ststm32, debug On-board, MCU STM32F303RET6, 72MHz, flash 512KB, RAM 64KB
  • board_ststm32_nucleo_f303ze — platform platform_ststm32, debug On-board, MCU STM32F303ZET6, 72MHz, flash 512KB, RAM 64KB
  • board_ststm32_nucleo_f334r8 — platform platform_ststm32, debug On-board, MCU STM32F334R8T6, 72MHz, flash 64KB, RAM 16KB
  • board_ststm32_nucleo_f401re — platform platform_ststm32, debug On-board, MCU STM32F401RET6, 84MHz, flash 512KB, RAM 96KB
  • board_ststm32_nucleo_f410rb — platform platform_ststm32, debug On-board, MCU STM32F410RBT6, 100MHz, flash 128KB, RAM 32KB
  • board_ststm32_nucleo_f411re — platform platform_ststm32, debug On-board, MCU STM32F411RET6, 100MHz, flash 512KB, RAM 128KB
  • board_ststm32_nucleo_f412zg — platform platform_ststm32, debug On-board, MCU STM32F412ZGT6, 100MHz, flash 1MB, RAM 256KB
  • board_ststm32_nucleo_f413zh — platform platform_ststm32, debug On-board, MCU STM32F413ZHT6, 100MHz, flash 512KB, RAM 128KB
  • board_ststm32_nucleo_f429zi — platform platform_ststm32, debug On-board, MCU STM32F429ZIT6, 180MHz, flash 2MB, RAM 256KB
  • board_ststm32_nucleo_f439zi — platform platform_ststm32, debug On-board, MCU STM32F439ZIT6, 180MHz, flash 2MB, RAM 256KB
  • board_ststm32_nucleo_f446re — platform platform_ststm32, debug On-board, MCU STM32F446RET6, 180MHz, flash 512KB, RAM 128KB
  • board_ststm32_nucleo_f446ze — platform platform_ststm32, debug On-board, MCU STM32F446ZET6, 180MHz, flash 512KB, RAM 128KB
  • board_ststm32_nucleo_f746zg — platform platform_ststm32, debug On-board, MCU STM32F746ZGT6, 216MHz, flash 1MB, RAM 320KB
  • board_ststm32_nucleo_f756zg — platform platform_ststm32, debug On-board, MCU STM32F756ZG, 216MHz, flash 1MB, RAM 320KB
  • board_ststm32_nucleo_f767zi — platform platform_ststm32, debug On-board, MCU STM32F767ZIT6, 216MHz, flash 2MB, RAM 512KB
  • board_ststm32_nucleo_h743zi — platform platform_ststm32, debug On-board, MCU STM32H743ZIT6, 400MHz, flash 2MB, RAM 512KB
  • board_ststm32_nucleo_l031k6 — platform platform_ststm32, debug On-board, MCU STM32L031K6T6, 32MHz, flash 32KB, RAM 8KB
  • board_ststm32_nucleo_l053r8 — platform platform_ststm32, debug On-board, MCU STM32L053R8T6, 32MHz, flash 64KB, RAM 8KB
  • board_ststm32_nucleo_l073rz — platform platform_ststm32, debug On-board, MCU STM32L073RZ, 32MHz, flash 192KB, RAM 20KB
  • board_ststm32_nucleo_l152re — platform platform_ststm32, debug On-board, MCU STM32L152RET6, 32MHz, flash 512KB, RAM 80KB

okay the L-series said low power but never said low energy, periodt 🌸 that h743zi at 400MHz is the main character of this batch ngl 🔥 and the lil l031k6 with its 32KB flash is giving tiny but mighty 🦋 keep scrolling bestie, there's more 💖

  • board_ststm32_nucleo_l432kc — platform platform_ststm32, on-board debug, MCU STM32L432KCU6, 80MHz, 256KB flash, 64KB RAM 💖
  • board_ststm32_nucleo_l433rc_p — platform platform_ststm32, on-board debug, MCU STM32L433RC, 80MHz, 256KB flash, 64KB RAM ✨
  • board_ststm32_nucleo_l476rg — platform platform_ststm32, on-board debug, MCU STM32L476RGT6, 80MHz, 1MB flash, 128KB RAM 🎀
  • board_ststm32_nucleo_l486rg — platform platform_ststm32, on-board debug, MCU STM32L486RGT6, 80MHz, 1MB flash, 128KB RAM 🦋
  • board_ststm32_nucleo_l496zg — platform platform_ststm32, on-board debug, MCU STM32L496ZGT6, 80MHz, 1MB flash, 128KB RAM 🌸
  • board_ststm32_nucleo_l496zg_p — platform platform_ststm32, on-board debug, MCU STM32L496ZGT6P, 80MHz, 1MB flash, 320KB RAM 💅
  • board_ststm32_nucleo_l4r5zi — platform platform_ststm32, on-board debug, MCU STM32L4R5ZIT6, 120MHz, 2MB flash, 640KB RAM 🫶
  • board_ststm32_disco_f030r8 — platform platform_ststm32, on-board debug, MCU STM32F030R8T6, 48MHz, 64KB flash, 8KB RAM 😭
  • board_ststm32_disco_f051r8 — platform platform_ststm32, on-board debug, MCU STM32F051R8T6, 48MHz, 64KB flash, 8KB RAM 🔥
  • board_ststm32_disco_f303vc — platform platform_ststm32, on-board debug, MCU STM32F303VCT6, 72MHz, 256KB flash, 48KB RAM 👑
  • board_ststm32_disco_f407vg — platform platform_ststm32, on-board debug, MCU STM32F407VGT6, 168MHz, 1MB flash, 128KB RAM 🌈
  • board_ststm32_disco_f100rb — platform platform_ststm32, on-board debug, MCU STM32F100RBT6, 24MHz, 128KB flash, 8KB RAM ⭐

🌸 SeeedStudio 🌸

okay bestie new board family dropped and it's giving maker-girlie energy 💖 same deal as before — Name, Platform, Debug, MCU, Frequency, Flash, RAM, all the deets:

  • board_nordicnrf51_seeedArchBLE — platform platform_nordicnrf51, on-board debug, MCU NRF51822, 16MHz, 128KB flash, 16KB RAM 🦋
  • board_nxplpc_seeedArchGPRS — platform platform_nxplpc, debug: No 🙈, MCU LPC11U37, 48MHz, 128KB flash, 10KB RAM
  • board_nordicnrf51_seeedArchLink — platform platform_nordicnrf51, on-board debug, MCU NRF51822, 16MHz, 256KB flash, 16KB RAM ✨
  • board_ststm32_seeedArchMax — platform platform_ststm32, on-board debug, MCU STM32F407VET6, 168MHz, 512KB flash, 192KB RAM 🔥
  • board_nxplpc_seeedArchPro — platform platform_nxplpc, on-board debug, MCU LPC1768, 96MHz, 512KB flash, 64KB RAM 💅
  • board_nordicnrf51_seeedTinyBLE — platform platform_nordicnrf51, on-board debug, MCU NRF51822, 16MHz, 256KB flash, 16KB RAM 🎀
  • board_ststm32_wio_3g — platform platform_ststm32, on-board debug, MCU STM32F439VI, 180MHz, 2MB flash, 256KB RAM 👑
  • board_nxplpc_xadow_m0 — platform platform_nxplpc, debug: No 🙈, MCU LPC11U35, 48MHz, 64KB flash, 10KB RAM 💀

...and that's the wrap on the rows above, bestie 💖 the table just keeps going though, because of course it does. Same seven columns every time: Name, Platform, Debug, MCU, Frequency, Flash, RAM. Buckle up 🎀

✨ Semtech ✨

  • board_ststm32_mote_l152rc — platform: platform_ststm32 · debug: External · MCU: STM32L152RC · frequency: 32MHz · flash: 256KB · RAM: 32KB

🦋 Sigma Delta Technologies 🦋

okay this whole little cluster is giving "tiny vendor, big energy" 😌 three boards, all listed out:

  • board_maxim32_sdt32620b — platform: platform_maxim32 · debug: No · MCU: MAX32620IWG · frequency: 96MHz · flash: 2MB · RAM: 256KB
  • board_maxim32_sdt32625b — platform: platform_maxim32 · debug: No · MCU: MAX32625ITK · frequency: 96MHz · flash: 512KB · RAM: 160KB
  • board_nordicnrf52_sdt52832b — platform: platform_nordicnrf52 · debug: External · MCU: NRF52832 · frequency: 64MHz · flash: 512KB · RAM: 64KB

🌸 Silicon Labs 🌸

and then the glow-up section, because Silicon Labs brought seven boards to the function and every single one is an EFM32/EFR32 girly 💅 note the debug column says On-board for literally all of them — no external probe situation here, she comes with her own 🫶

  • board_siliconlabsefm32_efm32gg_stk3700 — platform: platform_siliconlabsefm32 · debug: On-board · MCU: EFM32GG990F1024 · frequency: 48MHz · flash: 1MB · RAM: 128KB
  • board_siliconlabsefm32_efm32lg_stk3600 — platform: platform_siliconlabsefm32 · debug: On-board · MCU: EFM32LG990F256 · frequency: 48MHz · flash: 256KB · RAM: 32KB
  • board_siliconlabsefm32_efm32wg_stk3800 — platform: platform_siliconlabsefm32 · debug: On-board · MCU: EFM32WG990F256 · frequency: 48MHz · flash: 256KB · RAM: 32KB
  • board_siliconlabsefm32_efm32zg_stk3200 — platform: platform_siliconlabsefm32 · debug: On-board · MCU: EFM32ZG222F32 · frequency: 24MHz · flash: 32KB · RAM: 4KB
  • board_siliconlabsefm32_efm32hg_stk3400 — platform: platform_siliconlabsefm32 · debug: On-board · MCU: EFM32HG322F64 · frequency: 25MHz · flash: 64KB · RAM: 8KB
  • board_siliconlabsefm32_efm32pg_stk3401 — platform: platform_siliconlabsefm32 · debug: On-board · MCU: EFM32PG1B200F256GM48 · frequency: 40MHz · flash: 256KB · RAM: 32KB
  • board_siliconlabsefm32_tb_sense_12 — platform: platform_siliconlabsefm32 · debug: On-board · MCU: EFR32MG12P432F1024 · frequency: 40MHz · flash: 1MB · RAM: 256KB

like, board_siliconlabsefm32_efm32zg_stk3200 out here with 24MHz and 4KB of RAM?? she's tiny, she's humble, she's still invited 💀✨ every one of these is a real entry though, no cap — copy the names exactly, backticks and all, because one typo and the build will simply not know her 😭

and there's more roster coming, so don't go anywhere 🌈

  • board_nxplpc_xbed_lpc1768 — platform platform_nxplpc, debug: No 🙅, MCU LPC1768, freq 96MHz, flash 512KB ✨, RAM 32KB 💖

🍓 Solder Splash Labs 🍓

  • board_nxplpc_lpc1347 — platform platform_nxplpc, debug: External, MCU LPC1347, freq 72MHz, flash 64KB ✨, RAM 12KB 💖
  • board_nxplpc_dipcortexm0 — platform platform_nxplpc, debug: External, MCU LPC11U24, freq 50MHz, flash 32KB ✨, RAM 8KB 💖

🌸 Switch Science 🌸

  • board_nordicnrf51_hrm1017 — platform platform_nordicnrf51, debug: On-board, MCU NRF51822, freq 16MHz, flash 256KB ✨, RAM 16KB 💖
  • board_nxplpc_lpc1114fn28 — platform platform_nxplpc, debug: On-board, MCU LPC1114FN28, freq 48MHz, flash 32KB ✨, RAM 4KB 💖
  • board_nxplpc_ssci824 — platform platform_nxplpc, debug: On-board, MCU LPC824, freq 30MHz, flash 32KB ✨, RAM 8KB 💖
  • board_nordicnrf51_ty51822r3 — platform platform_nordicnrf51, debug: On-board, MCU NRF51822, freq 32MHz, flash 256KB ✨, RAM 32KB 💖

🎀 Teensy 🎀

  • board_teensy_teensy31 — platform platform_teensy, debug: External, MCU MK20DX256, freq 72MHz, flash 256KB ✨, RAM 64KB 💖

🧚 VNG 🧚

  • board_nordicnrf51_vbluno51 — platform platform_nordicnrf51, debug: On-board, MCU NRF51822, freq 16MHz, flash 128KB ✨, RAM 32KB 💖

🌈 WIZNet 🌈

  • board_wiznet7500_wizwiki_w7500 — platform platform_wiznet7500, debug: On-board, MCU WIZNET7500, freq 48MHz, flash 128KB ✨, RAM 48KB 💖

okay bestie we're still deep in the board list and the WIZnet7500 girlies are wrapping up their lil moment 💖

  • board_wiznet7500_wizwiki_w7500eco — platform: platform_wiznet7500, debug: On-board, MCU: WIZNET7500ECO, 48MHz, flash 128KB, RAM 48KB ✨
  • board_wiznet7500_wizwiki_w7500p — platform: platform_wiznet7500, debug: On-board, MCU: WIZNET7500P, 48MHz, flash 128KB, RAM 48KB ✨

and that's a wrap on that whole table, no cap 🎀


🌸 rhomb.io 🌸

one (1) board. she's carrying the whole vendor on her back and honestly? iconic 👑

  • board_ststm32_rhombio_l476dmw1k — platform: platform_ststm32, debug: On-board, MCU: STM32L476VGT6, 80MHz, flash 1MB, RAM 128KB 💅

🦋 sakura.io 🦋

also just the one, tiny but mighty, blossom energy fr fr 🌸

  • board_ststm32_sakuraio_evb_01 — platform: platform_ststm32, debug: On-board, MCU: STM32F411RET6, 100MHz, flash 1MB, RAM 128KB 💖

🛰️ u-blox 🛰️

okay now THIS is a lineup, bestie. eight boards, three whole platforms, debug situations ranging from On-board to External — the range, the versatility, we love to see it 🌈

  • board_ststm32_mbed_connect_odin — platform: platform_ststm32, debug: On-board, MCU: STM32F439ZIY6, 168MHz, flash 2MB, RAM 256KB 🔥
  • board_nxplpc_ubloxc027 — platform: platform_nxplpc, debug: On-board, MCU: LPC1768, 96MHz, flash 512KB, RAM 64KB 🫶
  • board_ststm32_ublox_c030_n211 — platform: platform_ststm32, debug: External, MCU: STM32F437VG, 180MHz, flash 1MB, RAM 256KB ⭐
  • board_ststm32_ublox_c030_r410m — platform: platform_ststm32, debug: On-board, MCU: STM32F437VG, 180MHz, flash 1MB, RAM 256KB ⭐
  • board_ststm32_ublox_c030_u201 — platform: platform_ststm32, debug: External, MCU: STM32F437VG, 180MHz, flash 1MB, RAM 256KB ⭐
  • board_nordicnrf52_ublox_evk_nina_b1 — platform: platform_nordicnrf52, debug: On-board, MCU: NRF52832, 64MHz, flash 512KB, RAM 64KB 💜
  • board_ststm32_ublox_evk_odin_w2 — platform: platform_ststm32, debug: External, MCU: STM32F439ZIY6, 168MHz, flash 2MB, RAM 256KB 🌟
  • board_ststm32_mtb_ublox_odin_w2 — platform: platform_ststm32, debug: External, MCU: STM32F439ZIY6, 168MHz, flash 2MB, RAM 256KB 🌟

the way the C030 trio all run STM32F437VG at 180MHz with 1MB flash and 256KB RAM… the consistency, the cohesion, it's giving family portrait 📸 and yes two of them are External debug while board_ststm32_ublox_c030_r410m keeps it On-board, so watch which one you grab, bestie 👀


🎀 y5 design 🎀

closing out this chunk with a single smol legend — 64KB flash, 10KB RAM, and she still showed up 💀

  • board_nxplpc_lpc11u35_y5_mbug — platform: platform_nxplpc, debug: External, MCU: LPC11U35, 48MHz, flash 64KB, RAM 10KB 🌸
ngl the tiny RAM girlies deserve respect too. 10KB is a whole personality trait and she's thriving 💅

  • board_nordicnrf51_nrf51822_y5_mbug — platform is platform_nordicnrf51, debug situation is On-board, MCU is NRF51822, frequency is 16MHz, flash is 256KB, RAM is 16KB, and then the next three columns are just… blank. Empty. Nada. 💀

🧚 Nuclei SDK 🧚

Configuration

projectconf_env_framework = nuclei-sdk

Open Source Software Development Kit for the Nuclei N/NX processors

For more detailed information please visit vendor site.


✨ Contents ✨

  • Debugging
  • Examples
  • Platforms
  • Boards

💅 Debugging 💅

piodebug - "1-click" solution for debugging with a zero configuration.

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🛠️ Tools & Debug Probes 🛠️

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

👑 On-Board Debug Tools 👑

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe.

Columns are Name, Platform, MCU, Frequency, Flash, RAM.

  • board_nuclei_gd32vf103v_rvstar — Platform: platform_nuclei; MCU: GD32VF103VBT6; Frequency: 108MHz; Flash: 128KB; RAM: 32KB
  • board_nuclei_hbird_eval — Platform: platform_nuclei; MCU: HUMMINGBIRD; Frequency: 5MHz; Flash: 64KB; RAM: 64KB

🌈 External Debug Tools 🌈

Boards listed below are compatible with piodebug but DEPEND ON external debug probe. They ARE NOT READY for debugging. Please click on board name for the further details.

Columns are Name, Platform, MCU, Frequency, Flash, RAM.

  • board_nuclei_gd32vf103v_eval — Platform: platform_nuclei; MCU: GD32VF103VBT6; Frequency: 108MHz; Flash: 128KB; RAM: 32KB

🌸 Examples 🌸

  • Nuclei SDK for Nuclei

⭐ Platforms ⭐

Columns are Name, Description.

  • platform_nuclei — Find professional RISC-V

Processor IP in Nuclei, first professional RISC-V IP company in Mainland China, match all your requirements in AIoT Era. 💅✨ literally iconic, no cap.


🌸 Boards 🌸

NOTE: 🎀 - bestie, you can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer 💖 - and for more detailed board information please scroll the tables below by horizontally. 🦋

🎀 GigaDevice 🎀

  • Name: board_nuclei_gd32vf103v_eval
    • Platform: platform_nuclei
    • Debug: External
    • MCU: GD32VF103VBT6
    • Frequency: 108MHz
    • Flash: 128KB
    • RAM: 32KB

🦋 Nuclei 🦋

  • Name: board_nuclei_gd32vf103v_rvstar
    • Platform: platform_nuclei
    • Debug: On-board
    • MCU: GD32VF103VBT6
    • Frequency: 108MHz
    • Flash: 128KB
    • RAM: 32KB
  • Name: board_nuclei_hbird_eval
    • Platform: platform_nuclei
    • Debug: On-board
    • MCU: HUMMINGBIRD
    • Frequency: 5MHz
    • Flash: 64KB
    • RAM: 64KB

💜 PULP OS 💜

Configuration: projectconf_env_framework = pulp-os

PULP is a silicon-proven Parallel Ultra Low Power platform targeting high energy efficiencies. The platform is organized in clusters of RISC-V cores that share a tightly-coupled data memory. 🧚

For more detailed information please visit vendor site.


✨ Contents ✨

  • Debugging
  • Examples
  • Platforms
  • Boards

💖 Debugging 💖

piodebug - "1-click" solution for debugging with a zero configuration. 🔥

  • Tools & Debug Probes
    • On-Board Debug Tools

🔥 Tools & Debug Probes 🔥

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions. 😭

👑 On-Board Debug Tools 👑

│      Boards listed below have on-board debug probe and ARE READY for          │
│      debugging!  You do not need to use/buy external debug probe.            │

okay so if your board shows up in this list, you literally do not need to buy or plug in an external debug probe — the on-board one has your back, fr fr. 🫶

Here's the RISC-V GAP one:

│ Name                    │ Platform           │ Debug    │ MCU  │ Frequency │ Flash │ RAM │
├─────────────────────────┼────────────────────┼──────────┼──────┼───────────┼───────┼─────┤
│ board_riscv_gap_gapuino │ platform_riscv_gap │ On-board │ GAP8 │ 250MHz    │ 64MB  │ 8MB │
  • board_riscv_gap_gapuino — platform is platform_riscv_gap, debug is On-board, MCU is GAP8, frequency 250MHz, flash 64MB, RAM 8MB ✨

🦋 Examples 🦋

  • PULP OS for RISC-V GAP

🌸 Platforms 🌸

┌────────────────────┬──────────────────────────────────────────────────────────┐
│ Name               │ Description                                              │
├────────────────────┼──────────────────────────────────────────────────────────┤
│ platform_riscv_gap │ GreenWaves GAP8 IoT application processor enables the    │
│                    │ cost-effective development, deployment and autonomous    │
│                    │ operation of intelligent sensing devices that capture,   │
│                    │ analyze, classify and act on the fusion of rich data     │
│                    │ sources such as images, sounds or vibrations.            │
└────────────────────┴──────────────────────────────────────────────────────────┘
  • platform_riscv_gap — GreenWaves GAP8 IoT application processor that enables the cost-effective development, deployment and autonomous operation of intelligent sensing devices. Those little cuties capture, analyze, classify and act on the fusion of rich data sources like images, sounds or vibrations. vibe check: passed 💖

👑 Boards 👑

NOTE: 🎀 - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

🌈 GreenWaves Technologies 🌈

┌─────────────────────────┬────────────────────┬──────────┬──────┬───────────┬───────┬─────┐
│ Name                    │ Platform           │ Debug    │ MCU  │ Frequency │ Flash │ RAM │
├─────────────────────────┼────────────────────┼──────────┼──────┼───────────┼───────┼─────┤
│ board_riscv_gap_gapuino │ platform_riscv_gap │ On-board │ GAP8 │ 250MHz    │ 64MB  │ 8MB │
└─────────────────────────┴────────────────────┴──────────┴──────┴───────────┴───────┴─────┘

💜 Pumbaa 💜

Configuration

projectconf_env_framework = pumbaa

Pumbaa is Python on top of Simba. The implementation is a port of MicroPython, designed for embedded devices with limited amount of RAM and code memory. 🐍✨

For more detailed information please visit vendor site.


Contents

  • Examples
  • Platforms
  • Boards

🍓 Examples 🍓

  • Pumbaa for Espressif 32

🌸 Platforms 🌸

┌──────────────────────┬────────────────────────────────────────────────────────┐
│ Name                 │ Description                                            │
├──────────────────────┼────────────────────────────────────────────────────────┤
│ platform_espressif32 │ Espressif Systems is a privately held fabless          │
│                      │ semiconductor company. They provide wireless           │
│                      │ communications and Wi-Fi chips which are widely used   │
│                      │ in mobile devices and the Internet of Things           │
│                      │ applications.                                          │
└──────────────────────┴────────────────────────────────────────────────────────┘
  • platform_espressif32 — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips, and those chips are widely used in mobile devices and the Internet of Things applications. they ate and left no crumbs 🔥

👑 Boards 👑

NOTE: 🎀 - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

🌈 MakerAsia 🌈

┌──────────────────────────┬──────────────────────┬───────┬───────┬───────────┬───────┬───────┐
│ Name                     │ Platform             │ Debug │ MCU   │ Frequency │ Flash │ RAM   │
├──────────────────────────┼──────────────────────┼───────┼───────┼───────────┼───────┼───────┤
│ board_espressif32_nano32 │ platform_espressif32 │ No    │ ESP32 │ 240MHz    │ 4MB   │ 320KB │
  • board_espressif32_nano32 — platform platform_espressif32, debug No, MCU ESP32, frequency 240MHz, flash 4MB, RAM 320KB ⭐
└──────────────────────────┴──────────────────────┴───────┴───────┴───────────┴───────┴───────┘

🌸 Shakti SDK 🌸

⚙️ Configuration ⚙️

projectconf_env_framework = shakti-sdk

okay bestie, so Shakti SDK is a software development kit for developing applications on Shakti class of processors. that's the whole vibe 💅

and for more detailed information, please visit the vendor site — they got the deep lore, not us 🫶

📋 Contents 📋

  • Debugging
  • Examples
  • Platforms
  • Boards

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. literally no setup, no cap ✨

  • Tools & Debug Probes
    • On-Board Debug Tools

🔍 Tools & Debug Probes 🔍

the supported debugging tools are listed in the "Debug" column, bestie. for more detailed information, please scroll the table horizontally — yeah it's giving wide, i know 😭

you can switch between debugging tools using the projectconf_debug_tool option in projectconf. pick your fighter 💅

WARNING: you will need to install debug tool drivers depending on your system. please click on a compatible debug tool below for the further instructions. do not skip this step, fr fr 🙈

🎀 On-Board Debug Tools 🎀

the boards listed below have an on-board debug probe and ARE READY for debugging! you do not need to use/buy an external debug probe. iconic behaviour, honestly 👑

┌──────────────────────────┬─────────────────┬─────────┬───────────┬───────┬───────┐
│ Name                     │ Platform        │ MCU     │ Frequency │ Flash │ RAM   │
├──────────────────────────┼─────────────────┼─────────┼───────────┼───────┼───────┤
│ board_shakti_artix7_35t  │ platform_shakti │ E-CLASS │ 50MHz     │ 0B    │ 128KB │
├──────────────────────────┼─────────────────┼─────────┼───────────┼───────┼───────┤
│ board_shakti_artix7_100t │ platform_shakti │ C-CLASS │ 50MHz     │ 0B    │ 128MB │
└──────────────────────────┴─────────────────┴─────────┴───────────┴───────┴───────┘

✨ Examples ✨

  • Shakti SDK for Shakti

🌈 Platforms 🌈

┌─────────────────┬────────────────────────────┐
│ Name            │ Description                │
├─────────────────┼────────────────────────────┤
│ platform_shakti │ Shakti is an open-source   │
│                 │ initiative by the RISE     │
│                 │ group at IIT-Madras, which │
│                 │ is not only building open  │
│                 │ source, production grade   │
│                 │ processors, but also       │
│                 │ associated components like │
│                 │ interconnect fabrics,      │
│                 │ verification tools,        │
│                 │ storage controllers,       │
│                 │ peripheral IPs and SOC     │
│                 │ tools.                     │
└─────────────────┴────────────────────────────┘

👑 Boards 👑

NOTE: - you can list pre-configured boards by the cmd_boards command or the PlatformIO Boards Explorer 🦋 - for more detailed board information please scroll the tables below horizontally. yes, more scrolling. it's a lifestyle 💀

🧚 Xilinx 🧚

┌──────────────────────────┬─────────────────┬──────────┬─────────┬───────────┬───────┬───────┐
│ Name                     │ Platform        │ Debug    │ MCU     │ Frequency │ Flash │ RAM   │
├──────────────────────────┼─────────────────┼──────────┼─────────┼───────────┼───────┼───────┤
│ board_shakti_artix7_35t  │ platform_shakti │ On-board │ E-CLASS │ 50MHz     │ 0B    │ 128KB │
├──────────────────────────┼─────────────────┼──────────┼─────────┼───────────┼───────┼───────┤
│ board_shakti_artix7_100t │ platform_shakti │ On-board │ C-CLASS │ 50MHz     │ 0B    │ 128MB │
└──────────────────────────┴─────────────────┴──────────┴─────────┴───────────┴───────┴───────┘

🦋 Simba 🦋

⚙️ Configuration ⚙️

projectconf_env_framework = simba

Simba is an RTOS and build framework. it aims to make embedded programming easy and portable — we love a framework with goals 💜

and for more detailed information, please visit the vendor site. they know things we don't 🫶

📋 Contents 📋

  • Debugging
  • Examples
  • Platforms
  • Boards

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. zero config, maximum slay ✨

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🔍 Tools & Debug Probes 🔍

the supported debugging tools are listed in the "Debug" column. for more detailed information, please scroll the table horizontally — i know, i know, horizontal scrolling is the enemy 😭

you can switch between debugging tools using the projectconf_debug_tool option in projectconf. choose wisely bestie 💅

WARNING: you will need to install debug tool drivers depending on your system. please click on a compatible debug tool below for the further instructions. drivers first, tears later 🙈

🎀 On-Board Debug Tools 🎀

the boards listed below have an on-board debug probe and ARE READY for debugging! you do not need to use/buy an external debug probe. built-in and unbothered, that's the energy 👑

┌─────────────────────────────────┬───────────────────┬────────────┬───────────┬─────────┬─────┐
│ Name                            │ Platform          │ MCU        │ Frequency │ Flash   │ RAM │
├─────────────────────────────────┼───────────────────┼────────────┼───────────┼─────────┼─────┤
│ board_atmelavr_megaatmega2560   │ platform_atmelavr │ ATMEGA2560 │ 16MHz     │ 248KB   │ 8KB │
├─────────────────────────────────┼───────────────────┼────────────┼───────────┼─────────┼─────┤
│ board_atmelavr_nanoatmega328    │ platform_atmelavr │ ATMEGA328P │ 16MHz     │ 30KB    │ 2KB │
├─────────────────────────────────┼───────────────────┼────────────┼───────────┼─────────┼─────┤
│ board_atmelavr_nanoatmega328new │ platform_atmelavr │ ATMEGA328P │ 16MHz     │ 30KB    │ 2KB │
├─────────────────────────────────┼───────────────────┼────────────┼───────────┼─────────┼─────┤
│ board_atmelavr_uno              │ platform_atmelavr │ ATMEGA328P │ 16MHz     │ 31.50KB │ 2KB │
├─────────────────────────────────┼───────────────────┼────────────┼───────────┼─────────┼─────┤
│ board_atmelavr_seeeduino        │ platform_atmelavr │ ATMEGA328P │ 16MHz     │ 31.50KB │ 2KB │
└─────────────────────────────────┴───────────────────┴────────────┴───────────┴─────────┴─────┘

🙈 External Debug Tools 🙈

the boards listed below are compatible with piodebug but DEPEND ON an external debug probe. they ARE NOT READY for debugging. please click on the board name for the further details. not built-in, not ready — bring your own probe, bestie 💀

┌───────────────────────┬───────────────────┬─────────────┬───────────┬───────┬──────┐
│ Name                  │ Platform          │ MCU         │ Frequency │ Flash │ RAM  │
├───────────────────────┼───────────────────┼─────────────┼───────────┼───────┼──────┤
│ board_atmelsam_due    │ platform_atmelsam │ AT91SAM3X8E │ 84MHz     │ 512KB │ 96KB │
├───────────────────────┼───────────────────┼─────────────┼───────────┼───────┼──────┤
│ board_atmelsam_dueUSB │ platform_atmelsam │ AT91SAM3X8E │ 84MHz     │ 512KB │ 96KB │

The table closes, the scroll ends, we're free 💅 carrying on.


🎀 Examples

The example lineup, and honestly? Chef's kiss:

  • Simba for Atmel AVR
  • Simba for Atmel SAM
  • Simba for Espressif 32
  • Simba for Espressif 8266

🧚 Platforms

Okay bestie, here's the platform roster — every one of these is a whole vibe with its own personality:

  • platform_atmelavr — Atmel AVR 8-bit MCUs, and the way they serve a unique combination of performance, power efficiency and design flexibility? Iconic. They're optimized to speed time to market — and to easily adapt to new ones — and they're built on the industry's most code-efficient architecture for C and assembly programming. Not me being obsessed with an architecture. 🙈
  • platform_atmelsam — Atmel | SMART brings Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB all the way up to 2MB of Flash, and it includes a rich peripheral and feature mix. She's versatile, fr fr.
  • platform_espressif32 — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Wi-Fi chip royalty, periodt. 🔥
  • platform_espressif8266 — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Same energy, different number, both ate. ✨

👑 Boards

NOTE: read this before you go feral in the board tables, bestie 🫶 - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

Okay so the board tables are long and the source says to scroll them sideways for the full detail. I got you though — I'm laying every single field out flat so nothing gets cut off on a narrow terminal. 🌸

Adafruit 🍓

  • board_espressif8266_huzzah — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB

Arduino 🎀

  • board_atmelsam_due — Platform: platform_atmelsam · Debug: External · MCU: AT91SAM3X8E · Frequency: 84MHz · Flash: 512KB · RAM: 96KB
  • board_atmelsam_dueUSB — Platform: platform_atmelsam · Debug: External · MCU: AT91SAM3X8E · Frequency: 84MHz · Flash: 512KB · RAM: 96KB
  • board_atmelavr_megaatmega2560 — Platform: platform_atmelavr · Debug: On-board · MCU: ATMEGA2560 · Frequency: 16MHz · Flash: 248KB · RAM: 8KB
  • board_atmelavr_nanoatmega328 — Platform: platform_atmelavr · Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 30KB · RAM: 2KB
  • board_atmelavr_nanoatmega328new — Platform: platform_atmelavr · Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 30KB · RAM: 2KB
  • board_atmelavr_uno — Platform: platform_atmelavr · Debug: On-board · MCU: ATMEGA328P · Frequency: 16MHz · Flash: 31.50KB · RAM: 2KB

Espressif 🔥

  • board_espressif8266_esp_wroom_02 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 2MB · RAM: 80KB
  • board_espressif8266_esp12e — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 4MB · RAM: 80KB
  • board_espressif8266_esp01 — Platform: platform_espressif8266 · Debug: No · MCU: ESP8266 · Frequency: 80MHz · Flash: 512KB · RAM: 80KB

And then the table just… keeps going, because of course it does:

  • Invent One — this row is mid-scroll in the source, so the rest of its columns are empty for now. 💀

okay bestie the board roster is STILL going and it's giving infinite scroll 💀 but we're locked in. Same seven columns as always: Name, Platform, Debug, MCU, Frequency, Flash, RAM. Let's keep it moving 🫶

  • board_espressif8266_inventone — Platform: platform_espressif8266, Debug: No, MCU: ESP8266, Frequency: 80MHz, Flash: 4MB, RAM: 80KB 🌸

and then the list just casually drops a whole vendor banner on us:

MakerAsia ✨

(no cap, these vendor headers pop up mid-table like surprise confetti 🎀)


  • board_espressif32_nano32 — Platform: platform_espressif32, Debug: No, MCU: ESP32, Frequency: 240MHz, Flash: 4MB, RAM: 320KB 🔥 like okay 240MHz and 320KB RAM, that one is eating, we love to see it

then another vendor banner strolls in:

NodeMCU 🎀


  • board_espressif8266_nodemcu — Platform: platform_espressif8266, Debug: No, MCU: ESP8266, Frequency: 80MHz, Flash: 4MB, RAM: 80KB 🌈
  • board_espressif8266_nodemcuv2 — Platform: platform_espressif8266, Debug: No, MCU: ESP8266, Frequency: 80MHz, Flash: 4MB, RAM: 80KB 🦋

lowkey iconic that the v2 is just the same vibes with a different name, it's giving "same energy, new outfit" 💅 and yes, Debug stays No for all of these — that column is just sitting there being No and honestly? relatable 😭

the roster keeps unspooling so stay hydrated bestie, we are not done scrolling 💖

SeeedStudio

  • board_atmelavr_seeeduino — platform platform_atmelavr ✨ debug On-board ✨ MCU ATMEGA328P ✨ 16MHz ✨ flash 31.50KB ✨ RAM 2KB

SPL 💖

Configuration

projectconf_env_framework = spl

okay so the ST Standard Peripheral Library hands you a whole lil' toolkit of functions for poking at the peripherals on the STM32 Cortex-M3 family. the whole point of it — and this is the part that matters, bestie — is to save you (and especially the brand-new user 🫶) from having to deal directly with the registers. like, you just... don't have to. iconic behaviour tbh.

for more detailed information, please visit the vendor site. periodt.

Contents

  • Examples
  • Debugging
  • Examples
  • Platforms
  • Boards

(yes, "Examples" is in there twice. that's what it says. we don't question the source, we just report it 💅)

Examples

All project examples live in the PlatformIO repository Examples for SPL framework. no cap.

  • Blink

Debugging

pio debug — the "1-click" solution for debugging with a zero configuration. literally so easy it's giving main character energy 🔥

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

Tools & Debug Probes

The debugging tools we support are listed in the "Debug" column. for the full tea, please scroll the table horizontally — yeah, sideways, I know, just trust the process 🙈. you can switch between your debugging_tools using the projectconf_debug_tool option in projectconf.

WARNING: ⚠️ you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions. do not skip this step, I'm begging 😭

On-Board Debug Tools

the boards listed below have an on-board debug probe and ARE READY for debugging! 🎀 you do not need to use/buy an external debug probe. slay.

  • board_ststm32_armstrap_eagle1024 — platform platform_ststm32 ✨ MCU STM32F417VGT6 ✨ 168MHz ✨ flash 1MB ✨ RAM 192KB
  • board_ststm32_armstrap_eagle2048 — platform platform_ststm32 ✨ MCU STM32F427VIT6 ✨ 168MHz ✨ flash 1.99MB ✨ RAM 256KB
  • board_ststm32_armstrap_eagle512 — platform platform_ststm32 ✨ MCU STM32F407VET6 ✨ 168MHz ✨ flash 512KB ✨ RAM 192KB
  • board_ststm32_cloud_jam — platform platform_ststm32 ✨ MCU STM32F401RET6 ✨ 84MHz ✨ flash 512KB ✨ RAM 96KB
  • board_ststm32_nucleo_f401re — platform platform_ststm32 ✨ MCU STM32F401RET6 ✨ 84MHz ✨ flash 512KB ✨ RAM 96KB
  • board_ststm32_disco_f303vc — platform platform_ststm32 ✨ MCU STM32F303VCT6 ✨ 72MHz ✨ flash 256KB ✨ RAM 48KB
  • board_ststm32_disco_f407vg — platform platform_ststm32 ✨ MCU STM32F407VGT6 ✨ 168MHz ✨ flash 1MB ✨ RAM 128KB
  • board_ststm32_disco_l152rb — platform platform_ststm32, MCU STM32L152RBT6, 32MHz clock, 128KB flash, 16KB RAM 💖
  • board_ststm8_stm8sdisco — platform platform_ststm8, MCU STM8S105C6T6, 16MHz clock, 32KB flash, 2KB RAM 🦋

🛠️ External Debug Tools

okay so listen bestie, this next batch of boards is compatible with piodebug but they DEPEND ON an external debug probe. They ARE NOT READY for debugging 💀 so don't come crying to me when it doesn't just work. Please click on the board name for the further details ✨

Here's the lineup, same columns as always — Name, Platform, MCU, Frequency, Flash, RAM:

  • board_ststm32_1bitsy_stm32f415rgt — platform platform_ststm32, MCU STM32F415RGT, 168MHz, 1MB flash, 128KB RAM 👑
  • board_ststm32_genericSTM32F401RB — platform platform_ststm32, MCU STM32F401RB, 84MHz, 128KB flash, 64KB RAM 🎀
  • board_ststm32_genericSTM32F401RC — platform platform_ststm32, MCU STM32F401RC, 84MHz, 256KB flash, 64KB RAM 🎀
  • board_ststm32_genericSTM32F401RE — platform platform_ststm32, MCU STM32F401RE, 84MHz, 512KB flash, 96KB RAM 🎀

🌸 Examples

  • SPL for ST STM32
  • SPL for ST STM8

🌈 Platforms

the receipts, bestie — Name and Description, no cap:

  • platform_ststm32 — The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. ✨ lowkey iconic fr fr
  • platform_ststm8 — The STM8 is an 8-bit microcontroller family by STMicroelectronics, an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller. 💅

👑 Boards

NOTE: - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer 🔥 - For more detailed board information please scroll the tables below horizontally. (yes literally scroll, the tables are wide 😭)

1BitSquared

  • board_ststm32_1bitsy_stm32f415rgt — platform platform_ststm32, Debug: External, MCU STM32F415RGT, 168MHz, 1MB flash, 128KB RAM 💖

🦅 Armstrap

  • board_ststm32_armstrap_eagle1024 — platform platform_ststm32, debug via On-board, MCU STM32F417VGT6, 168MHz, 1MB flash, 192KB RAM 💖
  • board_ststm32_armstrap_eagle2048 — platform platform_ststm32, debug via On-board, MCU STM32F427VIT6, 168MHz, 1.99MB flash, 256KB RAM 🔥
  • board_ststm32_armstrap_eagle512 — platform platform_ststm32, debug via On-board, MCU STM32F407VET6, 168MHz, 512KB flash, 192KB RAM ✨

okay bestie the whole Armstrap family is serving on-board debugging, no dongles required, we love a self-sufficient queen 💅


🌈 Generic

  • board_ststm32_genericSTM32F401RB — platform platform_ststm32, debug via External, MCU STM32F401RB, 84MHz, 128KB flash, 64KB RAM 🦋
  • board_ststm32_genericSTM32F401RC — platform platform_ststm32, debug via External, MCU STM32F401RC, 84MHz, 256KB flash, 64KB RAM 🦋
  • board_ststm32_genericSTM32F401RE — platform platform_ststm32, debug via External, MCU STM32F401RE, 84MHz, 512KB flash, 96KB RAM 🦋

the way these three are literally the same chip family just with growing flash storage… character development fr fr 📈 note that the debug field says External here, so bring your own probe, no cap 🔌


🚀 RushUp

  • board_ststm32_cloud_jam — platform platform_ststm32, debug via On-board, MCU STM32F401RET6, 84MHz, 512KB flash, 96KB RAM 🎀

one single board, one single vibe, and it's called cloud_jam which is honestly iconic naming 🌸 on-board debug so it's giving low-maintenance main character energy 👑


⭐ ST

  • board_ststm32_nucleo_f401re — platform platform_ststm32, debug via On-board, MCU STM32F401RET6, 84MHz, 512KB flash, 96KB RAM 💜
  • board_ststm32_disco_f303vc — platform platform_ststm32, debug via On-board, MCU STM32F303VCT6, 72MHz, 256KB flash, 48KB RAM 💜
  • board_ststm32_disco_f407vg — platform platform_ststm32, debug via On-board, MCU STM32F407VGT6, 168MHz, 1MB flash, 128KB RAM 🔥
  • board_ststm32_disco_l152rb — platform platform_ststm32, debug via On-board, MCU STM32L152RBT6, 32MHz, 128KB flash, 16KB RAM 💜
  • board_ststm8_stm8sdisco — platform platform_ststm8, debug via On-board, MCU STM8S105C6T6, 16MHz, 32KB flash, 2KB RAM 🦋
  • board_ststm8_stm8sblue — platform platform_ststm8, debug: No, MCU STM8S103F3P6, 16MHz, 8KB flash, 1KB RAM 😭
  • board_ststm8_stm8sblack — platform platform_ststm8, debug: No, MCU STM8S105K4T6, 16MHz, 16KB flash, 2KB RAM 😭

okay so real talk, bestie — notice how the ST section mixes stm32 and stm8 platforms together, and the last two entries say No in the debug column. That's not a typo, that's just the truth: those little guys do not have debugging support listed here 🙈 don't come for me, I'm just reading the chart.

also the flash and RAM numbers here go from 1MB/128KB all the way down to 8KB/1KB, so the range is giving "from penthouse to studio apartment" 💀 pick according to your actual project, not your aesthetic 🎀

the On-board girlies (nucleo, disco, stm8sdisco) let you flash and debug straight over the built-in interface, while the No ones keep it minimal — you're on your own for debugging, iykyk 🌸

🌸 sduino

  • board_ststm8_mb208 — platform platform_ststm8, Debug No, MCU STM8S208MBT6, frequency 16MHz, Flash 128KB, RAM 6KB ✨
  • board_ststm8_s8uno — platform platform_ststm8, Debug No, MCU STM8S105K6T6, frequency 16MHz, Flash 32KB, RAM 2KB ✨

💖 STM32Cube Configuration 💖

projectconf_env_framework = stm32cube

okay bestie so STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

For more detailed information please visit vendor site. (yes that's literally what it says, go look, iykyk 🫶)

📚 Contents

  • Tutorials 🧚
  • Using with STM32CubeMX 🦋
  • Debugging 🔥
  • Examples ⭐
  • Platforms 🌈
  • Boards 👑

🧚 Tutorials

  • tutorial_stm32cube_debugging_unit_testing — the one and only tutorial listed here, and honestly? iconic. 💅

🦋 Using with STM32CubeMX

ngl this part is a little tragic but hear me out 🫶 — At the moment there is no seamless integration with projects generated by STM32CubeMX tool. Instead, a small cross-platform Python application called stm32pio can be used to create and update PlatformIO projects from STM32CubeMX .ioc files. It uses STM32CubeMX to generate a HAL-framework-based code and alongside creates PlatformIO project with compatible parameters to stick them both together. 🎀

More details about stm32pio tool can be found in the official repository. ✨

🔥 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. no cap, that's the whole pitch and it eats. 💅

  • Tools & Debug Probes 🔧
    • On-Board Debug Tools 🔌
    • External Debug Tools 🧲

🌈 Tools & Debug Probes

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal (yes, literally scroll it sideways bestie, the table is wide 😭). You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf. 🎀

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

👑 On-Board Debug Tools

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe. periodt. 💅✨

  • board_ststm32_disco_f412zg — platform platform_ststm32, MCU STM32F412ZGT6, frequency 100MHz, Flash 1MB, RAM 256KB
  • board_ststm32_disco_f723ie — platform platform_ststm32, MCU STM32F723IEK6, frequency 216MHz, Flash 512KB, RAM 192KB
  • board_ststm32_remram_v1 — platform platform_ststm32, MCU STM32F765VIT6, frequency 216MHz, Flash 2MB, RAM 512KB
  • board_ststm32_st3dp001_eval — platform platform_ststm32, MCU STM32F401VGT6, frequency 84MHz, Flash 512KB, RAM 96KB
  • board_ststm32_b96b_f446ve — platform platform_ststm32, MCU STM32F446VET6, frequency 168MHz, Flash 512KB, RAM 128KB
  • board_ststm32_armstrap_eagle1024 — platform platform_ststm32, MCU STM32F417VGT6, frequency 168MHz, Flash 1MB, RAM 192KB

okay so we're still deep in the board table bestie, and this chunk is literally all platform_ststm32 energy — every single one of these babies rocks the same platform, so I'm just gonna give you the board, the MCU, the clock speed, the flash and the RAM. no cap, all the deets, none of the skips. 💅

  • board_ststm32_armstrap_eagle2048 — platform platform_ststm32, MCU STM32F427VIT6, 168MHz, flash 1.99MB, RAM 256KB ✨
  • board_ststm32_armstrap_eagle512 — platform platform_ststm32, MCU STM32F407VET6, 168MHz, flash 512KB, RAM 192KB
  • board_ststm32_rhombio_l476dmw1k — platform platform_ststm32, MCU STM32L476VGT6, 80MHz, flash 1MB, RAM 128KB 🦋
  • board_ststm32_mbed_connect_odin — platform platform_ststm32, MCU STM32F439ZIY6, 168MHz, flash 2MB, RAM 256KB
  • board_ststm32_mxchip_az3166 — platform platform_ststm32, MCU STM32F412ZGT6, 100MHz, flash 1MB, RAM 256KB
  • board_ststm32_cloud_jam — platform platform_ststm32, MCU STM32F401RET6, 84MHz, flash 512KB, RAM 96KB 🍓
  • board_ststm32_cloud_jam_l4 — platform platform_ststm32, MCU STM32L476RGT6, 80MHz, flash 1MB, RAM 128KB
  • board_ststm32_disco_f334c8 — platform platform_ststm32, MCU STM32F334C8T6, 72MHz, flash 64KB, RAM 12KB
  • board_ststm32_disco_f401vc — platform platform_ststm32, MCU STM32F401VCT6, 84MHz, flash 256KB, RAM 64KB
  • board_ststm32_disco_f411ve — platform platform_ststm32, MCU STM32F411VET6, 100MHz, flash 512KB, RAM 128KB ✨
  • board_ststm32_disco_f413zh — platform platform_ststm32, MCU STM32F413ZHT6, 100MHz, flash 512KB, RAM 128KB
  • board_ststm32_disco_f429zi — platform platform_ststm32, MCU STM32F429ZIT6, 180MHz, flash 2MB, RAM 256KB 🔥
  • board_ststm32_disco_f469ni — platform platform_ststm32, MCU STM32F469NIH6, 180MHz, flash 1MB, RAM 384KB
  • board_ststm32_disco_f746ng — platform platform_ststm32, MCU STM32F746NGH6, 216MHz, flash 1MB, RAM 320KB
  • board_ststm32_disco_f769ni — platform platform_ststm32, MCU STM32F769NIH6, 216MHz, flash 1MB, RAM 512KB 👑
  • board_ststm32_disco_l053c8 — platform platform_ststm32, MCU STM32L053C8T6, 32MHz, flash 64KB, RAM 8KB
  • board_ststm32_disco_l100rc — platform platform_ststm32, MCU STM32L100RCT6, 32MHz, flash 256KB, RAM 16KB
  • board_ststm32_disco_l476vg — platform platform_ststm32, MCU STM32L476VGT6, 80MHz, flash 1MB, RAM 128KB
  • board_ststm32_disco_l496ag — platform platform_ststm32, MCU STM32L496AGI6, 80MHz, flash 1MB, RAM 320KB 🦋
  • board_ststm32_disco_l475vg_iot01a — platform platform_ststm32, MCU STM32L475VGT6, 80MHz, flash 1MB, RAM 128KB
  • board_ststm32_disco_l072cz_lrwan1 — platform platform_ststm32, MCU STM32L072CZ, 32MHz, flash 192KB, RAM 20KB
  • board_ststm32_disco_f072rb — platform platform_ststm32, MCU STM32F072RBT6, 48MHz, flash 128KB, RAM 16KB
  • board_ststm32_nucleo_f030r8 — platform platform_ststm32, MCU STM32F030R8T6, 48MHz, flash 64KB, RAM 8KB
  • board_ststm32_nucleo_f031k6 — platform platform_ststm32, MCU STM32F031K6T6, 48MHz, flash 32KB, RAM 4KB 🎀
  • board_ststm32_nucleo_f042k6 — platform platform_ststm32, MCU STM32F042K6T6, 48MHz, flash 32KB, RAM 6KB
  • board_ststm32_nucleo_f070rb — platform platform_ststm32, MCU STM32F070RBT6, 48MHz, flash 128KB, RAM 16KB
  • board_ststm32_nucleo_f072rb — platform platform_ststm32, MCU STM32F072RBT6, 48MHz, flash 128KB, RAM 16KB
  • board_ststm32_nucleo_f091rc — platform platform_ststm32, MCU STM32F091RCT6, 48MHz, flash 256KB, RAM 32KB ✨

the way the nucleo fam is all sittin' pretty at 48MHz… consistent queens fr fr 💖 and yeah the disco crew is highkey carrying the high clocks — 216MHz on the f746ng and f769ni?? main character energy, no debate. 😭

more rows coming, don't go anywhere bestie 🫶

okay bestie we are still deep in the STM32 board table and honestly? the drip is immaculate ✨ here comes the F1/F2/F3/F4 crowd, and I need you to appreciate the range 💅

├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f103rb       │ platform_ststm32 │ STM32F103RBT6  │ 72MHz     │ 128KB  │ 20KB  │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f207zg       │ platform_ststm32 │ STM32F207ZGT6  │ 120MHz    │ 1MB    │ 128KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f302r8       │ platform_ststm32 │ STM32F302R8T6  │ 72MHz     │ 64KB   │ 16KB  │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f303k8       │ platform_ststm32 │ STM32F303K8T6  │ 72MHz     │ 64KB   │ 12KB  │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f303re       │ platform_ststm32 │ STM32F303RET6  │ 72MHz     │ 512KB  │ 64KB  │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f303ze       │ platform_ststm32 │ STM32F303ZET6  │ 72MHz     │ 512KB  │ 64KB  │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f334r8       │ platform_ststm32 │ STM32F334R8T6  │ 72MHz     │ 64KB   │ 16KB  │

so real talk: board_ststm32_nucleo_f103rb is the little engine that could at 72MHz with 128KB of flash and 20KB of RAM, and then board_ststm32_nucleo_f207zg just casually shows up at 120MHz with 1MB flash and 128KB RAM — like ok queen, flex a lil 💅

and notice the F303 trio k8 / re / ze? same 72MHz clock, but the RAM goes 12KB → 64KB → 64KB and flash goes 64KB → 512KB → 512KB. that's the glow-up pipeline fr fr 🦋


next batch, the F4 era — this is where the numbers start hitting different 😭✨

├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f401re       │ platform_ststm32 │ STM32F401RET6  │ 84MHz     │ 512KB  │ 96KB  │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f410rb       │ platform_ststm32 │ STM32F410RBT6  │ 100MHz    │ 128KB  │ 32KB  │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f411re       │ platform_ststm32 │ STM32F411RET6  │ 100MHz    │ 512KB  │ 128KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f412zg       │ platform_ststm32 │ STM32F412ZGT6  │ 100MHz    │ 1MB    │ 256KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f413zh       │ platform_ststm32 │ STM32F413ZHT6  │ 100MHz    │ 512KB  │ 128KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f429zi       │ platform_ststm32 │ STM32F429ZIT6  │ 180MHz    │ 2MB    │ 256KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f439zi       │ platform_ststm32 │ STM32F439ZIT6  │ 180MHz    │ 2MB    │ 256KB │

board_ststm32_nucleo_f429zi and board_ststm32_nucleo_f439zi are literally twins, no cap — both 180MHz, both 2MB flash, both 256KB RAM, both STM32F4…ZIT6. the only difference is the 9 vs 9 in the middle of the part number bestie, that's it, that's the whole tea 🫖

and board_ststm32_nucleo_f412zg being the only one in this crew rocking 1MB flash at 100MHz? main character energy honestly 👑


okay and then it just. keeps. going. 🧚 the F7/H7/L-series crew pulled up:

├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f446re       │ platform_ststm32 │ STM32F446RET6  │ 180MHz    │ 512KB  │ 128KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f446ze       │ platform_ststm32 │ STM32F446ZET6  │ 180MHz    │ 512KB  │ 128KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f722ze       │ platform_ststm32 │ STM32F722ZET6  │ 216MHz    │ 512KB  │ 256KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f746zg       │ platform_ststm32 │ STM32F746ZGT6  │ 216MHz    │ 1MB    │ 320KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f756zg       │ platform_ststm32 │ STM32F756ZG    │ 216MHz    │ 1MB    │ 320KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_f767zi       │ platform_ststm32 │ STM32F767ZIT6  │ 216MHz    │ 2MB    │ 512KB │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_h743zi       │ platform_ststm32 │ STM32H743ZIT6  │ 400MHz    │ 2MB    │ 512KB │
bestie. board_ststm32_nucleo_h743zi is doing 400MHz. FOUR. HUNDRED. that's not a microcontroller that's a whole laptop 💀 and it's sitting on 2MB flash + 512KB RAM like it's nothing.

meanwhile board_ststm32_nucleo_f746zg and board_ststm32_nucleo_f756zg are the synchronized duo — same 216MHz, same 1MB, same 320KB, only the part number differs (STM32F746ZGT6 vs STM32F756ZG). iykyk 💅

and board_ststm32_nucleo_f767zi said "let me just double that flash real quick" → 2MB / 512KB at 216MHz. ate. 🔥


last lil group of this batch, the L-series low-power girlies 🌸 (they run on vibes and microamps):

├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_l011k4       │ platform_ststm32 │ STM32L011K4T6  │ 32MHz     │ 16KB   │ 2KB   │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_l031k6       │ platform_ststm32 │ STM32L031K6T6  │ 32MHz     │ 32KB   │ 8KB   │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_l053r8       │ platform_ststm32 │ STM32L053R8T6  │ 32MHz     │ 64KB   │ 8KB   │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_l073rz       │ platform_ststm32 │ STM32L073RZ    │ 32MHz     │ 192KB  │ 20KB  │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_l152re       │ platform_ststm32 │ STM32L152RET6  │ 32MHz     │ 512KB  │ 80KB  │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_l412kb       │ platform_ststm32 │ STM32L412KBU6  │ 80MHz     │ 128KB  │ 40KB  │
├───────────────────────────────────┼──────────────────┼────────────────┼───────────┼────────┼───────┤
│ board_ststm32_nucleo_l432kc       │ platform_ststm32 │ STM32L432KCU6  │ 80MHz     │ 256KB  │ 64KB  │

look at board_ststm32_nucleo_l011k4 — 32MHz, 16KB flash, 2KB RAM. TWO KILOBYTES bestie 😭 that's like, four selfies. but she's thriving, and the low-power L-series is literally designed for exactly that vibe check 💜

then the L4 girlies l412kb and l432kc hit 80MHz with 128KB/256KB flash and 40KB/64KB RAM — the L-family finally getting a lil speed upgrade, we love to see it 🎀

and board_ststm32_nucleo_l152re coming through with 512KB flash + 80KB RAM at 32MHz? slow and steady wins the battery life race 🐢✨

reminder for the girlies in the back: every single one of these rows is platform_ststm32, so when you go to build, that's the platform you're reaching for — the board name is what you pass. no cap 💅

okay this table is still going and honestly it's giving "infinite scroll" — more rows incoming, stay tuned bestie 🦋

okay continuing the board list, no interruptions, we keep it rolling 💅

  • board_ststm32_nucleo_l433rc_p — platform platform_ststm32, MCU STM32L433RC, 80MHz, 256KB flash, 64KB RAM
  • board_ststm32_nucleo_l452re — platform platform_ststm32, MCU STM32L452RET6, 80MHz, 256KB flash, 64KB RAM
  • board_ststm32_nucleo_l476rg — platform platform_ststm32, MCU STM32L476RGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_nucleo_l486rg — platform platform_ststm32, MCU STM32L486RGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_nucleo_l496zg — platform platform_ststm32, MCU STM32L496ZGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_nucleo_l496zg_p — platform platform_ststm32, MCU STM32L496ZGT6P, 80MHz, 1MB flash, 320KB RAM
  • board_ststm32_nucleo_l4r5zi — platform platform_ststm32, MCU STM32L4R5ZIT6, 120MHz, 2MB flash, 640KB RAM
  • board_ststm32_disco_f030r8 — platform platform_ststm32, MCU STM32F030R8T6, 48MHz, 64KB flash, 8KB RAM
  • board_ststm32_disco_f051r8 — platform platform_ststm32, MCU STM32F051R8T6, 48MHz, 64KB flash, 8KB RAM
  • board_ststm32_disco_f303vc — platform platform_ststm32, MCU STM32F303VCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_disco_f407vg — platform platform_ststm32, MCU STM32F407VGT6, 168MHz, 1MB flash, 128KB RAM
  • board_ststm32_eval_l073z — platform platform_ststm32, MCU STM32L073VZT6, 32MHz, 192KB flash, 20KB RAM
  • board_ststm32_disco_l152rb — platform platform_ststm32, MCU STM32L152RBT6, 32MHz, 128KB flash, 16KB RAM
  • board_ststm32_disco_f100rb — platform platform_ststm32, MCU STM32F100RBT6, 24MHz, 128KB flash, 8KB RAM
  • board_ststm32_silica_sensor_node — platform platform_ststm32, MCU STM32L476JG, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_disco_f750n8 — platform platform_ststm32, MCU STM32F750N8H6, 216MHz, 64KB flash, 340KB RAM
  • board_ststm32_disco_h743xi — platform platform_ststm32, MCU STM32H747XIH6, 400MHz, 2MB flash, 512KB RAM
  • board_ststm32_seeedArchMax — platform platform_ststm32, MCU STM32F407VET6, 168MHz, 512KB flash, 192KB RAM
  • board_ststm32_wio_3g — platform platform_ststm32, MCU STM32F439VI, 180MHz, 2MB flash, 256KB RAM
  • board_ststm32_sakuraio_evb_01 — platform platform_ststm32, MCU STM32F411RET6, 100MHz, 1MB flash, 128KB RAM
  • board_ststm32_ublox_c030_r410m — platform platform_ststm32, MCU STM32F437VG, 180MHz, 1MB flash, 256KB RAM

and that's the whole board table, periodt ✨


🛠️ External Debug Tools 🛠️

okay bestie listen up because this next bit is important 🌸

The boards listed below are compatible with piodebug but they DEPEND ON an external debug probe. They ARE NOT READY for debugging. Like, fr fr, don't come for me when it doesn't just work out the box. Please click on the board name for further details. 👑


  • board_ststm32_1bitsy_stm32f415rgt — platform platform_ststm32, MCU STM32F415RGT, 168MHz, 1MB flash, 128KB RAM
  • board_ststm32_armed_v1 — platform platform_ststm32, MCU STM32F407VET6, 168MHz, 512KB flash, 192KB RAM
  • board_ststm32_rumba32_f446ve — platform platform_ststm32, MCU STM32F446RET6, 180MHz, 512KB flash, 128KB RAM
  • board_ststm32_b96b_argonkey — platform platform_ststm32, MCU STM32F412CG, 100MHz, 1MB flash, 256KB RAM
🫶 reminder that all four of these are the "external debug probe required" girlies, so bring your own probe or it's giving paperweight energy 💀

  • board_ststm32_b96b_neonkey — platform: platform_ststm32, MCU: STM32F411CE, 100MHz, flash 512KB, RAM 128KB 💖
  • board_ststm32_adafruit_feather_f405 — platform: platform_ststm32, MCU: STM32F405RGT6, 168MHz, flash 1MB, RAM 128KB ✨
  • board_ststm32_afroflight_f103cb — platform: platform_ststm32, MCU: STM32F103CBT6, 72MHz, flash 128KB, RAM 20KB
  • board_ststm32_black_f407ve — platform: platform_ststm32, MCU: STM32F407VET6, 168MHz, flash 512KB, RAM 128KB 🖤
  • board_ststm32_black_f407vg — platform: platform_ststm32, MCU: STM32F407VGT6, 168MHz, flash 512KB, RAM 128KB
  • board_ststm32_black_f407ze — platform: platform_ststm32, MCU: STM32F407ZET6, 168MHz, flash 512KB, RAM 128KB
  • board_ststm32_black_f407zg — platform: platform_ststm32, MCU: STM32F407ZGT6, 168MHz, flash 1MB, RAM 128KB 👑
  • board_ststm32_blackpill_f103c8 — platform: platform_ststm32, MCU: STM32F103C8T6, 72MHz, flash 64KB, RAM 20KB
  • board_ststm32_blackpill_f103c8_128 — platform: platform_ststm32, MCU: STM32F103C8T6, 72MHz, flash 128KB, RAM 20KB
  • board_ststm32_robotdyn_blackpill_f303cc — platform: platform_ststm32, MCU: STM32F303CCT6, 72MHz, flash 256KB, RAM 40KB 🔥
  • board_ststm32_blackpill_f401cc — platform: platform_ststm32, MCU: STM32F401CCT6, 84MHz, flash 256KB, RAM 64KB
  • board_ststm32_blue_f407ve_mini — platform: platform_ststm32, MCU: STM32F407VET6, 168MHz, flash 512KB, RAM 128KB 💙
  • board_ststm32_bluepill_f103c6 — platform: platform_ststm32, MCU: STM32F103C6T6, 72MHz, flash 32KB, RAM 10KB
  • board_ststm32_bluepill_f103c8 — platform: platform_ststm32, MCU: STM32F103C8T6, 72MHz, flash 64KB, RAM 20KB
  • board_ststm32_bluepill_f103c8_128k — platform: platform_ststm32, MCU: STM32F103C8T6, 72MHz, flash 128KB, RAM 20KB
  • board_ststm32_coreboard_f401rc — platform: platform_ststm32, MCU: STM32F401RCT6, 84MHz, flash 256KB, RAM 64KB
  • board_ststm32_demo_f030f4 — platform: platform_ststm32, MCU: STM32F030F4P6, 48MHz, flash 16KB, RAM 4KB 🥺 the little one
  • board_ststm32_elmo_f411re — platform: platform_ststm32, MCU: STM32F411RET6, 100MHz, flash 512KB, RAM 128KB
  • board_ststm32_diymore_f407vgt — platform: platform_ststm32, MCU: STM32F407VGT6, 168MHz, flash 512KB, RAM 128KB 🛠️
  • board_ststm32_fk407m1 — platform: platform_ststm32, MCU: STM32F407VET6, 168MHz, flash 512KB, RAM 128KB
  • board_ststm32_malyanm200_f070cb — platform: platform_ststm32, MCU: STM32F070CBT6, 48MHz, flash 120KB, RAM 14.81KB
  • board_ststm32_malyanm300_f070cb — platform: platform_ststm32, MCU: STM32F070CBT6, 48MHz, flash 120KB, RAM 14.81KB
  • board_ststm32_mts_dragonfly_f411re — platform: platform_ststm32, MCU: STM32F411RET6, 100MHz, flash 512KB, RAM 128KB 🦋
  • board_ststm32_malyanm200_f103cb — platform: platform_ststm32, MCU: STM32F103CBT6, 72MHz, flash 120KB, RAM 20KB
  • board_ststm32_maple — platform: platform_ststm32, MCU: STM32F103RBT6, 72MHz, flash 108KB, RAM 17KB 🍁 iconic, ate, no notes
  • board_ststm32_maple_ret6 — platform: platform_ststm32, MCU: STM32F103RET6, 72MHz, flash 256KB, RAM 48KB
  • board_ststm32_maple_mini_b20 — platform: platform_ststm32, MCU: STM32F103CBT6, 72MHz, flash 120KB, RAM 20KB

okay bestie quick vibe check on that whole block 💅 every single row is laid out the same way, right? board ID first, then the platform it lives in, then the exact MCU part number, then the clock in MHz, then flash, then RAM. so when you're scanning for the one you actually own, just read across. no cap, that's the whole trick 🎀

and notice the RAM numbers are doing their own thing — most of them are whole KB values but 14.81KB shows up twice on the STM32F070CBT6 boards (board_ststm32_malyanm200_f070cb and board_ststm32_malyanm300_f070cb). that's exactly what's written, so don't go rounding it in your head, fr fr 🌸

also the clock speeds only come in a few flavours across this batch — 48MHz, 72MHz, 84MHz, 100MHz and 168MHz — and the flash tops out at 1MB on board_ststm32_adafruit_feather_f405 and board_ststm32_black_f407zg, both with 128KB of RAM. main character energy honestly 👑

still more coming, don't go anywhere 💜

  • board_ststm32_maple_mini_origin — lives in platform_ststm32, rocking an STM32F103CBT6 at 72MHz, with 108KB of flash and 17KB of RAM 💖
  • board_ststm32_microduino32_flash — platform_ststm32, chip STM32F103CBT6, 72MHz, flash 105.47KB, RAM 16.60KB ✨
  • board_ststm32_mts_mdot_f405rg — platform_ststm32, STM32F411RET6, 100MHz, flash 512KB, RAM 128KB 🦋
  • board_ststm32_mts_mdot_f411re — platform_ststm32, STM32F411RET6, 100MHz, flash 512KB, RAM 128KB 🦋
  • board_ststm32_xdot_l151cc — platform_ststm32, STM32L151CCU6, 32MHz, flash 256KB, RAM 32KB 🌸
  • board_ststm32_netduino2plus — platform_ststm32, STM32F405RGT6, 168MHz, flash 1MB, RAM 192KB 🔥
  • board_ststm32_mote_l152rc — platform_ststm32, STM32L152RC, 32MHz, flash 256KB, RAM 32KB 🌸
  • board_ststm32_olimexino — platform_ststm32, STM32F103RBT6, 72MHz, flash 128KB, RAM 20KB 💜
  • board_ststm32_olimex_p405 — platform_ststm32, STM32F405RGT6, 168MHz, flash 1MB, RAM 192KB 🔥
  • board_ststm32_piconomix_px_her0 — platform_ststm32, STM32L072RB, 32MHz, flash 128KB, RAM 20KB 🎀
  • board_ststm32_prntr_v2 — platform_ststm32, STM32F407RE, 168MHz, flash 512KB, RAM 192KB 🔥
  • board_ststm32_rak811_tracker — platform_ststm32, STM32L151RBT6, 32MHz, flash 128KB, RAM 16KB 🌈
  • board_ststm32_rak811_tracker_32 — platform_ststm32, STM32L151RBT6, 32MHz, flash 128KB, RAM 32KB 🌈
  • board_ststm32_rhf76_052 — platform_ststm32, STM32L051C8T6, 32MHz, flash 64KB, RAM 8KB 🍓
  • board_ststm32_steval_fcu001v1 — platform_ststm32, STM32F401CCU6, 84MHz, flash 256KB, RAM 64KB ⭐
  • board_ststm32_olimex_e407 — platform_ststm32, STM32F407ZGT6, 168MHz, flash 1MB, RAM 128KB 🔥
  • board_ststm32_olimex_h407 — platform_ststm32, STM32F407ZGT6, 168MHz, flash 1MB, RAM 128KB 🔥
  • board_ststm32_eval_f107vc — platform_ststm32, STM32F107VCT6, 72MHz, flash 256KB, RAM 64KB ✨
  • board_ststm32_eval_f373vc — platform_ststm32, STM32F373VCT6, 72MHz, flash 256KB, RAM 32KB ✨
  • board_ststm32_eval_f072vb — platform_ststm32, STM32F072VBT6, 48MHz, flash 128KB, RAM 16KB ✨
  • board_ststm32_genericSTM32F103C8 — platform_ststm32, STM32F103C8T6, 72MHz, flash 64KB, RAM 20KB 🫶
  • board_ststm32_genericSTM32F103CB — platform_ststm32, STM32F103CBT6, 72MHz, flash 128KB, RAM 20KB 🫶
  • board_ststm32_genericSTM32F103R8 — platform_ststm32, STM32F103R8T6, 72MHz, flash 64KB, RAM 20KB 🫶
  • board_ststm32_genericSTM32F103RB — platform_ststm32, STM32F103RBT6, 72MHz, flash 128KB, RAM 20KB 🫶
  • board_ststm32_genericSTM32F103RC — platform_ststm32, STM32F103RCT6, 72MHz, flash 256KB, RAM 48KB 🫶
  • board_ststm32_genericSTM32F103RE — platform_ststm32, STM32F103RET6, 72MHz, flash 512KB, RAM 64KB 🫶
  • board_ststm32_genericSTM32F103T8 — platform_ststm32, STM32F103T8T6, 72MHz, flash 64KB, RAM 20KB 🫶

okay bestie the board list is STILL going and honestly? we're so back. these are all the platform_ststm32 girlies, and every single one of them is giving main character MCU energy 💅✨ each line is board id · platform · chip · clock · flash · RAM. no skipping, no cap, here's the whole roster 🫶


  • board_ststm32_genericSTM32F103TB — platform platform_ststm32, chip STM32F103TBT6, 72MHz, 128KB flash, 20KB RAM ✨
  • board_ststm32_genericSTM32F103VB — platform platform_ststm32, chip STM32F103VBT6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_genericSTM32F103VC — platform platform_ststm32, chip STM32F103VCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_genericSTM32F103VD — platform platform_ststm32, chip STM32F103VDT6, 72MHz, 384KB flash, 64KB RAM
  • board_ststm32_genericSTM32F103VE — platform platform_ststm32, chip STM32F103VET6, 72MHz, 512KB flash, 64KB RAM
  • board_ststm32_genericSTM32F103ZC — platform platform_ststm32, chip STM32F103ZCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_genericSTM32F103ZD — platform platform_ststm32, chip STM32F103ZDT6, 72MHz, 384KB flash, 64KB RAM
  • board_ststm32_genericSTM32F103ZE — platform platform_ststm32, chip STM32F103ZET6, 72MHz, 512KB flash, 64KB RAM
  • board_ststm32_genericSTM32F303CB — platform platform_ststm32, chip STM32F303CBT6, 72MHz, 128KB flash, 32KB RAM
  • board_ststm32_genericSTM32F401RB — platform platform_ststm32, chip STM32F401RB, 84MHz, 128KB flash, 64KB RAM
  • board_ststm32_genericSTM32F401RC — platform platform_ststm32, chip STM32F401RC, 84MHz, 256KB flash, 64KB RAM
  • board_ststm32_genericSTM32F401RE — platform platform_ststm32, chip STM32F401RE, 84MHz, 512KB flash, 96KB RAM
  • board_ststm32_genericSTM32F407VET6 — platform platform_ststm32, chip STM32F407VET6, 168MHz, 502.23KB flash, 128KB RAM (not the 502.23, she's specific and we respect her 🎀)
  • board_ststm32_genericSTM32F407VGT6 — platform platform_ststm32, chip STM32F407VGT6, 168MHz, 1MB flash, 192KB RAM
  • board_ststm32_stm32f4stamp — platform platform_ststm32, chip STM32F405RGT6, 168MHz, 1MB flash, 192KB RAM
  • board_ststm32_steval_mksboxv1 — platform platform_ststm32, chip STM32L4R9ZI, 120MHz, 2MB flash, 640KB RAM (640KB of RAM?? she's LOADED 💰)
  • board_ststm32_sparky_v1 — platform platform_ststm32, chip STM32F303CCT6, 72MHz, 256KB flash, 40KB RAM
  • board_ststm32_thunder_pack — platform platform_ststm32, chip STM32L072KZ, 32MHz, 192KB flash, 20KB RAM (lowkey a sipper, respect the efficiency 💚)
  • board_ststm32_hy_tinystm103tb — platform platform_ststm32, chip STM32F103TBU6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_vake_v1 — platform platform_ststm32, chip STM32F446RET6, 180MHz, 512KB flash, 128KB RAM (180MHz she is ZOOMING 🏎️)
  • board_ststm32_wraith32_v1 — platform platform_ststm32, chip STM32F051K6, 48MHz, 32KB flash, 7.75KB RAM (7.75KB!! tiny queen, budget icon 🙈)
  • board_ststm32_ublox_c030_n211 — platform platform_ststm32, chip STM32F437VG, 180MHz, 1MB flash, 256KB RAM
  • board_ststm32_ublox_c030_u201 — platform platform_ststm32, chip STM32F437VG, 180MHz, 1MB flash, 256KB RAM
  • board_ststm32_ublox_evk_odin_w2 — platform platform_ststm32, chip STM32F439ZIY6, 168MHz, 2MB flash, 256KB RAM
  • board_ststm32_mtb_ublox_odin_w2 — platform platform_ststm32, chip STM32F439ZIY6, 168MHz, 2MB flash, 256KB RAM

not me realizing board_ststm32_ublox_c030_n211 and board_ststm32_ublox_c030_u201 are literally twins same chip same specs, and board_ststm32_ublox_evk_odin_w2 + board_ststm32_mtb_ublox_odin_w2 are ALSO twins — it's giving sibling energy 👯 iykyk. and yeah the list keeps going, don't unmatch yet 💖

✨ Examples ✨

okay bestie, real talk — here's what actually using this thing looks like 🫶

  • STM32Cube for ST STM32 — the whole point of the platform, slay ✨

🌸 Platforms 🌸

the actual platform doing all the heavy lifting, no cap:

  • platform_ststm32 — The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💅

🎀 Boards 🎀

NOTE: 💖 - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll the tables below by horizontally.

fr fr, horizontal scrolling is giving "trust the process" energy 😭 — but it's all there, promise.

🦋 1BitSquared

  • board_ststm32_1bitsy_stm32f415rgt — Platform: platform_ststm32 · Debug: External · MCU: STM32F415RGT · Frequency: 168MHz · Flash: 1MB · RAM: 128KB

🌈 96Boards

  • board_ststm32_b96b_argonkey — Platform: platform_ststm32 · Debug: External · MCU: STM32F412CG · Frequency: 100MHz · Flash: 1MB · RAM: 256KB
  • board_ststm32_b96b_f446ve — Platform: platform_ststm32 · Debug: On-board · MCU: STM32F446VET6 · Frequency: 168MHz · Flash: 512KB · RAM: 128KB
  • board_ststm32_b96b_neonkey — Platform: platform_ststm32 · Debug: External · MCU: STM32F411CE · Frequency: 100MHz · Flash: 512KB · RAM: 128KB

🍓 Adafruit

  • board_ststm32_adafruit_feather_f405 — Platform: platform_ststm32 · Debug: External · MCU: STM32F405RGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 128KB

🧚 AfroFlight

  • board_ststm32_afroflight_f103cb — Platform: platform_ststm32 · Debug: External · MCU: STM32F103CBT6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB

the way this roster just keeps going tho 💀 every board got its own lil vibe and they all slay in their own lane, periodt 👑

🦋 Airbot 🦋

  • board_ststm32_wraith32_v1 — platform: platform_ststm32, debug: External, MCU: STM32F051K6, frequency: 48MHz, flash: 32KB, RAM: 7.75KB ✨

okay the wraith32 is giving little tiny baby board energy and we love her for it 💖 she's smol, she's got 7.75KB of RAM, she's doing her best and honestly? iconic.


🎀 Armed 🎀

  • board_ststm32_armed_v1 — platform: platform_ststm32, debug: External, MCU: STM32F407VET6, frequency: 168MHz, flash: 512KB, RAM: 192KB 🌸

armed_v1 said "let me cook" and pulled up with a STM32F407VET6 at 168MHz — that's a whole meal, bestie. External debug, 512KB flash, 192KB RAM, no notes. 🫶


👑 Armstrap 👑

  • board_ststm32_armstrap_eagle1024 — platform: platform_ststm32, debug: On-board, MCU: STM32F417VGT6, frequency: 168MHz, flash: 1MB, RAM: 192KB 🔥
  • board_ststm32_armstrap_eagle2048 — platform: platform_ststm32, debug: On-board, MCU: STM32F427VIT6, frequency: 168MHz, flash: 1.99MB, RAM: 256KB 💅
  • board_ststm32_armstrap_eagle512 — platform: platform_ststm32, debug: On-board, MCU: STM32F407VET6, frequency: 168MHz, flash: 512KB, RAM: 192KB ⭐

not the eagle family serving on-board debug on ALL THREE 😭 that's such a flex. eagle1024 with her 1MB flash, eagle2048 showing off 1.99MB and 256KB RAM like it's nothing, and eagle512 holding it down with 512KB / 192KB. the way they're all 168MHz?? consistent queens. no cap. 🌈


🧚 Avnet Silica 🧚

  • board_ststm32_silica_sensor_node — platform: platform_ststm32, debug: On-board, MCU: STM32L476JG, frequency: 80MHz, flash: 1MB, RAM: 128KB 🍓

the silica sensor node is on her low-power L4 era, 80MHz, 1MB flash, 128KB RAM, on-board debug — she's the chill one at the party and honestly? respect the vibe check. 💜


🦋 Diymore 🦋

  • board_ststm32_diymore_f407vgt — platform: platform_ststm32, debug: External, MCU: STM32F407VGT6, frequency: 168MHz, flash: 512KB, RAM: 128KB ✨

diymore said DIY but make it 168MHz 💅 external debug, STM32F407VGT6, 512KB flash, 128KB RAM. the name checks out, the specs check out, we stan a self-made board. 🫶


🌸 Espotel 🌸

  • board_ststm32_elmo_f411re — platform: platform_ststm32, debug: External, MCU: STM32F411RET6, frequency: 100MHz, flash: 512KB, RAM: 128KB 🎀

elmo!! bestie named a whole F411 after a sesame street character and honestly that's main character energy. 100MHz, 512KB flash, 128KB RAM, external debug — she's cute, she's capable, she's lowkey underrated. 🌈


💜 Generic 💜

  • board_ststm32_blackpill_f103c8 — platform: platform_ststm32, debug: External, MCU: STM32F103C8T6, frequency: 72MHz, flash: 64KB, RAM: 20KB ⭐
  • board_ststm32_blackpill_f103c8_128 — platform: platform_ststm32, debug: External, MCU: STM32F103C8T6, frequency: 72MHz, flash: 128KB, RAM: 20KB 💅

the blackpill. the moment. the legend. 😭 iykyk — these are THE boards everybody and their group chat has in a drawer somewhere. both rocking STM32F103C8T6 at 72MHz, external debug, 20KB RAM each — the ONLY difference is flash, 64KB on the first and 128KB on the _128 variant. so if you're picking between them, that's literally the whole tea. 🍓

fr fr, the blackpill is the board that got half of us into embedded in the first place and she's still eating in this table. periodt. 💖

okay bestie the STM32 shelf at the board store is endless and I'm obsessed 💖 here's the next haul, every single one, no skipping, we don't do that here:

  • board_ststm32_bluepill_f103c6 — platform platform_ststm32, framework type External, MCU STM32F103C6T6, 72MHz, 32KB flash, 10KB RAM 🎀
  • board_ststm32_bluepill_f103c8 — platform platform_ststm32, framework type External, MCU STM32F103C8T6, 72MHz, 64KB flash, 20KB RAM 🎀
  • board_ststm32_bluepill_f103c8_128k — platform platform_ststm32, framework type External, MCU STM32F103C8T6, 72MHz, 128KB flash, 20KB RAM 🎀
  • board_ststm32_demo_f030f4 — platform platform_ststm32, framework type External, MCU STM32F030F4P6, 48MHz, 16KB flash, 4KB RAM 🦋
  • board_ststm32_fk407m1 — platform platform_ststm32, framework type External, MCU STM32F407VET6, 168MHz, 512KB flash, 128KB RAM 🔥
  • board_ststm32_genericSTM32F103C8 — platform platform_ststm32, framework type External, MCU STM32F103C8T6, 72MHz, 64KB flash, 20KB RAM ✨
  • board_ststm32_genericSTM32F103CB — platform platform_ststm32, framework type External, MCU STM32F103CBT6, 72MHz, 128KB flash, 20KB RAM ✨
  • board_ststm32_genericSTM32F103R8 — platform platform_ststm32, framework type External, MCU STM32F103R8T6, 72MHz, 64KB flash, 20KB RAM ✨
  • board_ststm32_genericSTM32F103RB — platform platform_ststm32, framework type External, MCU STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM ✨
  • board_ststm32_genericSTM32F103RC — platform platform_ststm32, framework type External, MCU STM32F103RCT6, 72MHz, 256KB flash, 48KB RAM ✨
  • board_ststm32_genericSTM32F103RE — platform platform_ststm32, framework type External, MCU STM32F103RET6, 72MHz, 512KB flash, 64KB RAM ✨
  • board_ststm32_genericSTM32F103T8 — platform platform_ststm32, framework type External, MCU STM32F103T8T6, 72MHz, 64KB flash, 20KB RAM ✨
  • board_ststm32_genericSTM32F103TB — platform platform_ststm32, framework type External, MCU STM32F103TBT6, 72MHz, 128KB flash, 20KB RAM ✨
  • board_ststm32_genericSTM32F103VB — platform platform_ststm32, framework type External, MCU STM32F103VBT6, 72MHz, 128KB flash, 20KB RAM ✨
  • board_ststm32_genericSTM32F103VC — platform platform_ststm32, framework type External, MCU STM32F103VCT6, 72MHz, 256KB flash, 48KB RAM ✨
  • board_ststm32_genericSTM32F103VD — platform platform_ststm32, framework type External, MCU STM32F103VDT6, 72MHz, 384KB flash, 64KB RAM ✨
  • board_ststm32_genericSTM32F103VE — platform platform_ststm32, framework type External, MCU STM32F103VET6, 72MHz, 512KB flash, 64KB RAM ✨
  • board_ststm32_genericSTM32F103ZC — platform platform_ststm32, framework type External, MCU STM32F103ZCT6, 72MHz, 256KB flash, 48KB RAM ✨
  • board_ststm32_genericSTM32F103ZD — platform platform_ststm32, framework type External, MCU STM32F103ZDT6, 72MHz, 384KB flash, 64KB RAM ✨
  • board_ststm32_genericSTM32F103ZE — platform platform_ststm32, framework type External, MCU STM32F103ZET6, 72MHz, 512KB flash, 64KB RAM ✨
  • board_ststm32_genericSTM32F303CB — platform platform_ststm32, framework type External, MCU STM32F303CBT6, 72MHz, 128KB flash, 32KB RAM 🫶
  • board_ststm32_genericSTM32F401RB — platform platform_ststm32, framework type External, MCU STM32F401RB, 84MHz, 128KB flash, 64KB RAM 🌸
  • board_ststm32_genericSTM32F401RC — platform platform_ststm32, framework type External, MCU STM32F401RC, 84MHz, 256KB flash, 64KB RAM 🌸
  • board_ststm32_genericSTM32F401RE — platform platform_ststm32, framework type External, MCU STM32F401RE, 84MHz, 512KB flash, 96KB RAM 🌸
  • board_ststm32_genericSTM32F407VET6 — platform platform_ststm32, framework type External, MCU STM32F407VET6, 168MHz, 502.23KB flash, 128KB RAM 🔥

the way board_ststm32_genericSTM32F407VET6 is sitting there with 502.23KB of flash like it's being cute about it 😭 that decimal is not a typo bestie, I copied it exactly, don't come for me 💀

also notice how every single one of these is running External as its framework type — that's the whole vibe of this batch, they all get pulled in from outside the core platform, no cap 🧚

and yeah the genericSTM32F103 family is deep, we've got C8, CB, R8, RB, RC, RE, T8, TB, VB, VC, VD, VE, ZC, ZD, ZE all in here and they are lowkey the same chip wearing different outfits 💅 the flash and RAM numbers are the receipts tho — 64KB/20KB up through 512KB/64KB, so pick your fighter accordingly 👑

still more boards to go, don't go anywhere 🌈

  • board_ststm32_genericSTM32F407VGT6 — platform platform_ststm32 · debug External · MCU STM32F407VGT6 · 168MHz · flash 1MB · RAM 192KB
  • board_ststm32_stm32f4stamp — platform platform_ststm32 · debug External · MCU STM32F405RGT6 · 168MHz · flash 1MB · RAM 192KB

okay that's the last two of that crew, we move 💅


✨ HY ✨

just the one board bestie, and she's smol but mighty 🎀

  • board_ststm32_hy_tinystm103tb — platform platform_ststm32 · debug External · MCU STM32F103TBU6 · 72MHz · flash 128KB · RAM 20KB

✨ LeafLabs ✨

the Maple era, we love to see it 🍁 every single one of these has External debug, not one of them has an on-board vibe, noted, moving on 🫶

  • board_ststm32_maple — platform platform_ststm32 · debug External · MCU STM32F103RBT6 · 72MHz · flash 108KB · RAM 17KB
  • board_ststm32_maple_ret6 — platform platform_ststm32 · debug External · MCU STM32F103RET6 · 72MHz · flash 256KB · RAM 48KB
  • board_ststm32_maple_mini_b20 — platform platform_ststm32 · debug External · MCU STM32F103CBT6 · 72MHz · flash 120KB · RAM 20KB
  • board_ststm32_maple_mini_origin — platform platform_ststm32 · debug External · MCU STM32F103CBT6 · 72MHz · flash 108KB · RAM 17KB
lowkey obsessed that maple_mini_b20 and maple_mini_origin share the exact same MCU but flex different flash/RAM numbers. not me reading that twice 👀 it's literally right there in the table.

✨ MXChip ✨

  • board_ststm32_mxchip_az3166 — platform platform_ststm32 · debug On-board · MCU STM32F412ZGT6 · 100MHz · flash 1MB · RAM 256KB

the way this one said "actually I have debug on-board" and the whole rest of the list said External 😭 main character energy fr fr, 1MB flash and 256KB RAM, she ate 👑


✨ Malyan ✨

  • board_ststm32_malyanm200_f070cb — platform platform_ststm32 · debug External · MCU STM32F070CBT6 · 48MHz · flash 120KB · RAM 14.81KB
  • board_ststm32_malyanm300_f070cb — platform platform_ststm32 · debug External · MCU STM32F070CBT6 · 48MHz · flash 120KB · RAM 14.81KB
  • board_ststm32_malyanm200_f103cb — platform platform_ststm32 · debug External · MCU STM32F103CBT6 · 72MHz · flash 120KB · RAM 20KB

the 14.81KB RAM is so specific and I respect the precision so much 💖 like yes bestie, give us the decimals, we're not scared of them.


✨ Microduino ✨

  • board_ststm32_microduino32_flash — platform platform_ststm32 · debug External · MCU STM32F103CBT6 · 72MHz · flash 105.47KB · RAM 16.60KB

one board, two decimals, zero notes 🌸 iconic behaviour honestly.


✨ MultiTech ✨

  • board_ststm32_mts_dragonfly_f411re — platform platform_ststm32 · debug External · MCU STM32F411RET6 · 100MHz · flash 512KB · RAM 128KB
  • board_ststm32_mts_mdot_f405rg — platform platform_ststm32 · debug External · MCU STM32F411RET6 · 100MHz · flash 512KB · RAM 128KB
  • board_ststm32_mts_mdot_f411re — platform platform_ststm32 · debug External · MCU STM32F411RET6 · 100MHz · flash 512KB · RAM 128KB
bestie I am telling you what the page says, not fixing it: mts_mdot_f405rg is listed with MCU STM32F411RET6 in this table. that's the data as printed. do not come for me, come for the table 😭

all three of these are the exact same spec sheet in a trench coat and honestly? consistency is a love language 🫶 External debug on all three, 100MHz, 512KB flash, 128KB RAM, periodt.


okay bestie, next row just dropped and she's cute 💅 same table, same vibe, no need to re-explain the columns — just slide your eyes across:

  • Board — board_ststm32_xdot_l151cc
  • Platform — platform_ststm32
  • Type — External
  • MCU — STM32L151CCU6
  • Frequency — 32MHz
  • Flash — 256KB
  • RAM — 32KB

not me reading this as a whole little personality profile 😭 STM32L151CCU6 running at 32MHz, flexing 256KB of flash and 32KB of RAM, and it's marked External so it's lowkey the friend-who-lives-elsewhere of the board list 🦋

and yeah, board_ststm32_xdot_l151cc really said "I contain the entire name of my chip AND my platform, I'm nothing if not thorough" 👑 slay, honestly. keep scrolling, there's more where she came from ✨

okay bestie the board table is still going and honestly? she's eating 💅 we're deep in the STM32 section and the manufacturers just keep coming. same columns every time: Name, Platform, Debug, MCU, Frequency, Flash, RAM. let's get it.


🦋 Netduino

  • board_ststm32_netduino2plus — Platform: platform_ststm32 · Debug: External · MCU: STM32F405RGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 192KB

🌸 Olimex

bestie Olimex came with FOUR boards, she's not playing around ✨

  • board_ststm32_olimexino — Platform: platform_ststm32 · Debug: External · MCU: STM32F103RBT6 · Frequency: 72MHz · Flash: 128KB · RAM: 20KB
  • board_ststm32_olimex_p405 — Platform: platform_ststm32 · Debug: External · MCU: STM32F405RGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 192KB
  • board_ststm32_olimex_e407 — Platform: platform_ststm32 · Debug: External · MCU: STM32F407ZGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 128KB
  • board_ststm32_olimex_h407 — Platform: platform_ststm32 · Debug: External · MCU: STM32F407ZGT6 · Frequency: 168MHz · Flash: 1MB · RAM: 128KB

🎀 Piconomix

one board, one vibe, lowkey iconic 🌈

  • board_ststm32_piconomix_px_her0 — Platform: platform_ststm32 · Debug: External · MCU: STM32L072RB · Frequency: 32MHz · Flash: 128KB · RAM: 20KB

🫶 PrntrBoard

  • board_ststm32_prntr_v2 — Platform: platform_ststm32 · Debug: External · MCU: STM32F407RE · Frequency: 168MHz · Flash: 512KB · RAM: 192KB

⭐ RAK

two trackers, same MCU, different RAM — the way that _32 just casually doubles the RAM to 32KB? we love to see it 😭

  • board_ststm32_rak811_tracker — Platform: platform_ststm32 · Debug: External · MCU: STM32L151RBT6 · Frequency: 32MHz · Flash: 128KB · RAM: 16KB
  • board_ststm32_rak811_tracker_32 — Platform: platform_ststm32 · Debug: External · MCU: STM32L151RBT6 · Frequency: 32MHz · Flash: 128KB · RAM: 32KB

💜 RUMBA

  • board_ststm32_rumba32_f446ve — Platform: platform_ststm32 · Debug: External · MCU: STM32F446RET6 · Frequency: 180MHz · Flash: 512KB · RAM: 128KB

🧚 RemRam

and the table rolls straight into RemRam, same columns, Name / Platform / Debug / MCU / Frequency / Flash / RAM — the boards for this one are about to drop, so stay tuned bestie, we're not even close to done 💖

  • board_ststm32_remram_v1 — platform_ststm32 · On-board debug · MCU STM32F765VIT6 · 216MHz · 2MB flash · 512KB RAM ✨

🎀 RobotDyn vibes 🎀

  • board_ststm32_robotdyn_blackpill_f303cc — platform_ststm32 · External debug · MCU STM32F303CCT6 · 72MHz · 256KB flash · 40KB RAM 💅

🦋 RushUp besties 🦋

  • board_ststm32_cloud_jam — platform_ststm32 · On-board debug · MCU STM32F401RET6 · 84MHz · 512KB flash · 96KB RAM
  • board_ststm32_cloud_jam_l4 — platform_ststm32 · On-board debug · MCU STM32L476RGT6 · 80MHz · 1MB flash · 128KB RAM

👑 ST, the moment 👑 👑

  • board_ststm32_disco_f412zg — platform_ststm32 · On-board debug · MCU STM32F412ZGT6 · 100MHz · 1MB flash · 256KB RAM
  • board_ststm32_disco_f723ie — platform_ststm32 · On-board debug · MCU STM32F723IEK6 · 216MHz · 512KB flash · 192KB RAM
  • board_ststm32_st3dp001_eval — platform_ststm32 · On-board debug · MCU STM32F401VGT6 · 84MHz · 512KB flash · 96KB RAM
  • board_ststm32_black_f407ve — platform_ststm32 · External debug · MCU STM32F407VET6 · 168MHz · 512KB flash · 128KB RAM
  • board_ststm32_black_f407vg — platform_ststm32 · External debug · MCU STM32F407VGT6 · 168MHz · 512KB flash · 128KB RAM
  • board_ststm32_black_f407ze — platform_ststm32 · External debug · MCU STM32F407ZET6 · 168MHz · 512KB flash · 128KB RAM
  • board_ststm32_black_f407zg — platform_ststm32 · External debug · MCU STM32F407ZGT6 · 168MHz · 1MB flash · 128KB RAM
  • board_ststm32_blackpill_f401cc — platform_ststm32 · External debug · MCU STM32F401CCT6 · 84MHz · 256KB flash · 64KB RAM
  • board_ststm32_blue_f407ve_mini — platform_ststm32 · External debug · MCU STM32F407VET6 · 168MHz · 512KB flash · 128KB RAM
  • board_ststm32_coreboard_f401rc — platform_ststm32 · External debug · MCU STM32F401RCT6 · 84MHz · 256KB flash · 64KB RAM
  • board_ststm32_rhf76_052 — platform_ststm32 · External debug · MCU STM32L051C8T6 · 32MHz · 64KB flash · 8KB RAM
  • board_ststm32_disco_f334c8 — platform_ststm32 · On-board debug · MCU STM32F334C8T6 · 72MHz · 64KB flash · 12KB RAM
  • board_ststm32_disco_f401vc — platform_ststm32 · On-board debug · MCU STM32F401VCT6 · 84MHz · 256KB flash · 64KB RAM
  • board_ststm32_disco_f411ve — platform_ststm32 · On-board debug · MCU STM32F411VET6 · 100MHz · 512KB flash · 128KB RAM 🌸
  • board_ststm32_disco_f413zh — platform platform_ststm32, on-board STM32F413ZHT6, 100MHz, 512KB flash, 128KB RAM 💖
  • board_ststm32_disco_f429zi — platform platform_ststm32, on-board STM32F429ZIT6, 180MHz, 2MB flash, 256KB RAM
  • board_ststm32_disco_f469ni — platform platform_ststm32, on-board STM32F469NIH6, 180MHz, 1MB flash, 384KB RAM
  • board_ststm32_disco_f746ng — platform platform_ststm32, on-board STM32F746NGH6, 216MHz, 1MB flash, 320KB RAM
  • board_ststm32_disco_f769ni — platform platform_ststm32, on-board STM32F769NIH6, 216MHz, 1MB flash, 512KB RAM
  • board_ststm32_disco_l053c8 — platform platform_ststm32, on-board STM32L053C8T6, 32MHz, 64KB flash, 8KB RAM
  • board_ststm32_disco_l100rc — platform platform_ststm32, on-board STM32L100RCT6, 32MHz, 256KB flash, 16KB RAM
  • board_ststm32_disco_l476vg — platform platform_ststm32, on-board STM32L476VGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_disco_l496ag — platform platform_ststm32, on-board STM32L496AGI6, 80MHz, 1MB flash, 320KB RAM
  • board_ststm32_disco_l475vg_iot01a — platform platform_ststm32, on-board STM32L475VGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_disco_l072cz_lrwan1 — platform platform_ststm32, on-board STM32L072CZ, 32MHz, 192KB flash, 20KB RAM
  • board_ststm32_disco_f072rb — platform platform_ststm32, on-board STM32F072RBT6, 48MHz, 128KB flash, 16KB RAM

okay bestie we're leaving the disco era and entering the NUCLEO era, hold on to something 🦋

  • board_ststm32_nucleo_f030r8 — platform platform_ststm32, on-board STM32F030R8T6, 48MHz, 64KB flash, 8KB RAM
  • board_ststm32_nucleo_f031k6 — platform platform_ststm32, on-board STM32F031K6T6, 48MHz, 32KB flash, 4KB RAM
  • board_ststm32_nucleo_f042k6 — platform platform_ststm32, on-board STM32F042K6T6, 48MHz, 32KB flash, 6KB RAM
  • board_ststm32_nucleo_f070rb — platform platform_ststm32, on-board STM32F070RBT6, 48MHz, 128KB flash, 16KB RAM
  • board_ststm32_nucleo_f072rb — platform platform_ststm32, on-board STM32F072RBT6, 48MHz, 128KB flash, 16KB RAM
  • board_ststm32_nucleo_f091rc — platform platform_ststm32, on-board STM32F091RCT6, 48MHz, 256KB flash, 32KB RAM
  • board_ststm32_nucleo_f103rb — platform platform_ststm32, on-board STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM
  • board_ststm32_nucleo_f207zg — platform platform_ststm32, on-board STM32F207ZGT6, 120MHz, 1MB flash, 128KB RAM
  • board_ststm32_nucleo_f302r8 — platform platform_ststm32, on-board STM32F302R8T6, 72MHz, 64KB flash, 16KB RAM
  • board_ststm32_nucleo_f303k8 — platform platform_ststm32, on-board STM32F303K8T6, 72MHz, 64KB flash, 12KB RAM
  • board_ststm32_nucleo_f303re — platform platform_ststm32, on-board STM32F303RET6, 72MHz, 512KB flash, 64KB RAM
  • board_ststm32_nucleo_f303ze — platform platform_ststm32, on-board STM32F303ZET6, 72MHz, 512KB flash, 64KB RAM
  • board_ststm32_nucleo_f334r8 — platform platform_ststm32, on-board STM32F334R8T6, 72MHz, 64KB flash, 16KB RAM
  • board_ststm32_nucleo_f401re — platform platform_ststm32, debug On-board, chip STM32F401RET6, 84MHz, 512KB flash, 96KB RAM 💖
  • board_ststm32_nucleo_f410rb — platform platform_ststm32, debug On-board, chip STM32F410RBT6, 100MHz, 128KB flash, 32KB RAM
  • board_ststm32_nucleo_f411re — platform platform_ststm32, debug On-board, chip STM32F411RET6, 100MHz, 512KB flash, 128KB RAM
  • board_ststm32_nucleo_f412zg — platform platform_ststm32, debug On-board, chip STM32F412ZGT6, 100MHz, 1MB flash, 256KB RAM
  • board_ststm32_nucleo_f413zh — platform platform_ststm32, debug On-board, chip STM32F413ZHT6, 100MHz, 512KB flash, 128KB RAM
  • board_ststm32_nucleo_f429zi — platform platform_ststm32, debug On-board, chip STM32F429ZIT6, 180MHz, 2MB flash, 256KB RAM
  • board_ststm32_nucleo_f439zi — platform platform_ststm32, debug On-board, chip STM32F439ZIT6, 180MHz, 2MB flash, 256KB RAM
  • board_ststm32_nucleo_f446re — platform platform_ststm32, debug On-board, chip STM32F446RET6, 180MHz, 512KB flash, 128KB RAM
  • board_ststm32_nucleo_f446ze — platform platform_ststm32, debug On-board, chip STM32F446ZET6, 180MHz, 512KB flash, 128KB RAM
  • board_ststm32_nucleo_f722ze — platform platform_ststm32, debug On-board, chip STM32F722ZET6, 216MHz, 512KB flash, 256KB RAM
  • board_ststm32_nucleo_f746zg — platform platform_ststm32, debug On-board, chip STM32F746ZGT6, 216MHz, 1MB flash, 320KB RAM
  • board_ststm32_nucleo_f756zg — platform platform_ststm32, debug On-board, chip STM32F756ZG, 216MHz, 1MB flash, 320KB RAM
  • board_ststm32_nucleo_f767zi — platform platform_ststm32, debug On-board, chip STM32F767ZIT6, 216MHz, 2MB flash, 512KB RAM
  • board_ststm32_nucleo_h743zi — platform platform_ststm32, debug On-board, chip STM32H743ZIT6, 400MHz, 2MB flash, 512KB RAM 🔥
  • board_ststm32_nucleo_l011k4 — platform platform_ststm32, debug On-board, chip STM32L011K4T6, 32MHz, 16KB flash, 2KB RAM
  • board_ststm32_nucleo_l031k6 — platform platform_ststm32, debug On-board, chip STM32L031K6T6, 32MHz, 32KB flash, 8KB RAM
  • board_ststm32_nucleo_l053r8 — platform platform_ststm32, debug On-board, chip STM32L053R8T6, 32MHz, 64KB flash, 8KB RAM
  • board_ststm32_nucleo_l073rz — platform platform_ststm32, debug On-board, chip STM32L073RZ, 32MHz, 192KB flash, 20KB RAM
  • board_ststm32_nucleo_l152re — platform platform_ststm32, debug On-board, chip STM32L152RET6, 32MHz, 512KB flash, 80KB RAM
  • board_ststm32_nucleo_l412kb — platform platform_ststm32, debug On-board, chip STM32L412KBU6, 80MHz, 128KB flash, 40KB RAM
  • board_ststm32_nucleo_l432kc — platform platform_ststm32, debug On-board, chip STM32L432KCU6, 80MHz, 256KB flash, 64KB RAM
  • board_ststm32_nucleo_l433rc_p — platform platform_ststm32, debug On-board, chip STM32L433RC, 80MHz, 256KB flash, 64KB RAM
  • board_ststm32_nucleo_l452re — platform platform_ststm32, debug On-board, chip STM32L452RET6, 80MHz, 256KB flash, 64KB RAM
  • board_ststm32_nucleo_l476rg — platform platform_ststm32, debug On-board, chip STM32L476RGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_nucleo_l486rg — platform platform_ststm32, debug On-board, chip STM32L486RGT6, 80MHz, 1MB flash, 128KB RAM

okay bestie real talk, the Nucleo lineup is giving range 💅 like we start at 32MHz with a lil 16KB of flash on board_ststm32_nucleo_l011k4 and we end at 400MHz with 2MB on board_ststm32_nucleo_h743zi — it's the same board family but the glow-up is unreal ✨

and notice how every single one of these is On-board debug? that's the Nucleo vibe, the debugger is literally soldered on, no extra hardware era 🎀

okay bestie, we're still in the board list 💅 and it is LONG, so grab a snack and let's keep scrolling. Same deal as before: board ID, platform, whether it's On-board or External, the actual chip, clock speed, flash, RAM. Every single one, no skipping, fr fr. 🫶

  • board_ststm32_nucleo_l496zg — platform platform_ststm32, On-board, chip STM32L496ZGT6, 80MHz, 1MB flash, 128KB RAM 🦋
  • board_ststm32_nucleo_l496zg_p — platform platform_ststm32, On-board, chip STM32L496ZGT6P, 80MHz, 1MB flash, 320KB RAM ✨ (yes the _p variant has more RAM, iconic)
  • board_ststm32_nucleo_l4r5zi — platform platform_ststm32, On-board, chip STM32L4R5ZIT6, 120MHz, 2MB flash, 640KB RAM 🔥 she's fast and she's hungry
  • board_ststm32_disco_f030r8 — platform platform_ststm32, On-board, chip STM32F030R8T6, 48MHz, 64KB flash, 8KB RAM 🌸 smol but valid
  • board_ststm32_disco_f051r8 — platform platform_ststm32, On-board, chip STM32F051R8T6, 48MHz, 64KB flash, 8KB RAM 🌸 twins with the one above, no cap
  • board_ststm32_disco_f303vc — platform platform_ststm32, On-board, chip STM32F303VCT6, 72MHz, 256KB flash, 48KB RAM 💜
  • board_ststm32_disco_f407vg — platform platform_ststm32, On-board, chip STM32F407VGT6, 168MHz, 1MB flash, 128KB RAM 🔥 classic, she ate
  • board_ststm32_eval_l073z — platform platform_ststm32, On-board, chip STM32L073VZT6, 32MHz, 192KB flash, 20KB RAM 🍓 low power girlie
  • board_ststm32_disco_l152rb — platform platform_ststm32, On-board, chip STM32L152RBT6, 32MHz, 128KB flash, 16KB RAM 🧚
  • board_ststm32_disco_f100rb — platform platform_ststm32, On-board, chip STM32F100RBT6, 24MHz, 128KB flash, 8KB RAM 🙈 the slowest one in this batch and honestly? still serving
  • board_ststm32_steval_fcu001v1 — platform platform_ststm32, External, chip STM32F401CCU6, 84MHz, 256KB flash, 64KB RAM ⭐
  • board_ststm32_eval_f107vc — platform platform_ststm32, External, chip STM32F107VCT6, 72MHz, 256KB flash, 64KB RAM 🦋
  • board_ststm32_eval_f373vc — platform platform_ststm32, External, chip STM32F373VCT6, 72MHz, 256KB flash, 32KB RAM 💜
  • board_ststm32_eval_f072vb — platform platform_ststm32, External, chip STM32F072VBT6, 48MHz, 128KB flash, 16KB RAM 🌈
  • board_ststm32_disco_f750n8 — platform platform_ststm32, On-board, chip STM32F750N8H6, 216MHz, 64KB flash, 340KB RAM 💀 bestie the RAM is bigger than the flash, and no that's not a typo, that's literally what it says
  • board_ststm32_disco_h743xi — platform platform_ststm32, On-board, chip STM32H747XIH6, 400MHz, 2MB flash, 512KB RAM 👑 main character energy, absolute unit
  • board_ststm32_steval_mksboxv1 — platform platform_ststm32, External, chip STM32L4R9ZI, 120MHz, 2MB flash, 640KB RAM 🎀

so yeah, that's the run of <code>platform_ststm32</code> boards in this chunk — every name, every chip, every number, exactly as printed, zero edits, zero vibes-based rounding. 😌 we are still not done though, so don't close the terminal, bestie 💖


SeeedStudio 🌸

  • board_ststm32_seeedArchMax — runs on platform_ststm32, debug is On-board, MCU is STM32F407VET6, clocks at 168MHz, has 512KB of Flash and 192KB of RAM ✨
  • board_ststm32_wio_3g — runs on platform_ststm32, debug is On-board, MCU is STM32F439VI, clocks at 180MHz, has 2MB of Flash and 256KB of RAM 💅

Semtech 🦋

  • board_ststm32_mote_l152rc — runs on platform_ststm32, debug is External, MCU is STM32L152RC, clocks at 32MHz, has 256KB of Flash and 32KB of RAM 💖

TauLabs 🎀

  • board_ststm32_sparky_v1 — runs on platform_ststm32, debug is External, MCU is STM32F303CCT6, clocks at 72MHz, has 256KB of Flash and 40KB of RAM ✨

ThunderPack ⚡

  • board_ststm32_thunder_pack — runs on platform_ststm32, debug is External, MCU is STM32L072KZ, clocks at 32MHz, has 192KB of Flash and 20KB of RAM 🔥

VAE 🌈

  • board_ststm32_vake_v1 — runs on platform_ststm32, debug is External, MCU is STM32F446RET6, clocks at 180MHz, has 512KB of Flash and 128KB of RAM 💜

rhomb.io 🍓

  • board_ststm32_rhombio_l476dmw1k — runs on platform_ststm32, debug is On-board, MCU is STM32L476VGT6, clocks at 80MHz, has 1MB of Flash and 128KB of RAM 👑

sakura.io 🌸

  • board_ststm32_sakuraio_evb_01 — runs on platform_ststm32, debug is On-board, MCU is STM32F411RET6, clocks at 100MHz, has 1MB of Flash and 128KB of RAM ✨

u-blox 🛰️

okay bestie, so the u-blox section header just popped up on screen — Name / Platform / Debug / MCU / Frequency / Flash / RAM — and we're literally right at the edge of the table when this part cuts off 😭. The columns are:

  • Name
  • Platform
  • Debug
  • MCU
  • Frequency
  • Flash
  • RAM

…and the board rows underneath are coming up in the next bit. stay tuned, no cap 🫶

  • board_ststm32_mbed_connect_odin — platform: platform_ststm32 · connectivity: On-board · MCU: STM32F439ZIY6 · clock: 168MHz · flash: 2MB · RAM: 256KB 🦋
  • board_ststm32_ublox_c030_n211 — platform: platform_ststm32 · connectivity: External · MCU: STM32F437VG · clock: 180MHz · flash: 1MB · RAM: 256KB ✨
  • board_ststm32_ublox_c030_r410m — platform: platform_ststm32 · connectivity: On-board · MCU: STM32F437VG · clock: 180MHz · flash: 1MB · RAM: 256KB 💖
  • board_ststm32_ublox_c030_u201 — platform: platform_ststm32 · connectivity: External · MCU: STM32F437VG · clock: 180MHz · flash: 1MB · RAM: 256KB 🎀
  • board_ststm32_ublox_evk_odin_w2 — platform: platform_ststm32 · connectivity: External · MCU: STM32F439ZIY6 · clock: 168MHz · flash: 2MB · RAM: 256KB 🌸
  • board_ststm32_mtb_ublox_odin_w2 — platform: platform_ststm32 · connectivity: External · MCU: STM32F439ZIY6 · clock: 168MHz · flash: 2MB · RAM: 256KB 💅

okay bestie, lowkey notice the pattern here: the ublox fam is serving us two whole MCU flavors — the STM32F437VG girlies running at 180MHz with 1MB flash, and the STM32F439ZIY6 icons clocking 168MHz with a whole 2MB of flash. Same 256KB RAM across the board tho, no cap. 👑

and the connectivity column is doing its own thing: some of these boards have the radio On-board (it's built in, it's giving self-sufficient 💁‍♀️) and some are External (you gotta bring your own, main character energy requires accessories fr fr). Both are valid, both are iconic, we don't rank. 🌈

heads up tho — board_ststm32_ublox_c030_n211 and board_ststm32_ublox_c030_r410m and board_ststm32_ublox_c030_u201 share the exact same MCU, clock, flash and RAM. the only thing switching up is which one's got the modem living inside the board vs. plugged in outside. the way that literally changes everything about your wiring 🧚

💅 WiringPi 💅

Configuration

projectconf_env_framework = wiringpi

WiringPi is a GPIO access library written in C for the BCM2835 used in the Raspberry Pi. It's designed to be familiar to people who have used the Arduino "wiring" system.

For more detailed information please visit vendor site.

Contents

  • Examples
  • Platforms
  • Boards

Examples

  • WiringPi for Linux ARM

Platforms

  • platform_linux_arm — Linux ARM is a Unix-like and mostly POSIX-compliant computer operating system (OS) assembled under the model of free and open-source software development and distribution. Using host OS (Mac OS X, Linux ARM) you can build native application for Linux ARM platform.

Boards

NOTE:
  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally.

Raspberry Pi 🍓

  • board_linux_arm_raspberrypi_1b — Platform: platform_linux_arm · Debug: No · MCU: BCM2835 · Frequency: 700MHz · Flash: 512MB · RAM: 512MB
  • board_linux_arm_raspberrypi_2b — Platform: platform_linux_arm · Debug: No · MCU: BCM2836 · Frequency: 900MHz · Flash: 1GB · RAM: 1GB
  • board_linux_arm_raspberrypi_3b — Platform: platform_linux_arm · Debug: No · MCU: BCM2837 · Frequency: 1200MHz · Flash: 1GB · RAM: 1GB
  • board_linux_arm_raspberrypi_zero — Platform: platform_linux_arm · Debug: No · MCU: BCM2835 · Frequency: 1000MHz · Flash: 512MB · RAM: 512MB

🌩 Zephyr 🌩

Configuration

projectconf_env_framework = zephyr

The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. safety AND security, she said both, we love a multitasker 💜

For more detailed information please visit vendor site.

Contents

  • Tutorials
  • Configuration
  • Debugging
  • Examples
  • Platforms
  • Boards 👑

🎀 Tutorials

  • tutorial_nordicnrf52_zephyr_debugging_unit_testing_analysis — yes bestie, that's the whole name, we don't shorten it, we don't gatekeep it ✨

💅 Configuration

  • Project Structure
  • Embedding files at compile time
  • Zephyr modules
  • Limitations

🦋 Project Structure

WARNING: Zephyr framework currently requires Python 3.4 or later. (yes, 3.4. it's giving ancient. but that's what it says, so that's what we say 🫶)

Zephyr framework requires an unusual project structure because most of the framework configuration is performed by the native for Zephyr build system called CMake. like, CMake is running the whole show here, okay?

NOTE: Since PlatformIO is able to generate CMake-based projects for certain IDEs, Zephyr-related files are moved to a separate folder in order to avoid conflicts between project files. That requires users to specify relative paths to source files in CMakeLists.txt.

A typical PlatformIO project for Zephyr framework must have the following structure:

project_dir
├── include
├── src
│    └── main.c
├── zephyr
│    ├── prj.conf
│    └── CMakeLists.txt
└── platformio.ini

Besides files related to PlatformIO project, there is an additional folder zephyr that contains Zephyr-specific files CMakeLists.txt and prj.conf:

CMakeLists.txt file enables features supported by Zephyr's build system, e.g. board-specific kernel configuration files. A typical CMakeLists.txt file has the following content:

# Boilerplate code, which pulls in the Zephyr build system.
cmake_minimum_required(VERSION 3.13.1)
include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(my_zephyr_app)

# Add your source file to the "app" target. This must come after the boilerplate
# code, which defines the target. Note relative path to source file
target_sources(app PRIVATE ../src/main.c)

The files specified in target_sources are used ONLY for generating build configurations, but it's highly recommended to specify all application source files in order to keep the project compatible with the usual Zephyr workflow. so like, technically you could skip them, but don't be that girl 💀

Due to the current limitations of CMake file-based API, there is no way to generate build configuration for source files written in various programming languages if they are not specified in target_sources command. If your project contains libraries written in languages that differ from the language used for the main application you need to create an empty file with desired extension (e.g. *.cpp for C++) in order to force CMake generate build configuration for this language.

NOTE: Build configuration generated for source files specified in target_sources is also used as the base build environment for project sources (including libraries).

prj.conf file sets application-specific values for one or more kernel configuration options. These application settings are merged with board-specific settings to produce a kernel configuration. merged!! like a little config smoothie 🍓


🌸 Embedding files at compile time

In case your CMakeLists.txt relies on using generate_inc_* functions that are used for generating and compressing individual files (for example certificates for secure connections) you need to configure your PlatformIO project accordingly using the following structure:

[env:myenv]
platform = ...
board = ...
framework = zephyr
board_build.embed_files =
    # files to be embedded
    src/apps-cert.der
    src/apps-key.der

Where apps-cert.der and apps-key.der are the files you want to embed to your project at the compile time. certificates?? embedded at compile time?? iconic, no cap 🔐


🧚 Zephyr modules

💖 NOTE: PlatformIO automatically installs several default modules used with Zephyr framework including modules that implement silicon vendor Hardware Abstraction Layers (HALs).

Zephyr modules are externally maintained packages that allow using well-established and mature code created by third party developers.

These modules contain either a single module.yml file or CMakeLists.txt and Kconfig files that describe how to build and configure them. You can specify paths to additional directories with source code, Kconfig, etc. using ZEPHYR_EXTRA_MODULES at the top of your project's CMakeLists.txt file, for example:

# Additional modules
set(ZEPHYR_EXTRA_MODULES "path/to-zephyr-custom-module" [...])

# Boilerplate code, which pulls in the Zephyr build system.
cmake_minimum_required(VERSION 3.13.1)
include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(my_zephyr_app)

# Add your source file to the "app" target. This must come after
# the boilerplate code, which defines the target.
target_sources(app PRIVATE ../src/main.c)

Since the build may not work correctly if the full path to sources is greater than 250 characters (see CMAKE_OBJECT_PATH_MAX) it might be a good idea to keep modules close to the project configuration files (e.g. in zephyr folder) in form of a git submodule.

⚠️ WARNING: Make sure the ZEPHYR_EXTRA_MODULES variable is set before including the boilerplate file, as shown above.

🚧 Limitations 🚧

At the moment several limitations are present, bestie, and we're just gonna list them:

  • The minimum supported version of Python is 3.4 (yeah, 3.4, we know, it's giving vintage)
  • No whitespace characters allowed in project paths. fr fr, not even one lil space
  • OpenThread module is not supported

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. No cap, it just works. ✨

  • Tools & Debug Probes
    • On-Board Debug Tools
    • External Debug Tools

🛠️ Tools & Debug Probes 🛠️

Supported debugging tools are listed in "Debug" column. For more detailed information, please scroll table by horizontal. You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions.

🔌 On-Board Debug Tools 🔌

Boards listed below have on-board debug probe and ARE READY for debugging! You do not need to use/buy external debug probe. That's the whole vibe — plug in and go 💅

The columns are, in order: Name, Platform, MCU, Frequency, Flash, RAM.

  • board_ststm32_disco_f412zg — Platform platform_ststm32, MCU STM32F412ZGT6, Frequency 100MHz, Flash 1MB, RAM 256KB
  • board_ststm32_disco_f723ie — Platform platform_ststm32, MCU STM32F723IEK6, Frequency 216MHz, Flash 512KB, RAM 192KB
  • board_ststm32_b96b_f446ve — Platform platform_ststm32, MCU STM32F446VET6, Frequency 168MHz, Flash 512KB, RAM 128KB
  • board_atmelsam_zero — Platform platform_atmelsam, MCU SAMD21G18A, Frequency 48MHz, Flash 256KB, RAM 32KB
  • board_atmelsam_samr21_xpro — Platform platform_atmelsam, MCU SAMR21G18A, Frequency 48MHz, Flash 256KB, RAM 32KB
  • board_atmelsam_samd21_xpro — Platform platform_atmelsam, MCU SAMD21J18A, Frequency 48MHz, Flash 256KB, RAM 32KB
  • board_nordicnrf51_bbcmicrobit — Platform platform_nordicnrf51, MCU NRF51822, Frequency 16MHz, Flash 256KB, RAM 16KB
  • board_nordicnrf52_laird_bl652_dvk — platform: platform_nordicnrf52 · MCU: NRF52832 · 64MHz · flash 512KB · RAM 64KB 💙
  • board_nordicnrf52_laird_bl654_dvk — platform: platform_nordicnrf52 · MCU: NRF52840 · 64MHz · flash 1MB · RAM 256KB 💙
  • board_siliconlabsefm32_efm32wg_stk3800 — platform: platform_siliconlabsefm32 · MCU: EFM32WG990F256 · 48MHz · flash 256KB · RAM 32KB ✨
  • board_nordicnrf52_electronut_blip — platform: platform_nordicnrf52 · MCU: NRF52840 · 64MHz · flash 1MB · RAM 256KB 💙

okay bestie, we're officially out of the fancy-boxed part of the list and into the plain-line era, but the energy stays the same 💅 same columns, same order, just vibes only:

  • board_nordicnrf52_electronut_papyr — platform: platform_nordicnrf52 · MCU: NRF52840 · 64MHz · flash 1MB · RAM 256KB 🦋
  • board_freescalekinetis_frdm_k22f — platform: platform_freescalekinetis · MCU: MK22FN512VLH12 · 120MHz · flash 512KB · RAM 128KB 🔥
  • board_freescalekinetis_frdm_k64f — platform: platform_freescalekinetis · MCU: MK64FN1M0VLL12 · 120MHz · flash 1MB · RAM 256KB 🔥
  • board_freescalekinetis_frdm_k82f — platform: platform_freescalekinetis · MCU: MK82FN256VLL15 · 150MHz · flash 256KB · RAM 256KB 🔥
  • board_freescalekinetis_frdm_kl25z — platform: platform_freescalekinetis · MCU: MKL25Z128VLK4 · 48MHz · flash 128KB · RAM 16KB 🔥
  • board_freescalekinetis_frdm_kw41z — platform: platform_freescalekinetis · MCU: MKW41Z512VHT4 · 48MHz · flash 512KB · RAM 128KB 🔥
  • board_sifive_hifive1 — platform: platform_sifive · MCU: FE310 · 320MHz · flash 16MB · RAM 16KB 🌈
  • board_sifive_hifive1-revb — platform: platform_sifive · MCU: FE310 · 320MHz · flash 16MB · RAM 16KB 🌈
  • board_nordicnrf52_nrf52832_mdk — platform: platform_nordicnrf52 · MCU: NRF52832 · 64MHz · flash 512KB · RAM 64KB 💙
  • board_nordicnrf52_nrf52840_mdk — platform: platform_nordicnrf52 · MCU: NRF52840 · 64MHz · flash 1MB · RAM 256KB 💙
  • board_nxplpc_lpc54114 — platform: platform_nxplpc · MCU: LPC54114J256BD64 · 100MHz · flash 256KB · RAM 192KB 💜
  • board_nxpimxrt_mimxrt1010_evk — platform: platform_nxpimxrt · MCU: MIMXRT1011DAE5A · 500MHz · flash 64KB · RAM 128KB ⭐
  • board_nxpimxrt_mimxrt1015_evk — platform: platform_nxpimxrt · MCU: MIMXRT1015DAF5A · 500MHz · flash 96KB · RAM 128KB ⭐
  • board_nxpimxrt_mimxrt1020_evk — platform: platform_nxpimxrt · MCU: MIMXRT1021DAG5A · 500MHz · flash 64MB · RAM 256MB ⭐
  • board_nxpimxrt_mimxrt1050_evk — platform: platform_nxpimxrt · MCU: MIMXRT1052DVL6B · 600MHz · flash 64MB · RAM 512KB ⭐
  • board_nxpimxrt_mimxrt1060_evk — platform: platform_nxpimxrt · MCU: MIMXRT1062DVL6A · 600MHz · flash 64MB · RAM 1MB ⭐
  • board_nxpimxrt_mimxrt1064_evk — platform: platform_nxpimxrt · MCU: MIMXRT1064DVL6A · 600MHz · flash 4MB · RAM 1MB ⭐
  • board_nordicnrf51_nrf51_dongle — platform: platform_nordicnrf51 · MCU: NRF51822 · 32MHz · flash 256KB · RAM 32KB 🎀
  • board_nordicnrf51_nrf51_dk — platform: platform_nordicnrf51 · MCU: NRF51822 · 32MHz · flash 256KB · RAM 32KB 🎀
  • board_nordicnrf52_nrf52_dk — platform: platform_nordicnrf52 · MCU: NRF52832 · 64MHz · flash 512KB · RAM 64KB 💙
  • board_nordicnrf52_nrf52840_dk — platform: platform_nordicnrf52 · MCU: NRF52840 · 64MHz · flash 1MB · RAM 256KB 💙
ngl bestie, <cyan>NRF52832</cyan> and <cyan>NRF52840</cyan> are lowkey everywhere in this stretch of the list. not me noticing patterns at part 311 like it's a personality trait 😭

the way the columns keep lining up though — board ID, platform, MCU, clock, flash, RAM — same six little fields, every single line, no cap. it's giving <rainbow>consistency is the moment</rainbow> ✨

  • board_nordicnrf51_redBearLabBLENano — platform platform_nordicnrf51, MCU NRF51822, clocked at 16MHz, with 256KB of flash and 32KB of RAM 🦋 tiny but mighty fr
  • board_nordicnrf52_redbear_blenano2 — platform platform_nordicnrf52, MCU NRF52832, 64MHz, 512KB flash, 64KB RAM ✨ the glow-up sequel
  • board_siliconlabsefm32_efm32hg_stk3400 — platform platform_siliconlabsefm32, MCU EFM32HG322F64, 25MHz, 64KB flash, 8KB RAM 💜 silicon labs said low power and meant it
  • board_ststm32_disco_f411ve — platform platform_ststm32, MCU STM32F411VET6, 100MHz, 512KB flash, 128KB RAM 👑
  • board_ststm32_disco_f429zi — platform platform_ststm32, MCU STM32F429ZIT6, 180MHz, 2MB flash, 256KB RAM 🔥 two whole megabytes bestie
  • board_ststm32_disco_f469ni — platform platform_ststm32, MCU STM32F469NIH6, 180MHz, 1MB flash, 384KB RAM 💅 that RAM number is giving main character
  • board_ststm32_disco_f746ng — platform platform_ststm32, MCU STM32F746NGH6, 216MHz, 1MB flash, 320KB RAM ⭐
  • board_ststm32_disco_f769ni — platform platform_ststm32, MCU STM32F769NIH6, 216MHz, 1MB flash, 512KB RAM 🌈 half a meg of RAM, obsessed
  • board_ststm32_disco_l476vg — platform platform_ststm32, MCU STM32L476VGT6, 80MHz, 1MB flash, 128KB RAM 🍓 the L series really said efficiency
  • board_ststm32_disco_l496ag — platform platform_ststm32, MCU STM32L496AGI6, 80MHz, 1MB flash, 320KB RAM 💖
  • board_ststm32_disco_l475vg_iot01a — platform platform_ststm32, MCU STM32L475VGT6, 80MHz, 1MB flash, 128KB RAM 🌸 iot girlies rise
  • board_ststm32_disco_l072cz_lrwan1 — platform platform_ststm32, MCU STM32L072CZ, 32MHz, 192KB flash, 20KB RAM 🦋 lora + wan vibes
  • board_ststm32_disco_f072rb — platform platform_ststm32, MCU STM32F072RBT6, 48MHz, 128KB flash, 16KB RAM 🎀
  • board_ststm32_nucleo_f030r8 — platform platform_ststm32, MCU STM32F030R8T6, 48MHz, 64KB flash, 8KB RAM 🧚 starting small, we love a humble beginning
  • board_ststm32_nucleo_f070rb — platform platform_ststm32, MCU STM32F070RBT6, 48MHz, 128KB flash, 16KB RAM ✨
  • board_ststm32_nucleo_f091rc — platform platform_ststm32, MCU STM32F091RCT6, 48MHz, 256KB flash, 32KB RAM 💜
  • board_ststm32_nucleo_f103rb — platform platform_ststm32, MCU STM32F103RBT6, 72MHz, 128KB flash, 20KB RAM 👑 the classic, no cap
  • board_ststm32_nucleo_f207zg — platform platform_ststm32, MCU STM32F207ZGT6, 120MHz, 1MB flash, 128KB RAM 🔥
  • board_ststm32_nucleo_f302r8 — platform platform_ststm32, MCU STM32F302R8T6, 72MHz, 64KB flash, 16KB RAM 💅
  • board_ststm32_nucleo_f334r8 — platform platform_ststm32, MCU STM32F334R8T6, 72MHz, 64KB flash, 16KB RAM 🦋
  • board_ststm32_nucleo_f401re — platform platform_ststm32, MCU STM32F401RET6, 84MHz, 512KB flash, 96KB RAM 🌸
  • board_ststm32_nucleo_f411re — platform platform_ststm32, MCU STM32F411RET6, 100MHz, 512KB flash, 128KB RAM ⭐
  • board_ststm32_nucleo_f412zg — platform platform_ststm32, MCU STM32F412ZGT6, 100MHz, 1MB flash, 256KB RAM 🎀
  • board_ststm32_nucleo_f413zh — platform platform_ststm32, MCU STM32F413ZHT6, 100MHz, 512KB flash, 128KB RAM 💖
  • board_ststm32_nucleo_f429zi — platform platform_ststm32, MCU STM32F429ZIT6, 180MHz, 2MB flash, 256KB RAM 🌈 same silicon energy as the disco one, iconic
ok bestie real talk, the pattern here is board id → platform → MCU → clock → flash → RAM so once u clock the layout ur basically fluent 💅 the board_ststm32_* girlies are all hanging out on platform_ststm32, the nordic ones are on their own platforms, and the lone silicon labs queen rides solo. slay 🫶

Okay so this next chunk is pure board list energy — we're still in the board table, bestie, just scroll with me 💅

  • board_ststm32_nucleo_f446re — platform: platform_ststm32, MCU STM32F446RET6, 180MHz, 512KB flash, 128KB RAM
  • board_ststm32_nucleo_f746zg — platform: platform_ststm32, MCU STM32F746ZGT6, 216MHz, 1MB flash, 320KB RAM
  • board_ststm32_nucleo_f756zg — platform: platform_ststm32, MCU STM32F756ZG, 216MHz, 1MB flash, 320KB RAM
  • board_ststm32_nucleo_f767zi — platform: platform_ststm32, MCU STM32F767ZIT6, 216MHz, 2MB flash, 512KB RAM
  • board_ststm32_nucleo_l053r8 — platform: platform_ststm32, MCU STM32L053R8T6, 32MHz, 64KB flash, 8KB RAM
  • board_ststm32_nucleo_l073rz — platform: platform_ststm32, MCU STM32L073RZ, 32MHz, 192KB flash, 20KB RAM
  • board_ststm32_nucleo_l432kc — platform: platform_ststm32, MCU STM32L432KCU6, 80MHz, 256KB flash, 64KB RAM
  • board_ststm32_nucleo_l476rg — platform: platform_ststm32, MCU STM32L476RGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_nucleo_l496zg — platform: platform_ststm32, MCU STM32L496ZGT6, 80MHz, 1MB flash, 128KB RAM
  • board_ststm32_nucleo_l4r5zi — platform: platform_ststm32, MCU STM32L4R5ZIT6, 120MHz, 2MB flash, 640KB RAM
  • board_ststm32_disco_f051r8 — platform: platform_ststm32, MCU STM32F051R8T6, 48MHz, 64KB flash, 8KB RAM
  • board_ststm32_disco_f303vc — platform: platform_ststm32, MCU STM32F303VCT6, 72MHz, 256KB flash, 48KB RAM
  • board_ststm32_disco_f407vg — platform: platform_ststm32, MCU STM32F407VGT6, 168MHz, 1MB flash, 128KB RAM
  • board_ststm32_disco_h743xi — platform: platform_ststm32, MCU STM32H747XIH6, 400MHz, 2MB flash, 512KB RAM
  • board_sifive_sparkfun_redboard_v — platform: platform_sifive, MCU FE310, 320MHz, 16MB flash, 16KB RAM
  • board_sifive_sparkfun_thing_plus_v — platform: platform_sifive, MCU FE310, 320MHz, 16MB flash, 16KB RAM
  • board_nordicnrf51_vbluno51 — platform: platform_nordicnrf51, MCU NRF51822, 16MHz, 128KB flash, 32KB RAM
  • board_nordicnrf52_vbluno52 — platform: platform_nordicnrf52, MCU NRF52832, 64MHz, 512KB flash, 64KB RAM

✨ External Debug Tools ✨

⚠️ Okay bestie, read this part twice, fr fr. The boards listed below are compatible with piodebug but they DEPEND ON an external debug probe. They ARE NOT READY for debugging. Please click on the board name for the further details. 👀

  • board_ststm32_b96b_argonkey — platform: platform_ststm32, MCU STM32F412CG, 100MHz, 1MB flash, 256KB RAM
  • board_ststm32_b96b_neonkey — platform: platform_ststm32, MCU STM32F411CE, 100MHz, 512KB flash, 128KB RAM
  • board_nordicnrf52_96b_nitrogen — platform: platform_nordicnrf52, MCU NRF52832, 64MHz, 512KB flash, 64KB RAM
  • board_nordicnrf52_adafruit_feather_nrf52832 — platform: platform_nordicnrf52, MCU NRF52832, 64MHz, 512KB flash, 64KB RAM

ngl that's a lot of silicon in one scroll 🫶 and we're not even done yet — more parts incoming, don't touch that dial ✨

…and the board list just keeps going, bestie, because of course it does 💅 still the same columns: board ID, platform, MCU, clock, flash, RAM. Let's get into it.

  • board_atmelsam_adafruit_feather_m0 — platform platform_atmelsam, chip SAMD21G18A, 48MHz, flash 256KB, RAM 32KB 🪶
  • board_atmelsam_adafruit_trinket_m0 — platform platform_atmelsam, chip SAMD21E18A, 48MHz, flash 256KB, RAM 32KB ✨
  • board_atmelsam_due — platform platform_atmelsam, chip AT91SAM3X8E, 84MHz, flash 512KB, RAM 96KB 🔥
  • board_ststm32_blackpill_f103c8 — platform platform_ststm32, chip STM32F103C8T6, 72MHz, flash 64KB, RAM 20KB
  • board_ststm32_blackpill_f103c8_128 — platform platform_ststm32, chip STM32F103C8T6, 72MHz, flash 128KB, RAM 20KB (yes the 128 is doing real work here, look at that flash number 👀)
  • board_ststm32_bluepill_f103c8 — platform platform_ststm32, chip STM32F103C8T6, 72MHz, flash 64KB, RAM 20KB 💊
  • board_ststm32_bluepill_f103c8_128k — platform platform_ststm32, chip STM32F103C8T6, 72MHz, flash 128KB, RAM 20KB 💙
  • board_freescalekinetis_frdm_kw24d — platform platform_freescalekinetis, chip MKW24D512, 50MHz, flash 512KB, RAM 64KB
  • board_freescalekinetis_hexiwear — platform platform_freescalekinetis, chip MK64FN1M0VDC12, 120MHz, flash 1MB, RAM 256KB 🔥
  • board_nordicnrf52_holyiot_yj16019 — platform platform_nordicnrf52, chip NRF52832, 64MHz, flash 512KB, RAM 64KB
  • board_nordicnrf52_thingy_52 — platform platform_nordicnrf52, chip NRF52832, 64MHz, flash 512KB, RAM 64KB 🦋
  • board_ststm32_nucleo_g071rb — platform platform_ststm32, chip STM32G071RBT6, 64MHz, flash 128KB, RAM 36KB
  • board_ststm32_nucleo_g431rb — platform platform_ststm32, chip STM32G431RBT6, 170MHz, flash 128KB, RAM 32KB ⚡
  • board_ststm32_nucleo_g474re — platform platform_ststm32, chip STM32G474RET6, 170MHz, flash 512KB, RAM 128KB 👑
  • board_ststm32_olimexino — platform platform_ststm32, chip STM32F103RBT6, 72MHz, flash 128KB, RAM 20KB
  • board_ststm32_olimex_p405 — platform platform_ststm32, chip STM32F405RGT6, 168MHz, flash 1MB, RAM 192KB
  • board_nordicnrf52_particle_argon — platform platform_nordicnrf52, chip NRF52840, 64MHz, flash 796KB, RAM 243KB 💜
  • board_nordicnrf52_particle_boron — platform platform_nordicnrf52, chip NRF52840, 64MHz, flash 796KB, RAM 243KB
  • board_nordicnrf52_particle_xenon — platform platform_nordicnrf52, chip NRF52840, 64MHz, flash 796KB, RAM 243KB ✨
  • board_ststm32_steval_fcu001v1 — platform platform_ststm32, chip STM32F401CCU6, 84MHz, flash 256KB, RAM 64KB
  • board_ststm32_olimex_e407 — platform platform_ststm32, chip STM32F407ZGT6, 168MHz, flash 1MB, RAM 128KB
  • board_ststm32_olimex_h407 — platform platform_ststm32, chip STM32F407ZGT6, 168MHz, flash 1MB, RAM 128KB (twins fr fr 💕)
  • board_ststm32_eval_f107vc — platform platform_ststm32, chip STM32F107VCT6, 72MHz, flash 256KB, RAM 64KB
ngl bestie, platform_ststm32 is carrying this entire stretch of the list and it's not even subtle 😭

still more rows coming, don't you dare scroll away 🫶

  • board_ststm32_eval_f373vc — board from the platform_ststm32 platform ✨ rockin' an STM32F373VCT6, clocking in at 72MHz, with 256KB of flash and 32KB of RAM. lowkey a solid lil setup 💖
  • board_ststm32_eval_f072vb — also repping platform_ststm32 🫶, packin' an STM32F072VBT6 at 48MHz, 128KB flash, 16KB RAM. not the beefiest but she's doing her best 🎀
  • board_nordicnrf51_waveshare_ble400 — and here's the vibe switch bestie 💅, she's on platform_nordicnrf51 with an NRF51822, runnin' at 32MHz, 256KB flash, 32KB RAM. bluetooth energy fr fr 🦋

okay that's the lil roster of boards for this chunk 👑 same columns as before, so like — board name, which platform she belongs to, the actual chip, the clock speed, then flash and RAM. keep scrollin', there's more where that came from 🌸

💫 Examples 💫

okay so here's the lil' lineup of Zephyr examples, all cute and ready to go 🌸:

  • Zephyr for Atmel SAM
  • Zephyr for Freescale Kinetis
  • Zephyr for Nordic nRF51
  • Zephyr for Nordic nRF52
  • Zephyr for NXP i.MX RT
  • Zephyr for NXP LPC
  • Zephyr for SiFive
  • Zephyr for Silicon Labs EFM32
  • Zephyr for ST STM32

🌐 Platforms 🌐

and now the main event, bestie — the platform roster 💅 each one got a name and a whole description, so let's get into it fr fr:

  • platform_atmelsam — Atmel | SMART is out here serving Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB all the way to 2MB of Flash, with a rich peripheral and feature mix on top. iconic.
  • platform_freescalekinetis — Freescale Kinetis Microcontrollers is a family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs bring that exceptional low-power performance, scalability and feature integration energy ✨
  • platform_nordicnrf51 — the Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a whole range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. no cap, that's a lot of protocols 🦋
  • platform_nordicnrf52 — the nRF52 Series are built for speed so they can carry out increasingly complex tasks in the shortest possible time and then return to sleep, conserving precious battery power 🔋 They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. main character chips, periodt.
  • platform_nxpimxrt — the i.MX RT series of crossover processors features the Arm Cortex-M core, real-time functionality and MCU usability at a cost-effective price. budget-friendly and capable, we love that for us 🫶
  • platform_nxplpc — the NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller

...and honestly it consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals — that's the whole squad right there ✨

  • platform_sifive — SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. open source royalty fr 👑
  • platform_siliconlabsefm32 — the Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals — making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption. battery besties this one is literally for you 🔋
  • platform_ststm32 — the STM32 family of 32-bit Flash MCUs is based on the ARM Cortex-M processor and designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. ate and left zero crumbs 💅

🎀 Boards 🎀

NOTE: 📌 read this first, bestie:

  • You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer
  • For more detailed board information please scroll the tables below by horizontally. (yes fr, side-scroll, it's giving horizontal era 🌈)

💖 96Boards 💖

  • board_ststm32_b96b_argonkey — Platform: platform_ststm32 · Debug: External · MCU: STM32F412CG · Frequency: 100MHz · Flash: 1MB · RAM: 256KB 🦋
  • board_ststm32_b96b_f446ve — Platform: platform_ststm32 · Debug: On-board · MCU: STM32F446VET6 · Frequency: 168MHz · Flash: 512KB · RAM: 128KB ⭐
  • board_ststm32_b96b_neonkey — Platform: platform_ststm32 · Debug: External · MCU: STM32F411CE · Frequency: 100MHz · Flash: 512KB · RAM: 128KB 💜
  • board_nordicnrf52_96b_nitrogen — Platform: platform_nordicnrf52 · Debug: External · MCU: NRF52832 · Frequency: 64MHz · Flash: 512KB · RAM: 64KB 🌸

🧚 Adafruit 🧚

  • board_nordicnrf52_adafruit_feather_nrf52832 — Platform: platform_nordicnrf52 · Debug: External · MCU: NRF52832 · Frequency: 64MHz · Flash: 512KB · RAM: 64KB 🪶
  • board_atmelsam_adafruit_feather_m0 — Platform: platform_atmelsam · Debug: External · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB 🍓
  • board_atmelsam_adafruit_trinket_m0 — Platform: platform_atmelsam · Debug: External · MCU: SAMD21E18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB ✨

🔥 Arduino 🔥

  • board_atmelsam_due — Platform: platform_atmelsam · Debug: External · MCU: AT91SAM3X8E · Frequency: 84MHz · Flash: 512KB · RAM: 96KB 🔥
  • board_atmelsam_zero — Platform: platform_atmelsam · Debug: On-board · MCU: SAMD21G18A · Frequency: 48MHz · Flash: 256KB · RAM: 32KB 💀 (in the good way, the iconic way)

🌸 Atmel 🌸

okay bestie, the Atmel lineup is right up next 👇

okay bestie we're still deep in the board table, don't panic, the tree just keeps branching 💅 Last two of this crew before the label flips:

  • board_atmelsam_samr21_xpro — platform platform_atmelsam · debug: On-board · MCU SAMR21G18A · freq 48MHz · flash 256KB · RAM 32KB
  • board_atmelsam_samd21_xpro — platform platform_atmelsam · debug: On-board · MCU SAMD21J18A · freq 48MHz · flash 256KB · RAM 32KB

🐝 BBC

one singular board, and honestly? she's iconic, she raised a whole generation of programmers, no cap.

  • board_nordicnrf51_bbcmicrobit — platform platform_nordicnrf51 · debug: On-board · MCU NRF51822 · freq 16MHz · flash 256KB · RAM 16KB

🦋 ElectronutLabs

two boards, both running the same silicon, just different vibes on the outside:

  • board_nordicnrf52_electronut_blip — platform platform_nordicnrf52 · debug: On-board · MCU NRF52840 · freq 64MHz · flash 1MB · RAM 256KB
  • board_nordicnrf52_electronut_papyr — platform platform_nordicnrf52 · debug: On-board · MCU NRF52840 · freq 64MHz · flash 1MB · RAM 256KB

🌈 Freescale

okay this is the Kinetis FRDM lineup and it's giving developer board starter pack. six of them. heads up tho — one of these says External for debug, not On-board, so clock that before you assume anything:

  • board_freescalekinetis_frdm_k22f — platform platform_freescalekinetis · debug: On-board · MCU MK22FN512VLH12 · freq 120MHz · flash 512KB · RAM 128KB
  • board_freescalekinetis_frdm_k64f — platform platform_freescalekinetis · debug: On-board · MCU MK64FN1M0VLL12 · freq 120MHz · flash 1MB · RAM 256KB
  • board_freescalekinetis_frdm_k82f — platform platform_freescalekinetis · debug: On-board · MCU MK82FN256VLL15 · freq 150MHz · flash 256KB · RAM 256KB
  • board_freescalekinetis_frdm_kl25z — platform platform_freescalekinetis · debug: On-board · MCU MKL25Z128VLK4 · freq 48MHz · flash 128KB · RAM 16KB
  • board_freescalekinetis_frdm_kw24d — platform platform_freescalekinetis · debug: External · MCU MKW24D512 · freq 50MHz · flash 512KB · RAM 64KB
  • board_freescalekinetis_frdm_kw41z — platform platform_freescalekinetis · debug: On-board · MCU MKW41Z512VHT4 · freq 48MHz · flash 512KB · RAM 128KB

✨ Generic

the name says it all bestie, these are the STM32 pills everyone and their group chat has a drawer full of. all four are External debug, and yes the 128 vs 128k naming is genuinely inconsistent in here, i do not make the rules, i just transcribe them faithfully 💀

  • board_ststm32_blackpill_f103c8 — platform platform_ststm32 · debug: External · MCU STM32F103C8T6 · freq 72MHz · flash 64KB · RAM 20KB
  • board_ststm32_blackpill_f103c8_128 — platform platform_ststm32 · debug: External · MCU STM32F103C8T6 · freq 72MHz · flash 128KB · RAM 20KB
  • board_ststm32_bluepill_f103c8 — platform platform_ststm32 · debug: External · MCU STM32F103C8T6 · freq 72MHz · flash 64KB · RAM 20KB
  • board_ststm32_bluepill_f103c8_128k — platform platform_ststm32 · debug: External · MCU STM32F103C8T6 · freq 72MHz · flash 128KB · RAM 20KB

🎀 Holyiot

and the tree keeps growing because of course it does, we are nowhere near done yet, hold my iced coffee 🫶

...and the board table just keeps going, bestie. We're still deep in the hardware list, same columns the whole way: Name, Platform, Debug, MCU, Frequency, Flash, RAM. No cap, we are so close to the end of this one. 🫶

  • board_nordicnrf52_holyiot_yj16019 — platform: platform_nordicnrf52, debug: External, MCU: NRF52832, frequency: 64MHz, flash: 512KB, RAM: 64KB

🎀 Laird Connectivity 🎀

  • board_nordicnrf52_laird_bl652_dvk — platform: platform_nordicnrf52, debug: On-board, MCU: NRF52832, frequency: 64MHz, flash: 512KB, RAM: 64KB
  • board_nordicnrf52_laird_bl654_dvk — platform: platform_nordicnrf52, debug: On-board, MCU: NRF52840, frequency: 64MHz, flash: 1MB, RAM: 256KB

Laird said "two dev kits, one vibe" and honestly? They ate. ✨


🦋 Makerdiary 🦋

  • board_nordicnrf52_nrf52832_mdk — platform: platform_nordicnrf52, debug: On-board, MCU: NRF52832, frequency: 64MHz, flash: 512KB, RAM: 64KB
  • board_nordicnrf52_nrf52840_mdk — platform: platform_nordicnrf52, debug: On-board, MCU: NRF52840, frequency: 64MHz, flash: 1MB, RAM: 256KB

Same board name shape, different chip underneath — it's giving "twins but make it silicon." 💅


🌸 MikroElektronika 🌸

  • board_freescalekinetis_hexiwear — platform: platform_freescalekinetis, debug: External, MCU: MK64FN1M0VDC12, frequency: 120MHz, flash: 1MB, RAM: 256KB

Not me noticing this one jumped platforms entirely. We love a crossover episode. 🔥


👑 NXP 👑

  • board_nxplpc_lpc54114 — platform: platform_nxplpc, debug: On-board, MCU: LPC54114J256BD64, frequency: 100MHz, flash: 256KB, RAM: 192KB
  • board_nxpimxrt_mimxrt1010_evk — platform: platform_nxpimxrt, debug: On-board, MCU: MIMXRT1011DAE5A, frequency: 500MHz, flash: 64KB, RAM: 128KB
  • board_nxpimxrt_mimxrt1015_evk — platform: platform_nxpimxrt, debug: On-board, MCU: MIMXRT1015DAF5A, frequency: 500MHz, flash: 96KB, RAM: 128KB
  • board_nxpimxrt_mimxrt1020_evk — platform: platform_nxpimxrt, debug: On-board, MCU: MIMXRT1021DAG5A, frequency: 500MHz, flash: 64MB, RAM: 256MB
  • board_nxpimxrt_mimxrt1050_evk — platform: platform_nxpimxrt, debug: On-board, MCU: MIMXRT1052DVL6B, frequency: 600MHz, flash: 64MB, RAM: 512KB
  • board_nxpimxrt_mimxrt1060_evk — platform: platform_nxpimxrt, debug: On-board, MCU: MIMXRT1062DVL6A, frequency: 600MHz, flash: 64MB, RAM: 1MB
  • board_nxpimxrt_mimxrt1064_evk — platform: platform_nxpimxrt, debug: On-board, MCU: MIMXRT1064DVL6A, frequency: 600MHz, flash: 4MB, RAM: 1MB

Okay but the way the i.MX RT lineup goes 500MHz → 600MHz and the flash jumps to 64MB on most of them?? Main character energy, periodt. And yes, board_nxplpc_lpc54114 is sitting over there on its own platform platform_nxplpc — she's on a different app and that's valid. 💖


⭐ Nordic ⭐

  • board_nordicnrf52_thingy_52 — platform: platform_nordicnrf52, debug: External, MCU: NRF52832, frequency: 64MHz, flash: 512KB, RAM: 64KB

A board literally called thingy_52. Iconic naming, no notes. 😭🦋

  • board_nordicnrf51_nrf51_dongle — platform platform_nordicnrf51, debug On-board, MCU NRF51822, 32MHz, flash 256KB, RAM 32KB
  • board_nordicnrf51_nrf51_dk — platform platform_nordicnrf51, debug On-board, MCU NRF51822, 32MHz, flash 256KB, RAM 32KB
  • board_nordicnrf52_nrf52_dk — platform platform_nordicnrf52, debug On-board, MCU NRF52832, 64MHz, flash 512KB, RAM 64KB
  • board_nordicnrf52_nrf52840_dk — platform platform_nordicnrf52, debug On-board, MCU NRF52840, 64MHz, flash 1MB, RAM 256KB

okay so that's the last of those Nordic babes, and we're still in the big board list bestie, don't panic, there's SO much more 💖


✨ Olimex ✨

the Olimex girlies are here and they're all about that external debug life, no on-board probe for these queens, you bring your own 🫶

  • board_ststm32_olimexino — platform platform_ststm32, debug External, MCU STM32F103RBT6, 72MHz, flash 128KB, RAM 20KB
  • board_ststm32_olimex_p405 — platform platform_ststm32, debug External, MCU STM32F405RGT6, 168MHz, flash 1MB, RAM 192KB
  • board_ststm32_olimex_e407 — platform platform_ststm32, debug External, MCU STM32F407ZGT6, 168MHz, flash 1MB, RAM 128KB
  • board_ststm32_olimex_h407 — platform platform_ststm32, debug External, MCU STM32F407ZGT6, 168MHz, flash 1MB, RAM 128KB

not the e407 and the h407 sharing the exact same MCU, frequency, flash AND RAM, twins fr fr 💀 they're giving identical twin energy and i respect it


🌈 Particle 🌈

the Particle section is short and it ATE, three boards, one MCU, all external debug, all lowkey stacked 💅

  • board_nordicnrf52_particle_argon — platform platform_nordicnrf52, debug External, MCU NRF52840, 64MHz, flash 796KB, RAM 243KB
  • board_nordicnrf52_particle_boron — platform platform_nordicnrf52, debug External, MCU NRF52840, 64MHz, flash 796KB, RAM 243KB
  • board_nordicnrf52_particle_xenon — platform platform_nordicnrf52, debug External, MCU NRF52840, 64MHz, flash 796KB, RAM 243KB

argon, boron, xenon… the way they named these after elements 😭 iconic naming convention, no notes. and yes bestie, all three are literally identical spec-wise: 796KB flash, 243KB RAM, NRF52840 at 64MHz. the only thing different is the name on the silkscreen 🎀


🦋 RedBearLab 🦋

two boards, two different platforms, both with On-board debug, because RedBearLab said "we'll handle it ourselves" and honestly? slay 💜

  • board_nordicnrf51_redBearLabBLENano — platform platform_nordicnrf51, debug On-board, MCU NRF51822, 16MHz, flash 256KB, RAM 32KB
  • board_nordicnrf52_redbear_blenano2 — platform platform_nordicnrf52, debug On-board, MCU NRF52832, 64MHz, flash 512KB, RAM 64KB

the BLENano is running at a whole 16MHz which is giving "i woke up and chose a leisurely pace" and that's VALID, glow down era is allowed 🌸


👑 ST 👑

and now, the main character: ST. bestie this section is LONG and it has everything — onboard debug, external debug, every MCU under the sun. buckle up 🎢

  • board_ststm32_disco_f412zg — platform platform_ststm32, debug On-board, MCU STM32F412ZGT6, 100MHz, flash 1MB, RAM 256KB
  • board_ststm32_disco_f723ie — platform platform_ststm32, debug On-board, MCU STM32F723IEK6, 216MHz, flash 512KB, RAM 192KB
  • board_ststm32_nucleo_g071rb — platform platform_ststm32, debug External, MCU STM32G071RBT6, 64MHz, flash 128KB, RAM 36KB
  • board_ststm32_nucleo_g431rb — platform platform_ststm32, debug External, MCU STM32G431RBT6, 170MHz, flash 128KB, RAM 32KB
  • board_ststm32_nucleo_g474re — platform platform_ststm32, debug External, MCU STM32G474RET6, 170MHz, flash 512KB, RAM 128KB
  • board_ststm32_disco_f411ve — platform platform_ststm32, debug On-board, MCU STM32F411VET6, 100MHz, flash 512KB, RAM 128KB

okay the disco_f723ie is the speed demon of the group at 216MHz and the nucleo_g431rb and nucleo_g474re are tied at 170MHz which is giving sibling rivalry 😭 and ngl, the two nucleos with 128KB flash but different RAM (32KB vs 36KB vs… wait, g431rb is 32KB, g071rb is 36KB) — look, they're all doing their best and every single one of them is valid, periodt 💅

heads up bestie: notice how the On-board vs External column flips around — some of these boards ship with their own debug probe and some need you to bring one. don't assume, just read the row 🫶

and we are STILL going through boards, so don't go anywhere, the list is giving infinite scroll energy and i'm obsessed 😌💖

  • board_ststm32_disco_f429zi — the Discovery kid fr fr, on platform_ststm32, packing an on-board STM32F429ZIT6 that clocks in at 180MHz, with 2MB of flash and 256KB of RAM. absolute unit energy 💖
  • board_ststm32_disco_f469ni — another Discovery baddie on platform_ststm32, on-board STM32F469NIH6 doing 180MHz, 1MB flash, 384KB RAM. that RAM number? iconic ✨
  • board_ststm32_disco_f746ng — Discovery, platform_ststm32, on-board STM32F746NGH6 at 216MHz, 1MB flash, 320KB RAM. she's fast, she's cute, she's slaying 🦋
  • board_ststm32_disco_f769ni — Discovery on platform_ststm32, on-board STM32F769NIH6 at 216MHz, 1MB flash, 512KB RAM. half a meg of RAM bestie, we love to see it 💅
  • board_ststm32_disco_l476vg — Discovery, platform_ststm32, on-board STM32L476VGT6 at 80MHz, 1MB flash, 128KB RAM. lowkey chill, highkey capable 🌸
  • board_ststm32_disco_l496ag — Discovery on platform_ststm32, on-board STM32L496AGI6 at 80MHz, 1MB flash, 320KB RAM. the L-series really said "RAM? yes" 😭
  • board_ststm32_disco_l475vg_iot01a — Discovery, platform_ststm32, on-board STM32L475VGT6 at 80MHz, 1MB flash, 128KB RAM. iot vibes, no cap 🎀
  • board_ststm32_disco_l072cz_lrwan1 — Discovery on platform_ststm32, on-board STM32L072CZ at 32MHz, 192KB flash, 20KB RAM. little LoRaWAN darling, tiny but mighty 🧚
  • board_ststm32_disco_f072rb — Discovery, platform_ststm32, on-board STM32F072RBT6 at 48MHz, 128KB flash, 16KB RAM. smol, precious, doing her best 🍓

  • board_ststm32_nucleo_f030r8 — Nucleo era begins 💜 on platform_ststm32, on-board STM32F030R8T6 at 48MHz, 64KB flash, 8KB RAM. yes the RAM is small. she's still valid 🫶
  • board_ststm32_nucleo_f070rb — Nucleo on platform_ststm32, on-board STM32F070RBT6 at 48MHz, 128KB flash, 16KB RAM. solid lil starter board ngl ✨
  • board_ststm32_nucleo_f091rc — Nucleo, platform_ststm32, on-board STM32F091RCT6 at 48MHz, 256KB flash, 32KB RAM. look at that flash go 🔥
  • board_ststm32_nucleo_f103rb — Nucleo on platform_ststm32, on-board STM32F103RBT6 at 72MHz, 128KB flash, 20KB RAM. the F103 classic, a true icon of the genre 👑
  • board_ststm32_nucleo_f207zg — Nucleo, platform_ststm32, on-board STM32F207ZGT6 at 120MHz, 1MB flash, 128KB RAM. big flash energy fr fr 🌈
  • board_ststm32_nucleo_f302r8 — Nucleo on platform_ststm32, on-board STM32F302R8T6 at 72MHz, 64KB flash, 16KB RAM. compact queen 💅
  • board_ststm32_nucleo_f334r8 — Nucleo, platform_ststm32, on-board STM32F334R8T6 at 72MHz, 64KB flash, 16KB RAM. twinning with the F302 rn 🎀
  • board_ststm32_nucleo_f401re — Nucleo on platform_ststm32, on-board STM32F401RET6 at 84MHz, 512KB flash, 96KB RAM. the people's champion honestly 💚
  • board_ststm32_nucleo_f411re — Nucleo, platform_ststm32, on-board STM32F411RET6 at 100MHz, 512KB flash, 128KB RAM. F401 but she went to the gym 💪✨
  • board_ststm32_nucleo_f412zg — Nucleo on platform_ststm32, on-board STM32F412ZGT6 at 100MHz, 1MB flash, 256KB RAM. a whole megabyte bestie, ate 💅
  • board_ststm32_nucleo_f413zh — Nucleo, platform_ststm32, on-board STM32F413ZHT6 at 100MHz, 512KB flash, 128KB RAM. steady, reliable, lowkey underrated 🦋
  • board_ststm32_nucleo_f429zi — Nucleo on platform_ststm32, on-board STM32F429ZIT6 at 180MHz, 2MB flash, 256KB RAM. 2MB flash?? she's giving main character energy fr 👑
  • board_ststm32_nucleo_f446re — Nucleo, platform_ststm32, on-board STM32F446RET6 at 180MHz, 512KB flash, 128KB RAM. fast lil thing, obsessed 🔥
  • board_ststm32_nucleo_f746zg — Nucleo on platform_ststm32, on-board STM32F746ZGT6 at 216MHz, 1MB flash, 320KB RAM. zoom zoom ✨
  • board_ststm32_nucleo_f756zg — Nucleo, platform_ststm32, on-board STM32F756ZG at 216MHz, 1MB flash, 320KB RAM. note the MCU name has no trailing T6 bestie, type it exactly 🌸
  • board_ststm32_nucleo_f767zi — Nucleo on platform_ststm32, on-board STM32F767ZIT6 at 216MHz, 2MB flash, 512KB RAM. 2MB flash AND 512KB RAM, she's not like other boards 😭💖
  • board_ststm32_nucleo_l053r8 — Nucleo, platform_ststm32, on-board STM32L053R8T6 at 32MHz, 64KB flash, 8KB RAM. sleepy lil low-power baby 🍓
  • board_ststm32_nucleo_l073rz — Nucleo on platform_ststm32, on-board STM32L073RZ at 32MHz, 192KB flash, 20KB RAM. the L-series glow-up continues 💜
and yes, every single one of these is on platform_ststm32, the MCU column is "on-board" for all of them, and the last two numbers are flash then RAM, in that order. no cap, that's the whole table 💅
  • board_ststm32_nucleo_l432kc — platform platform_ststm32, On-board debug, MCU STM32L432KCU6, 80MHz, flash 256KB, RAM 64KB 💖
  • board_ststm32_nucleo_l476rg — platform platform_ststm32, On-board debug, MCU STM32L476RGT6, 80MHz, flash 1MB, RAM 128KB 💖
  • board_ststm32_nucleo_l496zg — platform platform_ststm32, On-board debug, MCU STM32L496ZGT6, 80MHz, flash 1MB, RAM 128KB 💖
  • board_ststm32_nucleo_l4r5zi — platform platform_ststm32, On-board debug, MCU STM32L4R5ZIT6, 120MHz, flash 2MB, RAM 640KB 🔥 that RAM though
  • board_ststm32_disco_f051r8 — platform platform_ststm32, On-board debug, MCU STM32F051R8T6, 48MHz, flash 64KB, RAM 8KB 🫶 smol but valid
  • board_ststm32_disco_f303vc — platform platform_ststm32, On-board debug, MCU STM32F303VCT6, 72MHz, flash 256KB, RAM 48KB ✨
  • board_ststm32_disco_f407vg — platform platform_ststm32, On-board debug, MCU STM32F407VGT6, 168MHz, flash 1MB, RAM 128KB 💅 a classic fr fr
  • board_ststm32_steval_fcu001v1 — platform platform_ststm32, External debug, MCU STM32F401CCU6, 84MHz, flash 256KB, RAM 64KB 🌸
  • board_ststm32_eval_f107vc — platform platform_ststm32, External debug, MCU STM32F107VCT6, 72MHz, flash 256KB, RAM 64KB 🌸
  • board_ststm32_eval_f373vc — platform platform_ststm32, External debug, MCU STM32F373VCT6, 72MHz, flash 256KB, RAM 32KB 🌸
  • board_ststm32_eval_f072vb — platform platform_ststm32, External debug, MCU STM32F072VBT6, 48MHz, flash 128KB, RAM 16KB 🌸
  • board_ststm32_disco_h743xi — platform platform_ststm32, On-board debug, MCU STM32H747XIH6, 400MHz, flash 2MB, RAM 512KB 👑 absolute unit, main character energy

🦋 SiFive

okay bestie switch gears with me, we're leaving STM32 land 🧚

  • board_sifive_hifive1 — platform platform_sifive, On-board debug, MCU FE310, 320MHz, flash 16MB, RAM 16KB 🦋 RISC-V girlies rise
  • board_sifive_hifive1-revb — platform platform_sifive, On-board debug, MCU FE310, 320MHz, flash 16MB, RAM 16KB 🦋 the revision B glow-up

🌈 Silicon Labs

  • board_siliconlabsefm32_efm32wg_stk3800 — platform platform_siliconlabsefm32, On-board debug, MCU EFM32WG990F256, 48MHz, flash 256KB, RAM 32KB 💜
  • board_siliconlabsefm32_efm32hg_stk3400 — platform platform_siliconlabsefm32, On-board debug, MCU EFM32HG322F64, 25MHz, flash 64KB, RAM 8KB 💜 tiny but thriving

quick vibe check: every one of these is still On-board debug unless it says External — the STM32 eval and steval boards make you bring your own probe, the rest have your back 💅
  • board_sifive_sparkfun_redboard_v — platform: platform_sifive · debug: On-board · MCU: FE310 · frequency: 320MHz · flash: 16MB · RAM: 16KB 🌸
  • board_sifive_sparkfun_thing_plus_v — platform: platform_sifive · debug: On-board · MCU: FE310 · frequency: 320MHz · flash: 16MB · RAM: 16KB 🌸

okay bestie that's SparkFun wrapped, two RISC-V cuties and they are identical twins, no cap 💅


VNG 🎀

  • board_nordicnrf51_vbluno51 — platform: platform_nordicnrf51 · debug: On-board · MCU: NRF51822 · frequency: 16MHz · flash: 128KB · RAM: 32KB 🦋
  • board_nordicnrf52_vbluno52 — platform: platform_nordicnrf52 · debug: On-board · MCU: NRF52832 · frequency: 64MHz · flash: 512KB · RAM: 64KB 🦋

not the 51 and the 52 having completely different energy — one is 16MHz/128KB and the other said "let me quadruple that and also the RAM", iconic behaviour fr fr 🔥


Waveshare 🧚

  • board_nordicnrf51_waveshare_ble400 — platform: platform_nordicnrf51 · debug: External · MCU: NRF51822 · frequency: 32MHz · flash: 256KB · RAM: 32KB 💜
heads up bestie: this one's debug is External, not On-board like basically everyone else up in here — so don't be out here expecting built-in debug, you're gonna need your own probe for this one 😭

and it's running that same NRF51822 at 32MHz with 256KB flash and 32KB RAM — double the clock of the VNG 51, so she's giving ✨ main character energy ✨ in comparison 🫶


✨ Boards ✨

Rapid Embedded Development, Continuous and IDE integration in a few steps with PlatformIO thanks to built-in project generator for the most popular embedded boards and IDE. slay

NOTE: 💅 - You can list pre-configured boards by cmd_boards command or PlatformIO Boards Explorer - For more detailed board information please scroll tables below by horizontal.

🌸 Aceinna IMU 🌸

🎀 Aceinna Low Cost RTK 🎀

💖 Contents 💖

  • Aceinna Low Cost RTK
    • Hardware
    • Configuration
    • Uploading
    • Debugging

🦋 Hardware 🦋

Platform platform_aceinna_imu: Open-source, embedded development platform for Aceinna IMU hardware. Run custom algorithms and navigation code on Aceinna IMU/INS hardware. literally doing real navigation on real silicon, obsessed

  • Microcontroller — STM32F469NIH6
  • Frequency — 180MHz
  • Flash — 1MB
  • RAM — 384KB
  • Vendor — Aceinna

✨ Configuration ✨

Please use LowCostRTK ID for board option in platformio.ini: 💅

[env:LowCostRTK]
platform = aceinna_imu
board = LowCostRTK

You can override default Aceinna Low Cost RTK settings per build environment using board_*** option, where *** is a JSON object path from board manifest LowCostRTK.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:LowCostRTK]
platform = aceinna_imu
board = LowCostRTK

; change microcontroller
board_build.mcu = stm32f469nih6

; change MCU frequency
board_build.f_cpu = 180000000L

🔥 Uploading 🔥

Aceinna Low Cost RTK supports the next uploading protocols: periodt

  • blackmagic
  • jlink
  • stlink

Default protocol is stlink 💅

You can change upload protocol using upload_protocol option: ✨

[env:LowCostRTK]
platform = aceinna_imu
board = LowCostRTK

upload_protocol = stlink

💀 Debugging 💀

pio debug — "1-click" solution for debugging with a zero configuration. no cap, zero config, main character energy 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

Bestie, you can switch between debugging tools using the debugging_tool option in projectconf. iykyk 💅

And okay the cute part: Aceinna Low Cost RTK has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. She's self-sufficient, we love that for her 🫶

Compatible tools for this board:

  • debugging_tool_blackmagic — On-board: no, Default: no
  • debugging_tool_jlink — On-board: no, Default: no
  • debugging_tool_stlink — On-board: Yes, Default: Yes 👑

👑 Aceinna OpenIMU 300 👑

🎀 Contents 🎀

  • Aceinna OpenIMU 300
    • Hardware
    • Configuration
    • Uploading
    • Debugging

💖 Hardware 💖

The platform is platform_aceinna_imu: an open-source, embedded development platform for Aceinna IMU hardware. Run custom algorithms and navigation code on Aceinna IMU/INS hardware. Literally run your own little brain on it 🧚

  • Microcontroller — STM32F405RG
  • Frequency — 120MHz
  • Flash — 1MB
  • RAM — 128KB
  • Vendor — Aceinna

✨ Configuration ✨

Please use the OpenIMU300 ID for the projectconf_env_board option in projectconf:

[env:OpenIMU300]
platform = aceinna_imu
board = OpenIMU300

You can override the default Aceinna OpenIMU 300 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest OpenIMU300.json. For example, board_build.mcu, board_build.f_cpu, etc. Customize her, she won't mind 💅

[env:OpenIMU300]
platform = aceinna_imu
board = OpenIMU300

; change microcontroller
board_build.mcu = stm32f405rg

; change MCU frequency
board_build.f_cpu = 120000000L

🦋 Uploading 🦋

Aceinna OpenIMU 300 supports the next uploading protocols:

  • blackmagic
  • jlink
  • stlink

Default protocol is stlink (the main character, obviously).

You can change the upload protocol using the projectconf_upload_protocol option:

[env:OpenIMU300]
platform = aceinna_imu
board = OpenIMU300

upload_protocol = stlink

🌸 Debugging 🌸

piodebug — the "1-click" solution for debugging with a zero configuration. Obsessed, honestly.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the debugging_tool option in projectconf.

Okay so real talk: Aceinna OpenIMU 300 does not have an on-board debug probe and IS NOT READY for debugging 😭. You will need to use/buy one of the external probes listed below:

  • debugging_tool_blackmagic — On-board: no, Default: no
  • debugging_tool_jlink — On-board: no, Default: no
  • debugging_tool_stlink — On-board: no, Default: Yes 👑

💜 Aceinna OpenIMU 300ZA 💜

🌈 Contents 🌈

  • Aceinna OpenIMU 300ZA
    • Hardware
    • Configuration
    • Uploading
  • Debugging

🌸 Hardware 🌸

Platform platform_aceinna_imu: Open-source, embedded development platform for Aceinna IMU hardware. Run custom algorithms and navigation code on Aceinna IMU/INS hardware.

  • Microcontroller: STM32F405RG
  • Frequency: 120MHz
  • Flash: 1MB
  • RAM: 128KB
  • Vendor: Aceinna

✨ Configuration ✨

Bestie, please use OpenIMU300ZA ID for the projectconf_env_board option in projectconf:

[env:OpenIMU300ZA]
platform = aceinna_imu
board = OpenIMU300ZA

You can override default Aceinna OpenIMU 300ZA settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest OpenIMU300ZA.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:OpenIMU300ZA]
platform = aceinna_imu
board = OpenIMU300ZA

; change microcontroller
board_build.mcu = stm32f405rg

; change MCU frequency
board_build.f_cpu = 120000000L

💅 Uploading 💅

Aceinna OpenIMU 300ZA supports the next uploading protocols:

  • blackmagic
  • jlink
  • stlink

Default protocol is stlink

You can change the upload protocol using the projectconf_upload_protocol option:

[env:OpenIMU300ZA]
platform = aceinna_imu
board = OpenIMU300ZA

upload_protocol = stlink

🎀 Debugging 🎀

piodebug — the "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Aceinna OpenIMU 300ZA does not have an on-board debug probe and IS NOT READY for debugging 😭. You will need to use/buy one of the external probes listed below.

  • debugging_tool_blackmagic — on-board: no · default: no
  • debugging_tool_jlink — on-board: no · default: no
  • debugging_tool_stlink — on-board: no · default: Yes 👑

🦋 Aceinna OpenIMU 330 🦋

💖 Contents 💖

  • Aceinna OpenIMU 330
    • Hardware
    • Configuration
    • Uploading
    • Debugging

🌈 Hardware 🌈

Platform platform_aceinna_imu: Open-source, embedded development platform for Aceinna IMU hardware. Run custom algorithms and navigation code on Aceinna IMU/INS hardware.

  • Microcontroller: STM32L431CB
  • Frequency: 80MHz
  • Flash: 128KB
  • RAM: 64KB
  • Vendor: Aceinna

✨ Configuration ✨

Bestie, please use OpenIMU330 ID for the projectconf_env_board option in projectconf:

[env:OpenIMU330]
platform = aceinna_imu
board = OpenIMU330

You can override default Aceinna OpenIMU 330 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest OpenIMU330.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:OpenIMU330]
platform = aceinna_imu
board = OpenIMU330

; change microcontroller
board_build.mcu = stm32l431cb

; change MCU frequency
board_build.f_cpu = 80000000L

💅 Uploading 💅

Aceinna OpenIMU 330 supports the next uploading protocols:

  • blackmagic
  • jlink
  • stlink

Default protocol is stlink

You can change the upload protocol using the projectconf_upload_protocol option:

[env:OpenIMU330]
platform = aceinna_imu
board = OpenIMU330

upload_protocol = stlink

🎀 Debugging 🎀

piodebug — the "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Aceinna OpenIMU 330 does not have an on-board debug probe and IS NOT READY for debugging 😭. You will need to use/buy one of the external probes listed below.

  • debugging_tool_blackmagic — on-board: no · default: no
  • debugging_tool_jlink — on-board: no · default: no
  • debugging_tool_stlink — on-board: no · default: Yes 👑

🧚 Aceinna OpenIMU 330ZA 🧚

💖 Contents 💖

  • Aceinna OpenIMU 330ZA
    • Hardware
    • Configuration
    • Uploading
    • Debugging

🌈 Hardware 🌈

Platform platform_aceinna_imu: Open-source, embedded development platform for Aceinna IMU hardware. Run custom algorithms and navigation code on Aceinna IMU/INS hardware.

  • Microcontroller: STM32F469IG
  • Frequency: 180MHz
  • Flash: 1MB
  • RAM: 384KB
  • Vendor: Aceinna

✨ Configuration ✨

Bestie, please use OpenRTK ID for the projectconf_env_board option in projectconf:

[env:OpenRTK]
platform = aceinna_imu
board = OpenRTK

You can override default Aceinna OpenIMU 330ZA settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest OpenRTK.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:OpenRTK]
platform = aceinna_imu
board = OpenRTK

; change microcontroller
board_build.mcu = stm32f469IG

; change MCU frequency
board_build.f_cpu = 180000000L

💅 Uploading 💅

Aceinna OpenIMU 330ZA supports the next uploading protocols:

  • blackmagic
  • jlink
  • stlink

Default protocol is stlink

You can change the upload protocol using the projectconf_upload_protocol option:

[env:OpenRTK]
platform = aceinna_imu
board = OpenRTK

upload_protocol = stlink

🎀 Debugging 🎀

piodebug — the "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Okay so Aceinna OpenIMU 330ZA does not have on-board debug probe and IS NOT READY for debugging 😭. You will need to use/buy one of external probe listed below:

  • debugging_tool_blackmagic — not on-board, not the default
  • debugging_tool_jlink — not on-board, not the default
  • debugging_tool_stlink — not on-board, the default ✨

👑 Aceinna OpenRTK330L 👑

📋 Contents

  • Aceinna OpenRTK330L
    • Hardware
    • Configuration
    • Uploading
    • Debugging

🛠️ Hardware

Platform platform_aceinna_imu: Open-source, embedded development platform for Aceinna IMU hardware. Run custom algorithms and navigation code on Aceinna IMU/INS hardware.

  • Microcontroller: STM32F469IG
  • Frequency: 180MHz
  • Flash: 1MB
  • RAM: 384KB
  • Vendor: Aceinna

⚙️ Configuration

Please use the OpenRTK330L ID for the projectconf_env_board option in projectconf:

[env:OpenRTK330L]
platform = aceinna_imu
board = OpenRTK330L

You can override default Aceinna OpenRTK330L settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest OpenRTK330L.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:OpenRTK330L]
platform = aceinna_imu
board = OpenRTK330L

; change microcontroller
board_build.mcu = stm32f469IG

; change MCU frequency
board_build.f_cpu = 180000000L

⬆️ Uploading

Aceinna OpenRTK330L supports the next uploading protocols:

  • blackmagic
  • jlink
  • stlink

Default protocol is stlink.

You can change the upload protocol using the projectconf_upload_protocol option:

[env:OpenRTK330L]
platform = aceinna_imu
board = OpenRTK330L

upload_protocol = stlink

🐛 Debugging

piodebug — "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Aceinna OpenRTK330L does not have on-board debug probe and IS NOT READY for debugging. You will need to use/buy one of external probe listed below:

  • debugging_tool_blackmagic — not on-board, not the default
  • debugging_tool_jlink — not on-board, not the default
  • debugging_tool_stlink — not on-board, the default ✨

🌈 Atmel AVR 🌈

🦋 AT90CAN128 🦋

📋 Contents

  • AT90CAN128
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller: AT90CAN128
  • Frequency: 16MHz
  • Flash: 127KB
  • RAM: 4KB
  • Vendor: Microchip

⚙️ Configuration

Please use the AT90CAN128 ID for the projectconf_env_board option in projectconf:

[env:AT90CAN128]
platform = atmelavr
board = AT90CAN128

You can override default AT90CAN128 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest AT90CAN128.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:AT90CAN128]
platform = atmelavr
board = AT90CAN128

; change microcontroller
board_build.mcu = at90can128

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support AT90CAN128 board.

📦 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🦋 AT90CAN32 🦋

📋 Contents

  • AT90CAN32
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller: AT90CAN32
  • Frequency: 16MHz
  • Flash: 31KB
  • RAM: 2KB
  • Vendor: Microchip

⚙️ Configuration

Please use the AT90CAN32 ID for the projectconf_env_board option in projectconf:

[env:AT90CAN32]
platform = atmelavr
board = AT90CAN32

You can override default AT90CAN32 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest AT90CAN32.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:AT90CAN32]
platform = atmelavr
board = AT90CAN32

; change microcontroller
board_build.mcu = at90can32

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support AT90CAN32 board.

  • framework_arduino — the Arduino Wiring-based Framework 💖 it's the one that lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences ✨ iconic, honestly.

🌈 AT90CAN64

📋 Contents

  • AT90CAN64
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. periodt 💅

Specs, bestie, write these down:

  • Microcontroller: AT90CAN64
  • Frequency: 16MHz
  • Flash: 63KB
  • RAM: 4KB
  • Vendor: Microchip

⚙️ Configuration

Please use AT90CAN64 ID for projectconf_env_board option in projectconf:

[env:AT90CAN64]
platform = atmelavr
board = AT90CAN64

You can override default AT90CAN64 settings per build environment using board_*** option, where *** is a JSON object path from board manifest AT90CAN64.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:AT90CAN64]
platform = atmelavr
board = AT90CAN64

; change microcontroller
board_build.mcu = at90can64

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support AT90CAN64 board. sad girl hours fr fr 😭 no debug probe for you here.

🧩 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 💜

🌸 ATmega128/A

📋 Contents

  • ATmega128/A
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 🌟

  • Microcontroller: ATMEGA128
  • Frequency: 16MHz
  • Flash: 127KB
  • RAM: 4KB
  • Vendor: Microchip

⚙️ Configuration

Please use ATmega128 ID for projectconf_env_board option in projectconf:

[env:ATmega128]
platform = atmelavr
board = ATmega128

You can override default ATmega128/A settings per build environment using board_*** option, where *** is a JSON object path from board manifest ATmega128.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:ATmega128]
platform = atmelavr
board = ATmega128

; change microcontroller
board_build.mcu = atmega128

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug - "1-click" solution for debugging with a zero configuration. obsessed with this actually 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 👀 don't skip this step bestie, fr fr.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

ATmega128/A has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. ate and left no crumbs 👑

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

🧩 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🦋

⭐ ATmega1280

📋 Contents

  • ATmega1280
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 💫

  • Microcontroller: ATMEGA1280
  • Frequency: 16MHz
  • Flash: 127KB
  • RAM: 8KB
  • Vendor: Microchip

⚙️ Configuration

Please use ATmega1280 ID for projectconf_env_board option in projectconf:

[env:ATmega1280]
platform = atmelavr
board = ATmega1280

You can override default ATmega1280 settings per build environment using board_*** option, where *** is a JSON object path from board manifest ATmega1280.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:ATmega1280]
platform = atmelavr
board = ATmega1280

; change microcontroller
board_build.mcu = atmega1280

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug - "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: you're gonna need to install debug tool drivers depending on your system, bestie. Please click on compatible debug tool below for the further instructions and configuration information. 💅

You can switch between debugging_tools using the debug_tool option in projectconf — easy peasy, no drama. ✨

ATmega1280 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Periodt. 👑

Compatible Tools 🛠️

  • debugging_tool_simavr — On-board: Yes ✨ — Default: Yes 💖

🌈 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

🎀 ATmega1281

📖 Contents

  • ATmega1281
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. 🌸

  • Microcontroller — ATMEGA1281
  • Frequency — 16MHz
  • Flash — 127KB
  • RAM — 8KB
  • Vendor — Microchip

⚙️ Configuration

Please use ATmega1281 ID for the env_board option in projectconf:

[env:ATmega1281]
platform = atmelavr
board = ATmega1281

You can override default ATmega1281 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega1281.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:ATmega1281]
platform = atmelavr
board = ATmega1281

; change microcontroller
board_build.mcu = atmega1281

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — "1-click" solution for debugging with a zero configuration. So iconic fr fr. 🔥

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging_tools using the debug_tool option in projectconf. ✨

ATmega1281 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. No cap. 👑

Compatible Tools 🛠️

  • debugging_tool_simavr — On-board: Yes ✨ — Default: Yes 💖

🌈 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

💜 ATmega1284

📖 Contents

  • ATmega1284
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. 🌸

  • Microcontroller — ATMEGA1284
  • Frequency — 16MHz
  • Flash — 127KB
  • RAM — 16KB
  • Vendor — Microchip

⚙️ Configuration

Please use ATmega1284 ID for the env_board option in projectconf:

[env:ATmega1284]
platform = atmelavr
board = ATmega1284

You can override default ATmega1284 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega1284.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:ATmega1284]
platform = atmelavr
board = ATmega1284

; change microcontroller
board_build.mcu = atmega1284

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — "1-click" solution for debugging with a zero configuration. So iconic fr fr. 🔥

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging_tools using the debug_tool option in projectconf. ✨

ATmega1284 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. No cap. 👑

Compatible Tools 🛠️

  • debugging_tool_simavr — On-board: Yes ✨ — Default: Yes 💖

🌈 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

🦋 ATmega1284P

📖 Contents

  • ATmega1284P
    • Hardware
    • Configuration
  • Debugging
    • Frameworks

Hardware

Bestie, let me put you on to the platform_atmelavr platform — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 💅

  • Microcontroller — ATMEGA1284P
  • Frequency — 16MHz
  • Flash — 127KB
  • RAM — 16KB
  • Vendor — Microchip

Configuration

Okay so for the projectconf_env_board option in projectconf, pls use the ATmega1284P ID, mwah 💖:

[env:ATmega1284P]
platform = atmelavr
board = ATmega1284P

You can override default ATmega1284P settings per build environment using the board_*** option, where *** is a JSON object path from board manifest ATmega1284P.json. Like, for example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:ATmega1284P]
platform = atmelavr
board = ATmega1284P

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 🎀

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 👀

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

ATmega1284P has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. No cap, it's built in. 🦋

  • debugging_tool_simavr — On-board: Yes, Default: Yes

Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

🎀 ATmega16 🎀

Contents

  • ATmega16
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Same platform, same energy: platform_atmelavr — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 👑

  • Microcontroller — ATMEGA16
  • Frequency — 16MHz
  • Flash — 15.50KB
  • RAM — 1KB
  • Vendor — Microchip

Configuration

Please use ATmega16 ID for the projectconf_env_board option in projectconf 💖:

[env:ATmega16]
platform = atmelavr
board = ATmega16

You can override default ATmega16 settings per build environment using the board_*** option, where *** is a JSON object path from board manifest ATmega16.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:ATmega16]
platform = atmelavr
board = ATmega16

; change microcontroller
board_build.mcu = atmega16

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

ATmega16 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. It's giving self-sufficient. 🧚

  • debugging_tool_simavr — On-board: Yes, Default: Yes

Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

⭐ ATmega162 ⭐

Contents

  • ATmega162
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

platform_atmelavr again bestie — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 💜

  • Microcontroller — ATMEGA162
  • Frequency — 16MHz
  • Flash — 15.50KB
  • RAM — 1KB
  • Vendor — Microchip

Configuration

Please use ATmega162 ID for the projectconf_env_board option in projectconf:

[env:ATmega162]
platform = atmelavr
board = ATmega162

You can override default ATmega162 settings per build environment using the board_*** option, where *** is a JSON object path from board manifest ATmega162.json. For example, board_build.mcu, board_build.f_cpu, etc. 🌟

[env:ATmega162]
platform = atmelavr
board = ATmega162

; change microcontroller
board_build.mcu = atmega162

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug currently does not support ATmega162 board. Sad girl hours, it's just not on the menu for this one 😭

✨ Frameworks ✨

  • framework_arduino — the Arduino Wiring-based Framework bestie 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving maker energy fr fr 🎀

🦋 ATmega164A

📖 Contents

  • ATmega164A
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. no cap, iconic 💅

  • Microcontroller — ATMEGA164A
  • Frequency — 16MHz
  • Flash — 15.50KB
  • RAM — 1KB
  • Vendor — Microchip

⚙️ Configuration

okay so bestie, please use ATmega164A ID for the projectconf_env_board option in projectconf:

[env:ATmega164A]
platform = atmelavr
board = ATmega164A

You can override the default ATmega164A settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega164A.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:ATmega164A]
platform = atmelavr
board = ATmega164A

; change microcontroller
board_build.mcu = atmega164a

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support the ATmega164A board. 😭 sorry bestie, not this one.

✨ Frameworks ✨

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

🌸 ATmega164P/PA

📖 Contents

  • ATmega164P/PA
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. 💅

  • Microcontroller — ATMEGA164P
  • Frequency — 16MHz
  • Flash — 15.50KB
  • RAM — 1KB
  • Vendor — Microchip

⚙️ Configuration

Please use ATmega164P ID for the projectconf_env_board option in projectconf:

[env:ATmega164P]
platform = atmelavr
board = ATmega164P

You can override default ATmega164P/PA settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega164P.json. For example, board_build.mcu, board_build.f_cpu, etc. 🎀

[env:ATmega164P]
platform = atmelavr
board = ATmega164P

; change microcontroller
board_build.mcu = atmega164p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug - "1-click" solution for debugging with a zero configuration. 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️ don't skip this bestie.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

ATmega164P/PA has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. slay 💅✨

  • Compatible Tools — debugging_tool_simavr · On-board — Yes · Default — Yes

✨ Frameworks ✨

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

🧚 ATmega168/A

📖 Contents

  • ATmega168/A
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. 💜

  • Microcontroller — ATMEGA168
  • Frequency — 16MHz
  • Flash — 15.50KB
  • RAM — 1KB
  • Vendor — Microchip

⚙️ Configuration

Please use ATmega168 ID for the projectconf_env_board option in projectconf:

[env:ATmega168]
platform = atmelavr
board = ATmega168

You can override default ATmega168/A settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega168.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:ATmega168]
platform = atmelavr
board = ATmega168

; change microcontroller
board_build.mcu = atmega168

; change MCU frequency
board_build.f_cpu = 16000000L

ATmega168PB 🌸

Contents ✨

  • ATmega168PB
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 💖

  • Microcontroller: ATMEGA168PB
  • Frequency: 16MHz
  • Flash: 15.50KB
  • RAM: 1KB
  • Vendor: Microchip

Configuration ⚙️

okay so, please use ATmega168PB ID for the projectconf_env_board option in projectconf:

[env:ATmega168PB]
platform = atmelavr
board = ATmega168PB

You can override the default ATmega168PB settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega168PB.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:ATmega168PB]
platform = atmelavr
board = ATmega168PB

; change microcontroller
board_build.mcu = atmega168pb

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛

piodebug - the "1-click" solution for debugging with a zero configuration. 💅

WARNING: 💀 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

piodebug currently does not support the ATmega168PB board. 😭 No debug probe glow-up for this one, bestie — it's just not on the list.


Frameworks 🎀

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

ATmega2560 👑

Contents ✨

  • ATmega2560
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💖 Hardware

Platform platform_atmelavr: bestie, these Atmel AVR 8-bit MCUs are giving a unique combination of performance, power efficiency and design flexibility. They're optimized to speed time to market — and to easily adapt to new ones — and they're built on the industry's most code-efficient architecture for C and assembly programming. Iconic. No cap. 🔥

  • Microcontroller — ATMEGA2560
  • Frequency — 16MHz
  • Flash — 255KB
  • RAM — 8KB
  • Vendor — Microchip

⚙️ Configuration

Okay so pls use the ATmega2560 ID for the projectconf_env_board option in projectconf:

[env:ATmega2560]
platform = atmelavr
board = ATmega2560

You can override default ATmega2560 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega2560.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:ATmega2560]
platform = atmelavr
board = ATmega2560

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. Obsessed. ✨

WARNING 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

ATmega2560 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. She's independent, she's thriving. 👑

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

🧚 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

🌸 ATmega2561

📖 Contents

  • ATmega2561
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💖 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. ✨

  • Microcontroller — ATMEGA2561
  • Frequency — 16MHz
  • Flash — 255KB
  • RAM — 8KB
  • Vendor — Microchip

⚙️ Configuration

Please use the ATmega2561 ID for the projectconf_env_board option in projectconf:

[env:ATmega2561]
platform = atmelavr
board = ATmega2561

You can override default ATmega2561 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega2561.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:ATmega2561]
platform = atmelavr
board = ATmega2561

; change microcontroller
board_build.mcu = atmega2561

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support the ATmega2561 board. 😭 Not her era, bestie.


🧚 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

🌸 ATmega32

📖 Contents

  • ATmega32
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💖 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 🫶

  • Microcontroller — ATMEGA32
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Microchip

⚙️ Configuration

Please use the ATmega32 ID for the projectconf_env_board option in projectconf:

[env:ATmega32]
platform = atmelavr
board = ATmega32

You can override default ATmega32 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega32.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:ATmega32]
platform = atmelavr
board = ATmega32

; change microcontroller
board_build.mcu = atmega32

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support the ATmega32 board. 💀 Sending thoughts and prayers.


🧚 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ⭐

🌸 ATmega324A

📖 Contents

  • ATmega324A
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving "build anything, bestie" energy fr fr 💜

So the ATmega324P Frameworks table, decoded from the ASCII-art chaos into something your eyes can actually handle:

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. no cap, that's the whole description, straight from the source. ✨

And that's where the ATmega324P block wraps up: Hardware → Configuration → Debugging → Frameworks, same four-section glow-up as its ATmega324A sibling. the way these two boards are basically twins 💅

Heads up bestie: the next board entry is coming in the following part, so don't go anywhere. The pattern stays iconic and identical: a Hardware table with Microcontroller, Frequency, Flash, RAM, and Vendor; a Configuration block telling you to use the board ID for the projectconf_env_board option in projectconf; a board_*** override section where *** is a JSON object path from the board manifest <BOARD>.json (think board_build.mcu, board_build.f_cpu, etc.); a Debugging section with that piodebug "1-click" zero-configuration situation; and a Frameworks list. same vibe, different silicon, iykyk 🦋

───── ✨ and yes, that WARNING still applies every single time ✨ ─────

You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this, bestie, it WILL bite you 😭

───── 🎀 and the on-board probe flex stays undefeated 🎀 ─────

These AVR boards have an on-board debug probe and are IS READY for debugging. You don't need to use or buy an external debug probe. iconic behavior honestly, she came prepared 👑

And to switch between debugging tools, you use the projectconf_debug_tool option in projectconf. the compatible tool is debugging_tool_simavr, on-board = Yes, default = Yes 🌸


okay but real talk, the pattern here is so clean it hurts:

  1. Hardware — the silicon's whole resume: Microcontroller, Frequency, Flash, RAM, Vendor.
  2. Configuration — your [env:<BOARD>] block with platform and board, plus the board_*** override magic.
  3. Debugging — piodebug, the driver warning, and the on-board probe glow-up.
  4. Frameworks — usually just framework_arduino doing its cross-platform thing.

each board is its own little main character, but the structure is lowkey identical every time 💖

───── ⭐ stay tuned for the next board's Hardware table ⭐ ─────

...cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

aaand that's the whole framework_arduino description, bestie — table done, we're moving on, no notes 💅


ATmega324PA 👑

Contents ✨

  • ATmega324PA
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🦋

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA324PA
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Microchip

Configuration 🌸

Please use ATmega324PA ID for projectconf_env_board option in projectconf:

[env:ATmega324PA]
platform = atmelavr
board = ATmega324PA

You can override default ATmega324PA settings per build environment using board_*** option, where *** is a JSON object path from board manifest ATmega324PA.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:ATmega324PA]
platform = atmelavr
board = ATmega324PA

; change microcontroller
board_build.mcu = atmega324pa

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🫶

piodebug — the "1-click" solution for debugging with a zero configuration. iconique, honestly ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🚨

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

ATmega324PA has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🔥

Compatible Tools 💜

  • debugging_tool_simavr — On-board: Yes, Default: Yes

Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

ATmega324PB 👑

Contents ✨

  • ATmega324PB
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🦋

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA324PB
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Microchip

Configuration 🌸

Please use ATmega324PB ID for projectconf_env_board option in projectconf:

[env:ATmega324PB]
platform = atmelavr
board = ATmega324PB

You can override default ATmega324PB settings per build environment using board_*** option, where *** is a JSON object path from board manifest ATmega324PB.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:ATmega324PB]
platform = atmelavr
board = ATmega324PB

; change microcontroller
board_build.mcu = atmega324pb

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 😭

piodebug currently does not support ATmega324PB board. 💀 not the glow-down fr fr


Frameworks 🌈

  • framework_arduino — the Arduino Wiring-based Framework. bestie it literally lets you write cross-platform software that controls devices hooked up to a huge range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving "make anything, plug in anything" energy ✨

🌸 ATmega328 🌸

💖 Contents 💖

  • ATmega328
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. no cap, that's the whole pitch 🫶

  • Microcontroller — ATMEGA328
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Microchip

⚙️ Configuration ⚙️

okay so pls use the ATmega328 ID for the projectconf_env_board option in projectconf:

[env:ATmega328]
platform = atmelavr
board = ATmega328

and you can override the default ATmega328 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega328.json. for example board_build.mcu, board_build.f_cpu, etc. like so:

[env:ATmega328]
platform = atmelavr
board = ATmega328

; change microcontroller
board_build.mcu = atmega328

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. iconic behaviour honestly.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 💀 don't skip this one bestie

you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

ATmega328 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 👑

  • debugging_tool_simavr — On-board: Yes, Default: Yes

🧚 Frameworks 🧚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌈 ATmega328P/PA 🌈

💖 Contents 💖

  • ATmega328P/PA
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Microchip

⚙️ Configuration ⚙️

Please use the ATmega328P ID for the projectconf_env_board option in projectconf:

[env:ATmega328P]
platform = atmelavr
board = ATmega328P

You can override the default ATmega328P/PA settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega328P.json. for example board_build.mcu, board_build.f_cpu, etc.

[env:ATmega328P]
platform = atmelavr
board = ATmega328P

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. still iconic, still zero config 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

ATmega328P/PA has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🫶

  • debugging_tool_simavr — On-board: Yes, Default: Yes

🧚 Frameworks 🧚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🦋 ATmega328PB 🦋

💖 Contents 💖

  • ATmega328PB
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

okay so this board lives on the platform_atmelavr platform, and here's the vibe: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. They're optimized to speed time to market — and to easily adapt to new ones — and they're based on the industry's most code-efficient architecture for C and assembly programming. 💅

  • Microcontroller — ATMEGA328PB
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Microchip

Configuration

bestie, please use the ATmega328PB ID for the projectconf_env_board option in projectconf:

[env:ATmega328PB]
platform = atmelavr
board = ATmega328PB

You can override the default ATmega328PB settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega328PB.json. For example: board_build.mcu, board_build.f_cpu, etc. no cap, it's giving flexible

[env:ATmega328PB]
platform = atmelavr
board = ATmega328PB

; change microcontroller
board_build.mcu = atmega328pb

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

sad news bestie 😭 piodebug currently does not support ATmega328PB board.


Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

✨ ATmega48/A ✨

Contents

  • ATmega48/A
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Same platform energy: platform_atmelavr — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and to easily adapt to new ones — they're based on the industry's most code-efficient architecture for C and assembly programming. 🦋

  • Microcontroller — ATMEGA48
  • Frequency — 16MHz
  • Flash — 4KB
  • RAM — 512B
  • Vendor — Microchip

Configuration

Please use the ATmega48 ID for the projectconf_env_board option in projectconf:

[env:ATmega48]
platform = atmelavr
board = ATmega48

You can override the default ATmega48/A settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega48.json. For example: board_build.mcu, board_build.f_cpu, etc. ✨

[env:ATmega48]
platform = atmelavr
board = ATmega48

; change microcontroller
board_build.mcu = atmega48

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. main character energy tbh

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

ATmega48/A has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🔥

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

🌸 ATmega48PB 🌸

Contents

  • ATmega48PB
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

platform_atmelavr again, and the description stays iconic: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and to easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 💅

  • Microcontroller — ATMEGA48PB
  • Frequency — 16MHz
  • Flash — 4KB
  • RAM — 512B
  • Vendor — Microchip

Configuration

Please use the ATmega48PB ID for the projectconf_env_board option in projectconf:

[env:ATmega48PB]
platform = atmelavr
board = ATmega48PB

You can override the default ATmega48PB settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega48PB.json. For example: board_build.mcu, board_build.f_cpu, etc. 🫶

[env:ATmega48PB]
platform = atmelavr
board = ATmega48PB

; change microcontroller
board_build.mcu = atmega48pb

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug currently does not support ATmega48PB board. rip 💀


Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ⭐

💜 ATmega64/A 💜

Contents

  • ATmega64/A
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

and we're back at it — platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and to easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 🧚

🌈 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs are literally that girl — they serve up a unique combo of performance, power efficiency and design flexibility. Optimized to speed time to market (and easily adapt to new ones, periodt), they're built on the industry's most code-efficient architecture for C and assembly programming. no cap 💅

  • Microcontroller: ATMEGA64
  • Frequency: 16MHz
  • Flash: 63KB
  • RAM: 4KB
  • Vendor: Microchip

⚙️ Configuration

Bestie, please use the ATmega64 ID for the projectconf_env_board option in projectconf:

[env:ATmega64]
platform = atmelavr
board = ATmega64

You can override the default ATmega64/A settings per build environment using the board_*** option, where *** is a JSON object path from board manifest ATmega64.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:ATmega64]
platform = atmelavr
board = ATmega64

; change microcontroller
board_build.mcu = atmega64

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support the ATmega64/A board. it's giving unsupported, bestie 😭


🧩 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic 🎀

👑 ATmega640

📖 Contents

  • ATmega640
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🌈 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs are literally that girl — they serve up a unique combo of performance, power efficiency and design flexibility. Optimized to speed time to market (and easily adapt to new ones, periodt), they're built on the industry's most code-efficient architecture for C and assembly programming. no cap 💅

  • Microcontroller: ATMEGA640
  • Frequency: 16MHz
  • Flash: 63KB
  • RAM: 8KB
  • Vendor: Microchip

⚙️ Configuration

Bestie, please use the ATmega640 ID for the projectconf_env_board option in projectconf:

[env:ATmega640]
platform = atmelavr
board = ATmega640

You can override the default ATmega640 settings per build environment using the board_*** option, where *** is a JSON object path from board manifest ATmega640.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:ATmega640]
platform = atmelavr
board = ATmega640

; change microcontroller
board_build.mcu = atmega640

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support the ATmega640 board. it's giving unsupported, bestie 😭


🧩 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic 🎀

👑 ATmega644/A

📖 Contents

  • ATmega644/A
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🌈 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs are literally that girl — they serve up a unique combo of performance, power efficiency and design flexibility. Optimized to speed time to market (and easily adapt to new ones, periodt), they're built on the industry's most code-efficient architecture for C and assembly programming. no cap 💅

  • Microcontroller: ATMEGA644A
  • Frequency: 16MHz
  • Flash: 63KB
  • RAM: 4KB
  • Vendor: Microchip

⚙️ Configuration

Bestie, please use the ATmega644A ID for the projectconf_env_board option in projectconf:

[env:ATmega644A]
platform = atmelavr
board = ATmega644A

You can override the default ATmega644/A settings per build environment using the board_*** option, where *** is a JSON object path from board manifest ATmega644A.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:ATmega644A]
platform = atmelavr
board = ATmega644A

; change microcontroller
board_build.mcu = atmega644a

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support the ATmega644/A board. it's giving unsupported, bestie 😭


🧩 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic 🎀

👑 ATmega644P/PA

📖 Contents

  • ATmega644P/PA
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Bestie, lemme put you on real quick. Platform platform_atmelavr 💜 — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. periodt. ✨

Here's the tea on this one:

  • Microcontroller: ATMEGA644P
  • Frequency: 16MHz
  • Flash: 63KB
  • RAM: 4KB
  • Vendor: Microchip

Configuration

Okay so please use the ATmega644P ID for the projectconf_env_board option in projectconf:

[env:ATmega644P]
platform = atmelavr
board = ATmega644P

You can override default ATmega644P/PA settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega644P.json. Like for example, board_build.mcu, board_build.f_cpu, etc. 🎀

[env:ATmega644P]
platform = atmelavr
board = ATmega644P

; change microcontroller
board_build.mcu = atmega644p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. do not skip this bestie, i'm serious 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

ATmega644P/PA has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. no cap, it's giving convenient 👑

Compatible tools:

  • Compatible Tools: debugging_tool_simavr
  • On-board: Yes
  • Default: Yes

Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

ATmega8/A

Contents

  • ATmega8/A
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 💖

  • Microcontroller: ATMEGA8
  • Frequency: 16MHz
  • Flash: 7.50KB
  • RAM: 1KB
  • Vendor: Microchip

Configuration

Please use the ATmega8 ID for the projectconf_env_board option in projectconf:

[env:ATmega8]
platform = atmelavr
board = ATmega8

You can override default ATmega8/A settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega8.json. For example, board_build.mcu, board_build.f_cpu, etc. 🌸

[env:ATmega8]
platform = atmelavr
board = ATmega8

; change microcontroller
board_build.mcu = atmega8

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

ATmega8/A has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. main character energy fr fr ⭐

Compatible tools:

  • Compatible Tools: debugging_tool_simavr
  • On-board: Yes
  • Default: Yes

Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

ATmega8515

Contents

  • ATmega8515
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. ✨

  • Microcontroller: ATMEGA8515
  • Frequency: 16MHz
  • Flash: 7.50KB
  • RAM: 512B
  • Vendor: Microchip

Configuration

Please use the ATmega8515 ID for the projectconf_env_board option in projectconf:

[env:ATmega8515]
platform = atmelavr
board = ATmega8515

You can override default ATmega8515 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega8515.json. For example, board_build.mcu, board_build.f_cpu, etc. 💜

[env:ATmega8515]
platform = atmelavr
board = ATmega8515

; change microcontroller
board_build.mcu = atmega8515

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug currently does not support ATmega8515 board. 💀 yeah bestie, no debug for this one, it's giving tragic but we move 😭

  • framework_arduino — the Arduino Wiring-based Framework 💖 it lets you write cross-platform software that controls devices attached to a whole wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior, no cap ✨

ATmega8535 🦋

Contents 🌸

  • ATmega8535
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔥

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming 💅

  • Microcontroller — ATMEGA8535
  • Frequency — 16MHz
  • Flash — 7.50KB
  • RAM — 512B
  • Vendor — Microchip

Configuration 🎀

Please use the ATmega8535 ID for the projectconf_env_board option in projectconf:

[env:ATmega8535]
platform = atmelavr
board = ATmega8535

You can override the default ATmega8535 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega8535.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:ATmega8535]
platform = atmelavr
board = ATmega8535

; change microcontroller
board_build.mcu = atmega8535

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 😭

piodebug currently does not support the ATmega8535 board. 💀

Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

ATmega88/A 🧚

Contents 🌸

  • ATmega88/A
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔥

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming 💜

  • Microcontroller — ATMEGA88
  • Frequency — 16MHz
  • Flash — 7.50KB
  • RAM — 1KB
  • Vendor — Microchip

Configuration 🎀

Please use the ATmega88 ID for the projectconf_env_board option in projectconf:

[env:ATmega88]
platform = atmelavr
board = ATmega88

You can override the default ATmega88/A settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega88.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:ATmega88]
platform = atmelavr
board = ATmega88

; change microcontroller
board_build.mcu = atmega88

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛✨

piodebug — the "1-click" solution for debugging with a zero configuration. bestie, that's main character energy fr fr 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️ don't skip this one, it's giving "read the fine print" energy

You can switch between debugging_tools using the projectconf_debug_tool option in projectconf.

ATmega88/A has an on-board debug probe and IS READY for debugging 🔥 You don't need to use/buy an external debug probe. slay 💅

  • Compatible Tools — debugging_tool_simavr — On-board: Yes — Default: Yes ✅

board_* option, where * is a JSON object path from the board manifest ATmega88PB.json. Like, for example? board_build.mcu, board_build.f_cpu, etc. 💅

[env:ATmega88PB]
platform = atmelavr
board = ATmega88PB

; change microcontroller
board_build.mcu = atmega88pb

; change MCU frequency
board_build.f_cpu = 16000000L

🌈 Debugging

pio debug — bestie, this is your "1-click" solution for debugging with a zero configuration. Zero. Configuration. Obsessed. ✨

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (This is not optional, bestie — no drivers, no debugging, that's just the rules. 😭)

You can switch between debugging debugging_tools using the debug_tool option in platformio.ini. Mix and match, main character energy. 🦋

ATmega88PB has an on-board debug probe and is READY for debugging. You don't need to use/buy an external debug probe. It's giving self-sufficient. 👑

  • Compatible Tools — simavr
    • On-board: Yes
    • Default: Yes

🎀 Frameworks

NameDescription

Okay wait, table vibes — let me just lay it out for you properly:

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

🦋 ATmega168PA

Contents

  • ATmega168PA
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💜 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 🔥

  • Microcontroller: ATMEGA168PA
  • Frequency: 16MHz
  • Flash: 16KB
  • RAM: 1KB
  • Vendor: Microchip

⭐ Configuration

Please use the ATmega168PA ID for the board option in platformio.ini:

[env:ATmega168PA]
platform = atmelavr
board = ATmega168PA

You can override default ATmega168PA settings per build environment using board_*** option, where *** is a JSON object path from the board manifest ATmega168PA.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:ATmega168PA]
platform = atmelavr
board = ATmega168PA

; change microcontroller
board_build.mcu = atmega168pa

; change MCU frequency
board_build.f_cpu = 16000000L

🌸 Debugging

pio debug — "1-click" solution for debugging with a zero configuration. 🫶

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the debug_tool option in platformio.ini.

ATmega168PA has an on-board debug probe and is READY for debugging. You don't need to use/buy an external debug probe. Periodt. 💅

  • Compatible Tools — simavr
    • On-board: Yes
    • Default: Yes

🌈 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

🎀 ATmega168P

Contents

  • ATmega168P
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💜 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 🔥

  • Microcontroller: ATMEGA168P
  • Frequency: 16MHz
  • Flash: 16KB
  • RAM: 1KB
  • Vendor: Microchip

⭐ Configuration

Please use the ATmega168P ID for the board option in platformio.ini:

[env:ATmega168P]
platform = atmelavr
board = ATmega168P

You can override default ATmega168P settings per build environment using board_*** option, where *** is a JSON object path from the board manifest ATmega168P.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:ATmega168P]
platform = atmelavr
board = ATmega168P

; change microcontroller
board_build.mcu = atmega168p

; change MCU frequency
board_build.f_cpu = 16000000L

🌸 Debugging

pio debug — "1-click" solution for debugging with a zero configuration. 🫶

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the debug_tool option in platformio.ini.

ATmega168P has an on-board debug probe and is READY for debugging. You don't need to use/buy an external debug probe. No cap. 👑

  • Compatible Tools — simavr
    • On-board: Yes
    • Default: Yes

🌈 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

🦋 ATmega168

Contents

  • ATmega168
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💜 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 🔥

  • Microcontroller: ATMEGA168
  • Frequency: 16MHz
  • Flash: 16KB
  • RAM: 1KB
  • Vendor: Microchip

⭐ Configuration

Please use the ATmega168 ID for the board option in platformio.ini:

[env:ATmega168]
platform = atmelavr
board = ATmega168

You can override default ATmega168 settings per build environment using board_*** option, where *** is a JSON object path from the board manifest ATmega168.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:ATmega168]
platform = atmelavr
board = ATmega168

; change microcontroller
board_build.mcu = atmega168

; change MCU frequency
board_build.f_cpu = 16000000L

🌸 Debugging

pio debug — "1-click" solution for debugging with a zero configuration. 🫶

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the debug_tool option in platformio.ini.

ATmega168 has an on-board debug probe and is READY for debugging. You don't need to use/buy an external debug probe. Slay. 💅

  • Compatible Tools — simavr
    • On-board: Yes
    • Default: Yes

🌈 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

board_*** option, where *** is a JSON object path from the board manifest ATmega88PB.json 💅 For example, board_build.mcu, board_build.f_cpu, etc. So basically you can override the vibes board-by-board, bestie ✨

[env:ATmega88PB]
platform = atmelavr
board = ATmega88PB

; change microcontroller
board_build.mcu = atmega88pb

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support the ATmega88PB board. So sorry bestie, no debugging slay here 😭


🧚 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework ✨ It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 🌈 iconic honestly.

🦋 ATmega8P/PA

📋 Contents

  • ATmega8P/PA
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility ✨ Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming 💅

  • Microcontroller — ATMEGA48P
  • Frequency — 16MHz
  • Flash — 4KB
  • RAM — 512B
  • Vendor — Microchip

⚙️ Configuration

Please use the ATmega48P ID for the projectconf_env_board option in projectconf, okay bestie? 🫶

[env:ATmega48P]
platform = atmelavr
board = ATmega48P

You can override the default ATmega8P/PA settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ATmega48P.json ✨ For example, board_build.mcu, board_build.f_cpu, etc.

[env:ATmega48P]
platform = atmelavr
board = ATmega48P

; change microcontroller
board_build.mcu = atmega48p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — a "1-click" solution for debugging with a zero configuration 🔥

WARNING 🚨 You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Not me forgetting the drivers, fr fr 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf 💫

The ATmega8P/PA has an on-board debug probe and IS READY for debugging 👑 You don't need to use or buy an external debug probe, no cap 💅

  • Compatible Tools — debugging_tool_simavr | On-board: Yes | Default: Yes ⭐

🧚 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework ✨ It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 🌈 ate and left no crumbs.

🦋 Adafruit Bluefruit Micro

📋 Contents

  • Adafruit Bluefruit Micro
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility ✨ Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming 💅

  • Microcontroller — ATMEGA32U4
  • Frequency — 8MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Adafruit

okay so that's the chip spec all wrapped up, bestie ✨ moving right along 💅

💖 Configuration

Please use bluefruitmicro ID for the projectconf_env_board option in projectconf:

[env:bluefruitmicro]
platform = atmelavr
board = bluefruitmicro

You can override default Adafruit Bluefruit Micro settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest bluefruitmicro.json. For example, board_build.mcu, board_build.f_cpu, etc. — literally just plug in the path and go 🫶

[env:bluefruitmicro]
platform = atmelavr
board = bluefruitmicro

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug — a "1-click" solution for debugging with a zero configuration. no cap, it's that easy 😭

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Adafruit Bluefruit Micro has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. iconic behavior fr fr 👑

Compatible Tools:

  • debugging_tool_simavr — On-board: Yes, Default: Yes ✨

🧚 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework. It allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving limitless creative potential 🌈

👑 Adafruit Circuit Playground Classic

🎀 Contents

  • Adafruit Circuit Playground Classic
  • Hardware
  • Configuration
  • Debugging
  • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. lowkey legendary architecture ngl 💅

  • Microcontroller — ATMEGA32U4
  • Frequency — 8MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Adafruit

💖 Configuration

Please use circuitplay_classic ID for the projectconf_env_board option in projectconf:

[env:circuitplay_classic]
platform = atmelavr
board = circuitplay_classic

You can override default Adafruit Circuit Playground Classic settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest circuitplay_classic.json. For example, board_build.mcu, board_build.f_cpu, etc. — same deal, different board, we love consistency 🫶

[env:circuitplay_classic]
platform = atmelavr
board = circuitplay_classic

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug — a "1-click" solution for debugging with a zero configuration. zero setup, all vibes ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Adafruit Circuit Playground Classic has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. she's self-sufficient, we stan 💅

Compatible Tools:

  • debugging_tool_simavr — On-board: Yes, Default: Yes ✨

🧚 Frameworks

  • Name / Description — that's the table header bestie, and the list of what this board supports is coming right up 🌸
  • framework_arduino — Arduino Wiring-based Framework. It lets u write cross-platform software that controls devices attached to a wide range of Arduino boards, so u can make all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior fr ✨

🌸 Adafruit Feather 328P 🌸

🎀 Contents

  • Adafruit Feather 328P
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. no cap, that's literally the whole flex 💅

  • Microcontroller — ATMEGA328P
  • Frequency — 8MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Adafruit

⚙️ Configuration

Bestie, please use feather328p ID for the projectconf_env_board option in projectconf:

[env:feather328p]
platform = atmelavr
board = feather328p

You can override default Adafruit Feather 328P settings per build environment using the board_*** option, where *** is a JSON object path from board manifest feather328p.json. For example, board_build.mcu, board_build.f_cpu, etc. mix and match, it's giving customizable 🦋

[env:feather328p]
platform = atmelavr
board = feather328p

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 💖

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this step bestie, it WILL not work otherwise 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Adafruit Feather 328P has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. that's main character energy honestly 👑

  • Compatible Tools:
    • debugging_tool_simavr — On-board: Yes, Default: Yes ✅

🧚 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌈 Adafruit Feather 32u4 🌈

🎀 Contents

  • Adafruit Feather 32u4
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. same energy, different chip, we love a consistent queen ✨

  • Microcontroller — ATMEGA32U4
  • Frequency — 8MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Adafruit

⚙️ Configuration

Please use feather32u4 ID for the projectconf_env_board option in projectconf:

[env:feather32u4]
platform = atmelavr
board = feather32u4

You can override default Adafruit Feather 32u4 settings per build environment using the board_*** option, where *** is a JSON object path from board manifest feather32u4.json. For example, board_build.mcu, board_build.f_cpu, etc. go off, customizing is self care fr 🫶

[env:feather32u4]
platform = atmelavr
board = feather32u4

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

okay so that's the whole "yes you can absolutely remix your board" situation — you're literally reaching into the board's own little settings drawer and swapping stuff out, bestie. 💅


🔥 Debugging 🔥

piodebug — the "1-click" solution for debugging with a zero configuration. It's giving effortless, fr fr. ✨

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. do not skip this, I am begging you 😭

You can switch between debugging_tools using the projectconf_debug_tool option in projectconf. So like, that's the knob you turn. 🎛️

Adafruit Feather 32u4 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. it's already built in, you're welcome, no shopping required 🫶

Compatible Tools

  • debugging_tool_simavr — On-board: Yes, Default: Yes 👑

🎀 Frameworks 🎀

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving maker-girl summer, honestly 🌈

🦋 Adafruit Flora 🦋

📖 Contents 📖

  • Adafruit Flora
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💜 Hardware 💜

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. little chips, huge range, iconic behaviour ✨

  • Microcontroller — ATMEGA32U4
  • Frequency — 8MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Adafruit

⭐ Configuration ⭐

Please use the flora8 ID for the projectconf_env_board option in projectconf:

[env:flora8]
platform = atmelavr
board = flora8

You can override the default Adafruit Flora settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest flora8.json. For example, board_build.mcu, board_build.f_cpu, etc. so much power in your hands, use it wisely bestie 💅

[env:flora8]
platform = atmelavr
board = flora8

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

🌸 Debugging 🌸

piodebug — the "1-click" solution for debugging with a zero configuration. Obsessed. 😌

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. for real though, the drivers are not optional 🙈

You can switch between debugging_tools using the projectconf_debug_tool option in projectconf.

Adafruit Flora has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. plug in and go, periodt 🫶

Compatible Tools

  • debugging_tool_simavr — On-board: Yes, Default: Yes 👑

🧚 Frameworks 🧚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. same framework, same slay 🌈

💖 Adafruit Gemma 💖

📖 Contents 📖

  • Adafruit Gemma
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Okay so bestie, this one runs on platform_atmelavr — and lemme tell you, Atmel AVR 8-bit MCUs are giving unique combination of performance, power efficiency and design flexibility. They're optimized to speed time to market (and easily adapt to new ones, periodt) and they're based on the industry's most code-efficient architecture for C and assembly programming. Iconic behavior honestly. ✨

  • Microcontroller: ATTINY85
  • Frequency: 8MHz
  • Flash: 8KB
  • RAM: 512B
  • Vendor: Adafruit

Configuration 🎀

Please use gemma ID for projectconf_env_board option in projectconf:

[env:gemma]
platform = atmelavr
board = gemma

You can override default Adafruit Gemma settings per build environment using board_*** option, where *** is a JSON object path from board manifest gemma.json. For example, board_build.mcu, board_build.f_cpu, etc. Go off, customize your lil heart out 💅

[env:gemma]
platform = atmelavr
board = gemma

; change microcontroller
board_build.mcu = attiny85

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛✨

piodebug — the "1-click" solution for debugging with a zero configuration. No cap, it's that easy.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Adafruit Gemma has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. Main character energy fr fr 👑

  • Compatible Tools: debugging_tool_simavr — On-board: Yes, Default: Yes

Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

Adafruit ItsyBitsy 3V/8MHz 🦋

Contents

  • Adafruit ItsyBitsy 3V/8MHz
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 💖

  • Microcontroller: ATMEGA32U4
  • Frequency: 8MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: Adafruit

Configuration 🎀

Please use itsybitsy32u4_3V ID for projectconf_env_board option in projectconf:

[env:itsybitsy32u4_3V]
platform = atmelavr
board = itsybitsy32u4_3V

You can override default Adafruit ItsyBitsy 3V/8MHz settings per build environment using board_*** option, where *** is a JSON object path from board manifest itsybitsy32u4_3V.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:itsybitsy32u4_3V]
platform = atmelavr
board = itsybitsy32u4_3V

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛✨

piodebug — the "1-click" solution for debugging with a zero configuration. Slay.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Adafruit ItsyBitsy 3V/8MHz has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 💅

  • Compatible Tools: debugging_tool_simavr — On-board: Yes, Default: Yes

Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

Adafruit ItsyBitsy 5V/16MHz 🦋

Contents

  • Adafruit ItsyBitsy 5V/16MHz
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 💖

  • Microcontroller: ATMEGA32U4
  • Frequency: 16MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: Adafruit

Configuration 🎀

Please use itsybitsy32u4_5V ID for projectconf_env_board option in projectconf:

[env:itsybitsy32u4_5V]
platform = atmelavr
board = itsybitsy32u4_5V

You can override default Adafruit ItsyBitsy 5V/16MHz settings per build environment using board_*** option, where *** is a JSON object path from board manifest itsybitsy32u4_5V.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:itsybitsy32u4_5V]
platform = atmelavr
board = itsybitsy32u4_5V

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛✨

piodebug — the "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the projectconf_debug_tool option in projectconf. 💅

Adafruit ItsyBitsy 5V/16MHz has an on-board debug probe and is IS READY for debugging. You don't need to use/buy an external debug probe. no cap. 🫶

Compatible debug tools for it:

  • debugging_tool_simavr — On-board: Yes · Default: Yes 👑

🦋 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

💜 Adafruit Metro

📖 Contents

  • Adafruit Metro
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. 💪

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Adafruit

⚙️ Configuration

Please use the metro ID for the projectconf_env_board option in projectconf:

[env:metro]
platform = atmelavr
board = metro

You can override default Adafruit Metro settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest metro.json. For example, board_build.mcu, board_build.f_cpu, etc. 🎀

[env:metro]
platform = atmelavr
board = metro

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. it's giving effortless. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging tools using the projectconf_debug_tool option in projectconf.

Adafruit Metro has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. fr fr.

Compatible debug tools:

  • debugging_tool_simavr — On-board: Yes · Default: Yes 💅

🦋 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

🍓 Adafruit Pro Trinket 3V/12MHz (FTDI)

📖 Contents

  • Adafruit Pro Trinket 3V/12MHz (FTDI)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. 🔥

  • Microcontroller — ATMEGA328P
  • Frequency — 12MHz
  • Flash — 28KB
  • RAM — 2KB
  • Vendor — Adafruit

⚙️ Configuration

Please use the protrinket3ftdi ID for the projectconf_env_board option in projectconf:

[env:protrinket3ftdi]
platform = atmelavr
board = protrinket3ftdi

You can override default Adafruit Pro Trinket 3V/12MHz (FTDI) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest protrinket3ftdi.json. For example, board_build.mcu, board_build.f_cpu, etc. 🎀

[env:protrinket3ftdi]
platform = atmelavr
board = protrinket3ftdi

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 12000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. lowkey iconic. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging tools using the projectconf_debug_tool option in projectconf.

Adafruit Pro Trinket 3V/12MHz (FTDI) has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. no external probe needed bestie. 🫶

Compatible debug tools:

  • debugging_tool_simavr — On-board: Yes · Default: Yes 👑

🦋 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💜

🌈 Adafruit Pro Trinket 3V/12MHz (USB)

📖 Contents

  • Adafruit Pro Trinket 3V/12MHz (USB)
    • Hardware
    • Configuration
    • Debugging
  • Frameworks

🌸 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

  • Microcontroller: ATMEGA328P
  • Frequency: 12MHz
  • Flash: 28KB
  • RAM: 2KB
  • Vendor: Adafruit

🎀 Configuration

Please use protrinket3 ID for projectconf_env_board option in projectconf:

[env:protrinket3]
platform = atmelavr
board = protrinket3

You can override default Adafruit Pro Trinket 3V/12MHz (USB) settings per build environment using board_*** option, where *** is a JSON object path from board manifest protrinket3.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:protrinket3]
platform = atmelavr
board = protrinket3

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 12000000L

💅 Debugging

piodebug - "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Adafruit Pro Trinket 3V/12MHz (USB) has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 🫶

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

✨ Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

👑 Adafruit Pro Trinket 5V/16MHz (FTDI)

🦋 Contents

  • Adafruit Pro Trinket 5V/16MHz (FTDI)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🌸 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 28KB
  • RAM: 2KB
  • Vendor: Adafruit

🎀 Configuration

Please use protrinket5ftdi ID for projectconf_env_board option in projectconf:

[env:protrinket5ftdi]
platform = atmelavr
board = protrinket5ftdi

You can override default Adafruit Pro Trinket 5V/16MHz (FTDI) settings per build environment using board_*** option, where *** is a JSON object path from board manifest protrinket5ftdi.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:protrinket5ftdi]
platform = atmelavr
board = protrinket5ftdi

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

💅 Debugging

piodebug - "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Adafruit Pro Trinket 5V/16MHz (FTDI) has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 🫶

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

✨ Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌈 Adafruit Pro Trinket 5V/16MHz (USB)

🦋 Contents

  • Adafruit Pro Trinket 5V/16MHz (USB)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💻 Hardware

okay so bestie, let's talk chips ✨ platform_atmelavr is doing the absolute most here — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they're based on the industry's most code-efficient architecture for C and assembly programming. it's giving iconic, fr fr 💅

spec sheet incoming, no cap:

  • Microcontroller — ATMEGA328P 🧠
  • Frequency — 16MHz ⚡
  • Flash — 28KB
  • RAM — 2KB
  • Vendor — Adafruit 🎀

⚙️ Configuration

okay so when you're setting up your projectconf, bestie, pls use the protrinket5 ID for the projectconf_env_board option — that's the one 🫶

[env:protrinket5]
platform = atmelavr
board = protrinket5

(yes that's the exact spelling — copy it character for character, don't get cute with it 😌)

and you can also override the default Adafruit Pro Trinket 5V/16MHz (USB) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest protrinket5.json. like, for example board_build.mcu, board_build.f_cpu, etc. ✨

[env:protrinket5]
platform = atmelavr
board = protrinket5

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — it's a "1-click" solution for debugging with a zero configuration. literally zero, bestie 😭✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf 🦋

Adafruit Pro Trinket 5V/16MHz (USB) has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. periodt 👑

Compatible Tools:

  • debugging_tool_simavr — On-board: Yes, Default: Yes

📦 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨

🧚 Adafruit Trinket 3V/8MHz

new board, new me 💜

📋 Contents

  • Adafruit Trinket 3V/8MHz
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💻 Hardware

same platform energy, different chip: platform_atmelavr — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they're based on the industry's most code-efficient architecture for C and assembly programming. 🌸

  • Microcontroller — ATTINY85 🧠
  • Frequency — 8MHz ⚡
  • Flash — 8KB
  • RAM — 512B
  • Vendor — Adafruit 🎀

⚙️ Configuration

for this one, bestie, use the trinket3 ID for the projectconf_env_board option in projectconf: 🫶

[env:trinket3]
platform = atmelavr
board = trinket3

you can override the default Adafruit Trinket 3V/8MHz settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest trinket3.json. for example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:trinket3]
platform = atmelavr
board = trinket3

; change microcontroller
board_build.mcu = attiny85

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf 🦋

Adafruit Trinket 3V/8MHz has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. periodt 👑

Compatible Tools:

  • debugging_tool_simavr — On-board: Yes, Default: Yes

📦 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

okay bestie so the Arduino Wiring-based Framework is the whole point here — it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can build all kinds of creative coding, interactive objects, spaces or physical experiences. 💅


🍓 Adafruit Trinket 5V/16MHz

Contents 📜

  • Adafruit Trinket 5V/16MHz
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs are giving a unique combination of performance, power efficiency and design flexibility, fr fr. They're optimized to speed time to market — and to easily adapt to new ones — and they're built on the industry's most code-efficient architecture for C and assembly programming. iconic. 👑

  • Microcontroller: ATTINY85
  • Frequency: 16MHz
  • Flash: 8KB
  • RAM: 512B
  • Vendor: Adafruit

Configuration ⚙️

Please use trinket5 ID for projectconf_env_board option in projectconf:

[env:trinket5]
platform = atmelavr
board = trinket5

You can override the default Adafruit Trinket 5V/16MHz settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest trinket5.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:trinket5]
platform = atmelavr
board = trinket5

; change microcontroller
board_build.mcu = attiny85

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. no cap.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Adafruit Trinket 5V/16MHz has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. slay. ✨

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

Frameworks 🌈

  • Name: framework_arduino
    • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌸 Alorium Hinj

Contents 📜

  • Alorium Hinj
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. They're optimized to speed time to market — and to easily adapt to new ones — and they're based on the industry's most code-efficient architecture for C and assembly programming. periodt. 💜

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 31.50KB
  • RAM: 2KB
  • Vendor: Alorium Technology

Configuration ⚙️

Please use alorium_hinj ID for projectconf_env_board option in projectconf:

[env:alorium_hinj]
platform = atmelavr
board = alorium_hinj

You can override the default Alorium Hinj settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest alorium_hinj.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:alorium_hinj]
platform = atmelavr
board = alorium_hinj

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

okay so bestie, real talk: the driver situation is on you and your OS, and the compatible debug tool listed down below is where the further instructions and configuration info live. Not me gatekeeping, that's just how it is. 💖

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. ✨

Alorium Hinj has on-board debug probe and IS READY for debugging. You literally don't need to use/buy external debug probe — it's giving self-sufficient. 👑

  • debugging_tool_simavr — on-board: Yes 💅 · default: Yes ⭐

🎀 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework, which allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

🌸 Alorium Sno

Contents

  • Alorium Sno
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. 🔥

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Alorium Technology

⚙️ Configuration

Please use the alorium_sno ID for the projectconf_env_board option in projectconf, okay?

[env:alorium_sno]
platform = atmelavr
board = alorium_sno

You can override default Alorium Sno settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest alorium_sno.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:alorium_sno]
platform = atmelavr
board = alorium_sno

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. Zero. Configuration. Iconic. ✨

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Alorium Sno has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 👑

  • debugging_tool_simavr — on-board: Yes, default: Yes ⭐

🎀 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

🦋 Alorium XLR8

Contents

  • Alorium XLR8
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. 🔥

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Alorium Technology

⚙️ Configuration

Please use the alorium_xlr8 ID for the projectconf_env_board option in projectconf:

[env:alorium_xlr8]
platform = atmelavr
board = alorium_xlr8

You can override default Alorium XLR8 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest alorium_xlr8.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:alorium_xlr8]
platform = atmelavr
board = alorium_xlr8

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. ✨

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Alorium XLR8 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 👑

  • debugging_tool_simavr — on-board: Yes, default: Yes ⭐

and the framework_arduino situation for XLR8 is right there waiting in the contents, so hold that thought 🫶

Frameworks

Okay so the framework sitch for this board is:

  • framework_arduino — Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

💜 Altair

Contents

  • Altair
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA256RFR2
  • Frequency — 16MHz
  • Flash — 248KB
  • RAM — 32KB
  • Vendor — makerlab.mx

Configuration

Bestie, use the altair ID for the projectconf_env_board option in projectconf:

[env:altair]
platform = atmelavr
board = altair

You can override the default Altair settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest altair.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:altair]
platform = atmelavr
board = altair

; change microcontroller
board_build.mcu = atmega256rfr2

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

ngl, piodebug currently does not support the Altair board. 💀

Frameworks

  • framework_arduino — Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🦋 Anarduino MiniWireless

Contents

  • Anarduino MiniWireless
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Anarduino

Configuration

Please use the miniwireless ID for the projectconf_env_board option in projectconf:

[env:miniwireless]
platform = atmelavr
board = miniwireless

You can override default Anarduino MiniWireless settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest miniwireless.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:miniwireless]
platform = atmelavr
board = miniwireless

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Anarduino MiniWireless has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 👑

  • Compatible Tools — debugging_tool_simavr — On-board: Yes — Default: Yes

Frameworks

  • framework_arduino — Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🎀 Arduboy

Contents

  • Arduboy
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Arduboy

Configuration

Please use the arduboy ID for the projectconf_env_board option in projectconf:

[env:arduboy]
platform = atmelavr
board = arduboy

You can override default Arduboy settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest arduboy.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:arduboy]
platform = atmelavr
board = arduboy

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L
  • framework_arduino — the Arduino Wiring-based Framework, bestie 💖 it lets you write cross-platform software that controls devices hooked up to a whole bunch of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces, or physical experiences. It's giving main character energy for your hardware glow-up ✨

Arduino BT ATmega168 Contents

  • Arduino BT ATmega168
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming ┌─────────────────┬───────────┐ │ Microcontroller │ ATMEGA168 │ ├─────────────────┼───────────┤ │ Frequency │ 16MHz │ ├─────────────────┼───────────┤ │ Flash │ 14KB │ ├─────────────────┼───────────┤ │ RAM │ 1KB │ ├─────────────────┼───────────┤ │ Vendor │ Arduino │ └─────────────────┴───────────┘

Configuration Please use btatmega168 ID for projectconf_env_board option in projectconf:

[env:btatmega168] platform = atmelavr board = btatmega168

You can override default Arduino BT ATmega168 settings per build environment using board_* option, where * is a JSON object path from board manifest btatmega168.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:btatmega168] platform = atmelavr board = btatmega168

; change microcontroller board_build.mcu = atmega168

; change MCU frequency board_build.f_cpu = 16000000L

Debugging piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Arduino BT ATmega168 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. ┌───────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├───────────────────────┼──────────┼─────────┤ │ debugging_tool_simavr │ Yes │ Yes │ └───────────────────────┴──────────┴─────────┘

Frameworks ┌───────────────────┬────────────────────────────┐ │ Name │ Description │ ├───────────────────┼────────────────────────────┤ │ framework_arduino │ Arduino Wiring-based │ │ │ Framework allows writing │ │ │ cross-platform software to │ │ │ control devices attached │ │ │ to a wide range of Arduino │ │ │ boards to create all kinds │ │ │ of creative coding, │ │ │ interactive objects, │ │ │ spaces or physical │ │ │ experiences. │ └───────────────────┴────────────────────────────┘

  • framework_arduino — the Arduino Wiring-based Framework, and it's giving builder of worlds fr. It lets you write cross-platform software that controls whatever devices are attached to a whole range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces, or physical experiences. Obsessed. 🎀

Arduino BT ATmega328 💖

Contents

  • Arduino BT ATmega328
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combo of performance, power efficiency, and design flexibility. Optimized to speed time to market — and to easily adapt to new ones — they're based on the industry's most code-efficient architecture for C and assembly programming. Slay. ✨

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2KB
  • Vendor — Arduino

Configuration

Bestie, please use the btatmega328 ID for the projectconf_env_board option in projectconf:

[env:btatmega328]
platform = atmelavr
board = btatmega328

You can override the default Arduino BT ATmega328 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest btatmega328.json. For example: board_build.mcu, board_build.f_cpu, etc.

[env:btatmega328]
platform = atmelavr
board = btatmega328

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. It's literally that easy. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on a compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino BT ATmega328 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Main character board energy, no cap. 👑

  • Compatible Tools — debugging_tool_simavr
  • On-board — Yes
  • Default — Yes

Frameworks

  • framework_arduino — the Arduino Wiring-based Framework. It allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces, or physical experiences. Ate. 🔥

Arduino Duemilanove or Diecimila ATmega168 🦋

Contents

  • Arduino Duemilanove or Diecimila ATmega168
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency, and design flexibility. Optimized to speed time to market — and to easily adapt to new ones — they're based on the industry's most code-efficient architecture for C and assembly programming. Periodt. ✨

  • Microcontroller — ATMEGA168
  • Frequency — 16MHz
  • Flash — 14KB
  • RAM — 1KB
  • Vendor — Arduino

Configuration

Please use the diecimilaatmega168 ID for the projectconf_env_board option in projectconf:

[env:diecimilaatmega168]
platform = atmelavr
board = diecimilaatmega168

You can override the default Arduino Duemilanove or Diecimila ATmega168 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest diecimilaatmega168.json. For example: board_build.mcu, board_build.f_cpu, etc.

[env:diecimilaatmega168]
platform = atmelavr
board = diecimilaatmega168

; change microcontroller
board_build.mcu = atmega168

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. The way this just works? Iconic. 💖

WARNING: You will need to install debug tool drivers depending on your system. Please click on a compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Duemilanove or Diecimila ATmega168 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🫶

  • Compatible Tools — debugging_tool_simavr
  • On-board — Yes
  • Default — Yes

Frameworks

  • framework_arduino — the Arduino Wiring-based Framework. It allows writing cross-platform software to control devices attached to a wide range of Arduino boards, to create all kinds of creative coding, interactive objects, spaces, or physical experiences. So good. 🌈

Arduino Duemilanove or Diecimila ATmega328 🌸

Contents

  • Arduino Duemilanove or Diecimila ATmega328
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💖 Hardware 💖

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

okay so here's the spec sheet bestie, read it and weep (affectionately):

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 30KB
  • RAM — 2KB
  • Vendor — Arduino

⚙️ Configuration ⚙️

Please use diecimilaatmega328 ID for projectconf_env_board option in projectconf:

[env:diecimilaatmega328]
platform = atmelavr
board = diecimilaatmega328

You can override default Arduino Duemilanove or Diecimila ATmega328 settings per build environment using board_*** option, where *** is a JSON object path from board manifest diecimilaatmega328.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:diecimilaatmega328]
platform = atmelavr
board = diecimilaatmega328

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Arduino Duemilanove or Diecimila ATmega328 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

  • Compatible Tools — debugging_tool_simavr · On-board — Yes · Default — Yes

🌈 Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🦋 Arduino Esplora 🦋

📜 Contents 📜

  • Arduino Esplora
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💖 Hardware 💖

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Arduino

⚙️ Configuration ⚙️

Please use esplora ID for projectconf_env_board option in projectconf:

[env:esplora]
platform = atmelavr
board = esplora

You can override default Arduino Esplora settings per build environment using board_*** option, where *** is a JSON object path from board manifest esplora.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:esplora]
platform = atmelavr
board = esplora

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Arduino Esplora has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

  • Compatible Tools — debugging_tool_simavr · On-board — Yes · Default — Yes

🌈 Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🎀 Arduino Ethernet 🎀

📜 Contents 📜

  • Arduino Ethernet
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💖 Hardware 💖

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Arduino

⚙️ Configuration ⚙️

Please use ethernet ID for projectconf_env_board option in projectconf:

[env:ethernet]
platform = atmelavr
board = ethernet

You can override default Arduino Ethernet settings per build environment using board_*** option, where *** is a JSON object path from board manifest ethernet.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:ethernet]
platform = atmelavr
board = ethernet

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the projectconf_debug_tool option in projectconf. iykyk 💅

Arduino Ethernet has an on-board debug probe and IS READY for debugging — like, fr fr ready. You do not need to use or buy an external debug probe. We love that for you 🫶

Compatible Tools (Arduino Ethernet):

  • debugging_tool_simavr — On-board: Yes, Default: Yes ✨

Frameworks:

  • framework_arduino — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior honestly 🎀

🦋 Arduino Fio

Contents

  • Arduino Fio
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. lowkey a whole vibe ✨

  • Microcontroller — ATMEGA328P
  • Frequency — 8MHz
  • Flash — 30KB
  • RAM — 2KB
  • Vendor — Arduino

Configuration

Please use fio ID for projectconf_env_board option in projectconf:

[env:fio]
platform = atmelavr
board = fio

You can override default Arduino Fio settings per build environment using board_*** option, where *** is a JSON object path from board manifest fio.json. For example, board_build.mcu, board_build.f_cpu, etc. 👑

[env:fio]
platform = atmelavr
board = fio

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. obsessed 😭

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. not me reminding you twice but like, install the drivers bestie 💀

You can switch between debugging tools using the projectconf_debug_tool option in projectconf.

Arduino Fio has an on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. periodt 💅

Compatible Tools (Arduino Fio):

  • debugging_tool_simavr — On-board: Yes, Default: Yes 🌸

Frameworks:

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ate, no crumbs 🌈

💜 Arduino Industrial 101

Contents

  • Arduino Industrial 101
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. same energy, different board, we stay winning 🧚

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Arduino

Configuration

Please use chiwawa ID for projectconf_env_board option in projectconf:

[env:chiwawa]
platform = atmelavr
board = chiwawa

You can override default Arduino Industrial 101 settings per build environment using board_*** option, where *** is a JSON object path from board manifest chiwawa.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:chiwawa]
platform = atmelavr
board = chiwawa

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. literally zero config, we're so back 😭

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. yes this is the same warning, yes it still applies, don't skip it 🙈

You can switch between debugging tools using the projectconf_debug_tool option in projectconf.

Arduino Industrial 101 has an on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. no cap 🫶

Compatible Tools (Arduino Industrial 101):

  • debugging_tool_simavr — On-board: Yes, Default: Yes ⭐

Frameworks:

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. main character framework energy 👑

🍓 Arduino Leonardo

Contents

  • Arduino Leonardo
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. iconic behavior honestly ✨

Here's the spec sheet bestie, all the deets:

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Arduino

Configuration 🎀

Please use leonardo ID for projectconf_env_board option in projectconf:

[env:leonardo]
platform = atmelavr
board = leonardo

You can override default Arduino Leonardo settings per build environment using board_*** option, where *** is a JSON object path from board manifest leonardo.json. For example, board_build.mcu, board_build.f_cpu, etc. so much power in your hands fr fr 💅

[env:leonardo]
platform = atmelavr
board = leonardo

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛

piodebug — "1-click" solution for debugging with a zero configuration. one click and you're literally debugging, no cap 😭✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Arduino Leonardo has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. she came prepared, main character energy 💖

Compatible tools, on-board status and default status:

  • debugging_tool_simavr — On-board: Yes — Default: Yes

Frameworks 🧚

The framework lineup for this board:

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. she's giving artsy AND technical, obsessed 🌸

🌈 Arduino Leonardo ETH 🌈

Contents 📋

  • Arduino Leonardo ETH
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming ✨

Spec sheet, no gatekeeping:

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Arduino

Configuration 🎀

Please use leonardoeth ID for projectconf_env_board option in projectconf:

[env:leonardoeth]
platform = atmelavr
board = leonardoeth

You can override default Arduino Leonardo ETH settings per build environment using board_*** option, where *** is a JSON object path from board manifest leonardoeth.json. For example, board_build.mcu, board_build.f_cpu, etc. yes bestie you can remix it however you want 💅

[env:leonardoeth]
platform = atmelavr
board = leonardoeth

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛

piodebug — "1-click" solution for debugging with a zero configuration. zero config is the vibe check I needed today 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Arduino Leonardo ETH has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. built-in queen behavior 👑

Compatible tools, on-board status and default status:

  • debugging_tool_simavr — On-board: Yes — Default: Yes

Frameworks 🧚

The framework lineup for this board:

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. literally the whole creative-coding buffet 🍓

🌸 Arduino LilyPad ATmega168 🌸

Contents 📋

  • Arduino LilyPad ATmega168
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming ✨

Spec sheet time, and yes it's tiny but mighty:

  • Microcontroller — ATMEGA168
  • Frequency — 8MHz
  • Flash — 14KB
  • RAM — 1KB
  • Vendor — Arduino

Configuration 🎀

Please use lilypadatmega168 ID for projectconf_env_board option in projectconf:

[env:lilypadatmega168]
platform = atmelavr
board = lilypadatmega168

You can override default Arduino LilyPad ATmega168 settings per build environment using board_*** option, where *** is a JSON object path from board manifest lilypadatmega168.json. For example, board_build.mcu, board_build.f_cpu, etc. customization is self-care fr fr 💅

[env:lilypadatmega168]
platform = atmelavr
board = lilypadatmega168

; change microcontroller
board_build.mcu = atmega168

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛

piodebug — "1-click" solution for debugging with a zero configuration. click once and slay 💖

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging_tools using the projectconf_debug_tool option in projectconf. 💅

Arduino LilyPad ATmega168 has an on-board debug probe and is IS READY for debugging. You do NOT need to use or buy an external debug probe, bestie. Save your coins. 🫶

Compatible tools, on-board, default — the whole vibe check: 🌈

  • debugging_tool_simavr — on-board: Yes ✨ default: Yes ✨

Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving maker energy, fr fr. 🎀

Arduino LilyPad ATmega328 🦋

Contents 📜

  • Arduino LilyPad ATmega328
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 💖

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. Lowkey iconic. 🔥

  • Microcontroller: ATMEGA328P
  • Frequency: 8MHz
  • Flash: 30KB
  • RAM: 2KB
  • Vendor: Arduino

Configuration ⚙️

Please use the lilypadatmega328 ID for the projectconf_env_board option in projectconf:

[env:lilypadatmega328]
platform = atmelavr
board = lilypadatmega328

You can override the default Arduino LilyPad ATmega328 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest lilypadatmega328.json. For example, board_build.mcu, board_build.f_cpu, etc. Customize away, bestie. 💅

[env:lilypadatmega328]
platform = atmelavr
board = lilypadatmega328

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. Main character energy, no cap. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Do not skip this part, I'm begging. 😭

You can switch between debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino LilyPad ATmega328 has an on-board debug probe and IS READY for debugging. You don't need to use or buy an external debug probe. Periodt. 🫶

Compatible tools, on-board, default: 🌈

  • debugging_tool_simavr — on-board: Yes ✨ default: Yes ✨

Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Obsessed. 🎀

Arduino LilyPad USB 🌟

Contents 📜

  • Arduino LilyPad USB
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 💖

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. Chef's kiss. 🔥

  • Microcontroller: ATMEGA32U4
  • Frequency: 8MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: Arduino

Configuration ⚙️

Please use the LilyPadUSB ID for the projectconf_env_board option in projectconf:

[env:LilyPadUSB]
platform = atmelavr
board = LilyPadUSB

You can override the default Arduino LilyPad USB settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest LilyPadUSB.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:LilyPadUSB]
platform = atmelavr
board = LilyPadUSB

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. Iconic behaviour, honestly. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Install the drivers, bestie, I am not playing. 😭

You can switch between debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino LilyPad USB has an on-board debug probe and IS READY for debugging. You don't need to use or buy an external debug probe. Slay. 🫶

Compatible tools, on-board, default: 🌈

  • debugging_tool_simavr — on-board: Yes ✨ default: Yes ✨

Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Ate and left no crumbs. 🎀

Arduino Mega ADK 👑

Contents 📜

  • Arduino Mega ADK
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

✨ Hardware ✨

Okay bestie, gather round 💖 Platform platform_atmelavr: the Atmel AVR 8-bit MCUs are literally that girl — they serve a unique combo of performance, power efficiency and design flexibility all at once. They're optimized to speed time to market (and easily adapt to new ones, no biggie), and they're built on the industry's most code-efficient architecture for C and assembly programming. Iconic behavior fr fr. 👑

  • Microcontroller — ATMEGA2560
  • Frequency — 16MHz
  • Flash — 248KB
  • RAM — 8KB
  • Vendor — Arduino

✨ Configuration ✨

Heads up bestie 🎀 please use the megaADK ID for the projectconf_env_board option in projectconf:

[env:megaADK]
platform = atmelavr
board = megaADK

You can override the default Arduino Mega ADK settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest megaADK.json ✨ For example, board_build.mcu, board_build.f_cpu, etc. — the way that just works? obsessed. 💅

[env:megaADK]
platform = atmelavr
board = megaADK

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 16000000L

✨ Debugging ✨

piodebug — the "1-click" solution for debugging with a zero configuration. Main character energy honestly. 🦋

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Don't skip this bestie, it's giving important. 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Mega ADK has an on-board debug probe and IS READY for debugging 🔥 You don't need to use/buy an external debug probe. Periodt.

  • Compatible Tools
    • debugging_tool_simavr — On-board: Yes — Default: Yes

✨ Frameworks ✨

  • Name — framework_arduino
  • Description — Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 🌈✨

🌸 Arduino Mega or Mega 2560 ATmega1280 🌸

✨ Contents ✨

  • Arduino Mega or Mega 2560 ATmega1280
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

✨ Hardware ✨

Okay so 💖 Platform platform_atmelavr: the Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they're based on the industry's most code-efficient architecture for C and assembly programming. No cap, they ate. 👑

  • Microcontroller — ATMEGA1280
  • Frequency — 16MHz
  • Flash — 124KB
  • RAM — 8KB
  • Vendor — Arduino

✨ Configuration ✨

Bestie listen 🎀 please use the megaatmega1280 ID for the projectconf_env_board option in projectconf:

[env:megaatmega1280]
platform = atmelavr
board = megaatmega1280

You can override the default Arduino Mega or Mega 2560 ATmega1280 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest megaatmega1280.json ✨ For example, board_build.mcu, board_build.f_cpu, etc. — lowkey the easiest glow-up ever. 💅

[env:megaatmega1280]
platform = atmelavr
board = megaatmega1280

; change microcontroller
board_build.mcu = atmega1280

; change MCU frequency
board_build.f_cpu = 16000000L

✨ Debugging ✨

piodebug — the "1-click" solution for debugging with a zero configuration. It's giving effortless. 🦋

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Not optional bestie, fr fr. 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Mega or Mega 2560 ATmega1280 has an on-board debug probe and IS READY for debugging 🔥 You don't need to use/buy an external debug probe. Slay.

  • Compatible Tools
    • debugging_tool_simavr — On-board: Yes — Default: Yes

✨ Frameworks ✨

  • Name — framework_arduino
  • Description — Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 🌈✨

💜 Arduino Mega or Mega 2560 ATmega2560 (Mega 2560) 💜

✨ Contents ✨

  • Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

✨ Hardware ✨

Okay so 💖 Platform platform_atmelavr: the Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they're based on the industry's most code-efficient architecture for C and assembly programming. Truly built different. 👑

  • Microcontroller — ATMEGA2560
  • Frequency — 16MHz
  • Flash — 248KB
  • RAM — 8KB
  • Vendor — Arduino

✨ Configuration ✨

Bestie real talk 🎀 please use the megaatmega2560 ID for the projectconf_env_board option in projectconf:

[env:megaatmega2560]
platform = atmelavr
board = megaatmega2560

You can override the default Arduino Mega or Mega 2560 ATmega2560 (Mega 2560) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest megaatmega2560.json ✨ For example, board_build.mcu, board_build.f_cpu, etc. — the way this just clicks into place?? obsessed. 💅

[env:megaatmega2560]
platform = atmelavr
board = megaatmega2560

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 16000000L

✨ Debugging ✨

piodebug — the "1-click" solution for debugging with a zero configuration. Zero config, maximum vibes. 🦋

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

Okay so you can hop between debugging tools whenever you want, using the projectconf_debug_tool option inside projectconf. Mix and match, it's giving ✨customization✨.

And the bestie news of the day: Arduino Mega or Mega 2560 ATmega2560 (Mega 2560) has an on-board debug probe and IS READY for debugging. Periodt. You do not need to use or buy an external debug probe. Not me saving you money 💅

  • Compatible Tools — debugging_tool_simavr
    • On-board: Yes
    • Default: Yes

🌸 Frameworks 🌸

  • Name — framework_arduino
    • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
  • Name — framework_simba
    • Description: Simba is an RTOS and build framework. It aims to make embedded programming easy and portable.

🦋 Arduino Micro 🦋

✨ Contents ✨

  • Arduino Micro
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🎀 Hardware 🎀

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Arduino

💖 Configuration 💖

Bestie, please use the micro ID for the projectconf_env_board option in projectconf:

[env:micro]
platform = atmelavr
board = micro

You can override default Arduino Micro settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest micro.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:micro]
platform = atmelavr
board = micro

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🔥 Debugging 🔥

piodebug — the "1-click" solution for debugging with a zero configuration. Iconic behavior honestly.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Micro has an on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. No cap 🫶

  • Compatible Tools — debugging_tool_simavr
    • On-board: Yes
    • Default: Yes

🌈 Frameworks 🌈

  • Name — framework_arduino
    • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🍓 Arduino Mini ATmega168 🍓

✨ Contents ✨

  • Arduino Mini ATmega168
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🎀 Hardware 🎀

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA168
  • Frequency — 16MHz
  • Flash — 14KB
  • RAM — 1KB
  • Vendor — Arduino

💖 Configuration 💖

Please use the miniatmega168 ID for the projectconf_env_board option in projectconf:

[env:miniatmega168]
platform = atmelavr
board = miniatmega168

You can override default Arduino Mini ATmega168 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest miniatmega168.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:miniatmega168]
platform = atmelavr
board = miniatmega168

; change microcontroller
board_build.mcu = atmega168

; change MCU frequency
board_build.f_cpu = 16000000L

🔥 Debugging 🔥

piodebug — the "1-click" solution for debugging with a zero configuration. Lowkey the easiest debugging setup you'll ever touch.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Mini ATmega168 has an on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 💜

  • Compatible Tools — debugging_tool_simavr
    • On-board: Yes
    • Default: Yes

Frameworks 💖

okay bestie, here's the framework tea for this board — it's giving very Arduino core energy:

  • Name: framework_arduino
    • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

Arduino Mini ATmega328 👑

Contents 🧾

  • Arduino Mini ATmega328
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

no cap, the hardware specs are giving:

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 28KB
  • RAM: 2KB
  • Vendor: Arduino

Configuration ⚙️

Please use miniatmega328 ID for projectconf_env_board option in projectconf:

[env:miniatmega328]
platform = atmelavr
board = miniatmega328

You can override default Arduino Mini ATmega328 settings per build environment using board_*** option, where *** is a JSON object path from board manifest miniatmega328.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:miniatmega328]
platform = atmelavr
board = miniatmega328

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration. literally the easiest slay.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Arduino Mini ATmega328 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. periodt.

  • Compatible Tools: debugging_tool_simavr — On-board: Yes, Default: Yes

Frameworks 💖

  • Name: framework_arduino
    • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

Arduino NG or older ATmega168 🦋

Contents 🧾

  • Arduino NG or older ATmega168
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

lowkey obsessed with these specs:

  • Microcontroller: ATMEGA168
  • Frequency: 16MHz
  • Flash: 14KB
  • RAM: 1KB
  • Vendor: Arduino

Configuration ⚙️

Please use atmegangatmega168 ID for projectconf_env_board option in projectconf:

[env:atmegangatmega168]
platform = atmelavr
board = atmegangatmega168

You can override default Arduino NG or older ATmega168 settings per build environment using board_*** option, where *** is a JSON object path from board manifest atmegangatmega168.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:atmegangatmega168]
platform = atmelavr
board = atmegangatmega168

; change microcontroller
board_build.mcu = atmega168

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Arduino NG or older ATmega168 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

  • Compatible Tools: debugging_tool_simavr — On-board: Yes, Default: Yes

Frameworks 💖

  • Name: framework_arduino
    • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

Arduino NG or older ATmega8 🌸

Contents 🧾

  • Arduino NG or older ATmega8
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs are literally that girl — a unique combo of performance, power efficiency and design flexibility. Optimized to speed time to market (and to easily adapt to new ones), they're built on the industry's most code-efficient architecture for C and assembly programming. 💅

  • Microcontroller: ATMEGA8
  • Frequency: 16MHz
  • Flash: 7KB
  • RAM: 1KB
  • Vendor: Arduino

⚙️ Configuration

bestie, use the atmegangatmega8 ID for the projectconf_env_board option in projectconf:

[env:atmegangatmega8]
platform = atmelavr
board = atmegangatmega8

You can override the default Arduino NG or older ATmega8 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest atmegangatmega8.json. For example, board_build.mcu, board_build.f_cpu, etc. 👑

[env:atmegangatmega8]
platform = atmelavr
board = atmegangatmega8

; change microcontroller
board_build.mcu = atmega8

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. no cap ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino NG or older ATmega8 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🫶

Compatible Tools · On-board · Default:

  • debugging_tool_simavr — On-board: Yes, Default: Yes

🧚 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

🎀 Arduino Nano ATmega168

📋 Contents

  • Arduino Nano ATmega168
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs are giving unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market (and easily adapt to new ones), they're based on the industry's most code-efficient architecture for C and assembly programming. 💖

  • Microcontroller: ATMEGA168
  • Frequency: 16MHz
  • Flash: 14KB
  • RAM: 1KB
  • Vendor: Arduino

⚙️ Configuration

Please use the nanoatmega168 ID for the projectconf_env_board option in projectconf:

[env:nanoatmega168]
platform = atmelavr
board = nanoatmega168

You can override the default Arduino Nano ATmega168 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest nanoatmega168.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:nanoatmega168]
platform = atmelavr
board = nanoatmega168

; change microcontroller
board_build.mcu = atmega168

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. iconic. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Nano ATmega168 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🫶

Compatible Tools · On-board · Default:

  • debugging_tool_simavr — On-board: Yes, Default: Yes

🧚 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

👑 Arduino Nano ATmega328

📋 Contents

  • Arduino Nano ATmega328
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs are serving a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market (and easily adapt to new ones), they're based on the industry's most code-efficient architecture for C and assembly programming. 🔥

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 30KB
  • RAM: 2KB
  • Vendor: Arduino

⚙️ Configuration

Please use the nanoatmega328 ID for the projectconf_env_board option in projectconf:

[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328

You can override the default Arduino Nano ATmega328 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest nanoatmega328.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. periodt. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

Okay so you can switch between your debugging_tools using the projectconf_debug_tool option in projectconf. Slay. 💅

The Arduino Nano ATmega328 has an on-board debug probe and is READY for debugging. You literally do not need to use or buy an external debug probe. Periodt. 🎀

Compatible tools, bestie:

  • debugging_tool_simavr — On-board: Yes · Default: Yes ✨

Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving maker main character energy. 🦋
  • framework_simba — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. Lowkey iconic. 👑

Arduino Nano ATmega328 (New Bootloader) 💖

Contents

  • Arduino Nano ATmega328 (New Bootloader)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they're based on the industry's most code-efficient architecture for C and assembly programming. No cap. 🔥

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 30KB
  • RAM — 2KB
  • Vendor — Arduino

Configuration

Please use the nanoatmega328new ID for the projectconf_env_board option in projectconf:

[env:nanoatmega328new]
platform = atmelavr
board = nanoatmega328new

You can override the default Arduino Nano ATmega328 (New Bootloader) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest nanoatmega328new.json. For example, board_build.mcu, board_build.f_cpu, etc. So flexible, we love that for you. 🙈

[env:nanoatmega328new]
platform = atmelavr
board = nanoatmega328new

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Don't skip this step bestie, it's giving mandatory. 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Nano ATmega328 (New Bootloader) has an on-board debug probe and is READY for debugging. You don't need to use or buy an external debug probe. 🎀

Compatible tools:

  • debugging_tool_simavr — On-board: Yes · Default: Yes ✨

Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋
  • framework_simba — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. 👑

Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz) 💜

Contents

  • Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they're based on the industry's most code-efficient architecture for C and assembly programming. Fr fr. 🔥

  • Microcontroller — ATMEGA168
  • Frequency — 8MHz
  • Flash — 14KB
  • RAM — 1KB
  • Vendor — Arduino

Configuration

Please use the pro8MHzatmega168 ID for the projectconf_env_board option in projectconf:

[env:pro8MHzatmega168]
platform = atmelavr
board = pro8MHzatmega168

You can override the default Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest pro8MHzatmega168.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:pro8MHzatmega168]
platform = atmelavr
board = pro8MHzatmega168

; change microcontroller
board_build.mcu = atmega168

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz) has an on-board debug probe and is READY for debugging. You don't need to use or buy an external debug probe. 👑

Compatible tools:

  • debugging_tool_simavr — On-board: Yes · Default: Yes ✨

🌸 Frameworks 🌸

okay so here's the framework sitch, bestie:

  • framework_arduino — the Arduino Wiring-based Framework 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences ✨

👑 Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz) 👑

💅 Contents 💅

  • Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 🔥

  • Microcontroller — ATMEGA168
  • Frequency — 16MHz
  • Flash — 14KB
  • RAM — 1KB
  • Vendor — Arduino

⚙️ Configuration ⚙️

Please use pro16MHzatmega168 ID for projectconf_env_board option in projectconf:

[env:pro16MHzatmega168]
platform = atmelavr
board = pro16MHzatmega168

You can override default Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz) settings per build environment using board_*** option, where *** is a JSON object path from board manifest pro16MHzatmega168.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:pro16MHzatmega168]
platform = atmelavr
board = pro16MHzatmega168

; change microcontroller
board_build.mcu = atmega168

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz) has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe 💅

  • debugging_tool_simavr — On-board: Yes — Default: Yes

🌈 Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences ✨

💜 Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz) 💜

🎀 Contents 🎀

  • Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 🔥

  • Microcontroller — ATMEGA328P
  • Frequency — 8MHz
  • Flash — 30KB
  • RAM — 2KB
  • Vendor — Arduino

⚙️ Configuration ⚙️

Please use pro8MHzatmega328 ID for projectconf_env_board option in projectconf:

[env:pro8MHzatmega328]
platform = atmelavr
board = pro8MHzatmega328

You can override default Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz) settings per build environment using board_*** option, where *** is a JSON object path from board manifest pro8MHzatmega328.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:pro8MHzatmega328]
platform = atmelavr
board = pro8MHzatmega328

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz) has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe 💅

  • debugging_tool_simavr — On-board: Yes — Default: Yes

🌈 Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences ✨

🌸 Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz) 🌸

🎀 Contents 🎀

  • Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks
  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 30KB
  • RAM — 2KB
  • Vendor — Arduino

🎀 Configuration

bestie listen. use the pro16MHzatmega328 ID for the projectconf_env_board option inside projectconf, ok? like this:

[env:pro16MHzatmega328]
platform = atmelavr
board = pro16MHzatmega328

and you can override the default Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest pro16MHzatmega328.json. for example board_build.mcu, board_build.f_cpu, etc. 💅

[env:pro16MHzatmega328]
platform = atmelavr
board = pro16MHzatmega328

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. iconic fr.

WARNING: you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further instructions and configuration information. don't skip this bestie 😭

you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz) has an on-board debug probe and IS READY for debugging. you don't need to use/buy an external debug probe. she comes prepared 💅✨

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

🧚 Frameworks

  • Name — framework_arduino
  • Description — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

🤖 Arduino Robot Control

📜 Contents

  • Arduino Robot Control
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. no cap, she's built different 🔥

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Arduino

🎀 Configuration

use the robotControl ID for the projectconf_env_board option in projectconf, periodt:

[env:robotControl]
platform = atmelavr
board = robotControl

you can override the default Arduino Robot Control settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest robotControl.json. for example board_build.mcu, board_build.f_cpu, etc. 🫶

[env:robotControl]
platform = atmelavr
board = robotControl

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. still slaying ✨

WARNING: you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further instructions and configuration information. seriously, do the drivers first 🙈

you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Robot Control has an on-board debug probe and IS READY for debugging. you don't need to use/buy an external debug probe. main character energy honestly 👑

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

🧚 Frameworks

  • Name — framework_arduino
  • Description — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

🦋 Arduino Robot Motor

📜 Contents

  • Arduino Robot Motor
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. yes she said it again and she MEANT it ⭐

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Arduino

🎀 Configuration

use the robotMotor ID for the projectconf_env_board option in projectconf. iykyk 💅

[env:robotMotor]
platform = atmelavr
board = robotMotor

you can override the default Arduino Robot Motor settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest robotMotor.json. for example board_build.mcu, board_build.f_cpu, etc. 🌈

[env:robotMotor]
platform = atmelavr
board = robotMotor

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: bestie you're gonna need to install debug tool drivers depending on your system 💀 like it's not optional. Please click on the compatible debug tool below for the further instructions and configuration information, okay? 🙏

You can switch between debugging_tools using the projectconf_debug_tool option in projectconf ✨ it's giving customizable.

Arduino Robot Motor has an on-board debug probe and is READY for debugging 👑 like genuinely ready, no cap. You don't need to use/buy an external debug probe 💅

Compatible Tools for it:

  • debugging_tool_simavr — On-board: Yes · Default: Yes 🎀

🌈 Frameworks 🌈

  • framework_arduino — the Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 🦋✨

🎀 Arduino Uno 🎀

Contents 📋

  • Arduino Uno
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Platform platform_atmelavr: Atmel AVR 8-bit MCUs are giving iconic — a truly unique combo of performance, power efficiency and design flexibility. They're optimized to speed up time-to-market (and to easily adapt to new ones 👀), all built on the industry's most code-efficient architecture for C and assembly programming. Periodt. 💅

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Arduino

✨ Configuration ✨

okay bestie listen 👑 — please use the uno ID for the projectconf_env_board option in projectconf:

[env:uno]
platform = atmelavr
board = uno

You can override the default Arduino Uno settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest uno.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:uno]
platform = atmelavr
board = uno

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. no cap, it's that easy ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this part fr fr 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Uno has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. slay 💚

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

🦋 Frameworks 🦋

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. literally the main character of frameworks 💖
  • framework_simba — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. 🧚

🌸 Arduino Yun 🌸

🎀 Contents 🎀

  • Arduino Yun
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🌈 Hardware 🌈

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Arduino

✨ Configuration ✨

Please use the yun ID for the projectconf_env_board option in projectconf:

[env:yun]
platform = atmelavr
board = yun

You can override default Arduino Yun settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest yun.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:yun]
platform = atmelavr
board = yun

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. please don't ignore this, it'll save you so much pain 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Yun has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. obsessed 💚

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

🦋 Frameworks 🦋

  • Name — Description
  • framework_arduino — the Arduino Wiring-based Framework 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. yes bestie, literally all of it. ✨

🦋 Arduino Yun Mini 🦋

📜 Contents 📜

  • Arduino Yun Mini
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🌸 Hardware 🌸

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. periodt. 💅

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Arduino

🎀 Configuration 🎀

okay so please use the yunmini ID for the projectconf_env_board option in projectconf:

[env:yunmini]
platform = atmelavr
board = yunmini

You can override the default Arduino Yun Mini settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest yunmini.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:yunmini]
platform = atmelavr
board = yunmini

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

💀 Debugging 💀

piodebug — the "1-click" solution for debugging with a zero configuration. iconic. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on a compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Arduino Yun Mini has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. no cap. 😭💖

  • Compatible Tools: debugging_tool_simavr
    • On-board: Yes
    • Default: Yes

🌈 Frameworks 🌈

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💜

⭐ Atmel AT90PWM216 ⭐

📜 Contents 📜

  • Atmel AT90PWM216
    • Hardware
    • Configuration
    • Debugging

🌸 Hardware 🌸

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 💅

  • Microcontroller — AT90PWM216
  • Frequency — 16MHz
  • Flash — 16KB
  • RAM — 1KB
  • Vendor — Microchip

🎀 Configuration 🎀

Please use the at90pwm216 ID for the projectconf_env_board option in projectconf: 🦋

[env:at90pwm216]
platform = atmelavr
board = at90pwm216

You can override the default Atmel AT90PWM216 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest at90pwm216.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:at90pwm216]
platform = atmelavr
board = at90pwm216

; change microcontroller
board_build.mcu = at90pwm216

; change MCU frequency
board_build.f_cpu = 16000000L

💀 Debugging 💀

piodebug currently does not support the Atmel AT90PWM216 board. 💔 sad but true bestie.


  • Microcontroller: AT90PWM316
  • Frequency: 16MHz
  • Flash: 16KB
  • RAM: 1KB
  • Vendor: Microchip

✨ Configuration ✨

Okay bestie, listen — you gotta use the at90pwm316 ID for the projectconf_env_board option inside projectconf. Like, that's the whole vibe:

[env:at90pwm316]
platform = atmelavr
board = at90pwm316

And here's the fun part 💅 — you can override the default Atmel AT90PWM316 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest at90pwm316.json. So like, board_build.mcu, board_build.f_cpu, etc. All of them. Iconic.

[env:at90pwm316]
platform = atmelavr
board = at90pwm316

; change microcontroller
board_build.mcu = at90pwm316

; change MCU frequency
board_build.f_cpu = 16000000L

💀 Debugging 💀

ngl this is the sad part — piodebug currently does not support the Atmel AT90PWM316 board. That's it, that's the whole section. 😭


🦋 BQ ZUM BT-328 🦋

🎀 Contents 🎀

  • BQ ZUM BT-328
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

✨ Hardware ✨

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming.

The board tea ☕:

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 28KB
  • RAM: 2KB
  • Vendor: BQ

✨ Configuration ✨

Please use the zumbt328 ID for the projectconf_env_board option in projectconf:

[env:zumbt328]
platform = atmelavr
board = zumbt328

You can override the default BQ ZUM BT-328 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest zumbt328.json. For example, board_build.mcu, board_build.f_cpu, etc.:

[env:zumbt328]
platform = atmelavr
board = zumbt328

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🌸 Debugging 🌸

piodebug — the "1-click" solution for debugging with a zero configuration. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

BQ ZUM BT-328 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Periodt. 💅

Compatible tools, on-board status, and default status:

  • debugging_tool_simavr — On-board: Yes, Default: Yes

🌈 Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🧚 BitWizard Raspduino 🧚

🎀 Contents 🎀

  • BitWizard Raspduino
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

✨ Hardware ✨

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming.

The specs, bestie 📋:

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 30KB
  • RAM: 2KB
  • Vendor: BitWizard

✨ Configuration ✨

Please use the raspduino ID for the projectconf_env_board option in projectconf:

[env:raspduino]
platform = atmelavr
board = raspduino

You can override the default BitWizard Raspduino settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest raspduino.json. For example, board_build.mcu, board_build.f_cpu, etc.:

[env:raspduino]
platform = atmelavr
board = raspduino

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🌸 Debugging 🌸

piodebug — the "1-click" solution for debugging with a zero configuration. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

BitWizard Raspduino has an on-board debug probe and it IS READY for debugging 💅 no cap. You literally do not need to use or buy an external debug probe — bestie, save your money. 🫶

┌───────────────────────┬──────────┬─────────┐
│ Compatible Tools      │ On-board │ Default │
├───────────────────────┼──────────┼─────────┤
│ debugging_tool_simavr │ Yes      │ Yes     │
└───────────────────────┴──────────┴─────────┘

🌈 Frameworks 🌈

here's what this board fw with, babes:

┌───────────────────┬────────────────────────────┐
│ Name              │ Description                │
├───────────────────┼────────────────────────────┤
│ framework_arduino │ Arduino Wiring-based       │
│                   │ Framework allows writing   │
│                   │ cross-platform software to │
│                   │ control devices attached   │
│                   │ to a wide range of Arduino │
│                   │ boards to create all kinds │
│                   │ of creative coding,        │
│                   │ interactive objects,       │
│                   │ spaces or physical         │
│                   │ experiences.               │
└───────────────────┴────────────────────────────┘

👑 Controllino Maxi 👑

🎀 Contents 🎀

  • Controllino Maxi
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

okay so the platform is platform_atmelavr ✨ Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility, and they're optimized to speed time to market — and to easily adapt to new ones — because they're based on the industry's most code-efficient architecture for C and assembly programming. efficiency queen behavior, honestly 💅

┌─────────────────┬─────────────┐
│ Microcontroller │ ATMEGA2560  │
├─────────────────┼─────────────┤
│ Frequency       │ 16MHz       │
├─────────────────┼─────────────┤
│ Flash           │ 248KB       │
├─────────────────┼─────────────┤
│ RAM             │ 8KB         │
├─────────────────┼─────────────┤
│ Vendor          │ Controllino │
└─────────────────┴─────────────┘

⚙️ Configuration ⚙️

bestie, please use the controllino_maxi ID for the projectconf_env_board option in projectconf 🫶 like so:

[env:controllino_maxi]
platform = atmelavr
board = controllino_maxi

and you can override the default Controllino Maxi settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest controllino_maxi.json. For example, board_build.mcu, board_build.f_cpu, etc. etc. ✨

[env:controllino_maxi]
platform = atmelavr
board = controllino_maxi

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. iconic, fr fr.

WARNING: ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this step, i'm begging 🙈

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Controllino Maxi has an on-board debug probe and IS READY for debugging 💅 You don't need to use/buy an external debug probe. periodt.

┌───────────────────────┬──────────┬─────────┐
│ Compatible Tools      │ On-board │ Default │
├───────────────────────┼──────────┼─────────┤
│ debugging_tool_simavr │ Yes      │ Yes     │
└───────────────────────┴──────────┴─────────┘

🌈 Frameworks 🌈

┌───────────────────┬────────────────────────────┐
│ Name              │ Description                │
├───────────────────┼────────────────────────────┤
│ framework_arduino │ Arduino Wiring-based       │
│                   │ Framework allows writing   │
│                   │ cross-platform software to │
│                   │ control devices attached   │
│                   │ to a wide range of Arduino │
│                   │ boards to create all kinds │
│                   │ of creative coding,        │
│                   │ interactive objects,       │
│                   │ spaces or physical         │
│                   │ experiences.               │
└───────────────────┴────────────────────────────┘

💖 Controllino Maxi Automation 💖

🎀 Contents 🎀

  • Controllino Maxi Automation
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

same energy as before, bestie — the platform is platform_atmelavr ✨ Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. They're optimized to speed time to market — and to easily adapt to new ones — and they're built on the industry's most code-efficient architecture for C and assembly programming. 🦋

┌─────────────────┬─────────────┐
│ Microcontroller │ ATMEGA2560  │
├─────────────────┼─────────────┤
│ Frequency       │ 16MHz       │
├─────────────────┼─────────────┤
│ Flash           │ 248KB       │
├─────────────────┼─────────────┤
│ RAM             │ 8KB         │
├─────────────────┼─────────────┤
│ Vendor          │ Controllino │
└─────────────────┴─────────────┘

⚙️ Configuration ⚙️

Please use the controllino_maxi_automation ID for the projectconf_env_board option in projectconf:

[env:controllino_maxi_automation]
platform = atmelavr
board = controllino_maxi_automation

You can override the default Controllino Maxi Automation settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest controllino_maxi_automation.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:controllino_maxi_automation]
platform = atmelavr
board = controllino_maxi_automation

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. still iconic, still obsessed 💅

WARNING: ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Controllino Maxi Automation has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 😭 so convenient.

┌───────────────────────┬──────────┬─────────┐
│ Compatible Tools      │ On-board │ Default │
├───────────────────────┼──────────┼─────────┤
│ debugging_tool_simavr │ Yes      │ Yes     │
└───────────────────────┴──────────┴─────────┘

🌈 Frameworks 🌈

┌───────────────────┬────────────────────────────┐
│ Name              │ Description                │
├───────────────────┼────────────────────────────┤
│ framework_arduino │ Arduino Wiring-based       │
│                   │ Framework allows writing   │
│                   │ cross-platform software to │
│                   │ control devices attached   │
│                   │ to a wide range of Arduino │
│                   │ boards to create all kinds │
│                   │ of creative coding,        │
│                   │ interactive objects,       │
│                   │ spaces or physical         │
│                   │ experiences.               │
└───────────────────┴────────────────────────────┘

🚀 Controllino Mega 🚀

🎀 Contents 🎀

  • Controllino Mega
    • Hardware
    • Configuration
    • Debugging
  • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

  • Microcontroller — ATMEGA2560
  • Frequency — 16MHz
  • Flash — 248KB
  • RAM — 8KB
  • Vendor — Controllino

⚙️ Configuration

Please use controllino_mega ID for projectconf_env_board option in projectconf:

[env:controllino_mega]
platform = atmelavr
board = controllino_mega

You can override default Controllino Mega settings per build environment using board_*** option, where *** is a JSON object path from board manifest controllino_mega.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:controllino_mega]
platform = atmelavr
board = controllino_mega

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Controllino Mega has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

  • debugging_tool_simavr — On-board: Yes, Default: Yes

🎀 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌸 Controllino Mini 🌸

📜 Contents

  • Controllino Mini
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Controllino

⚙️ Configuration

Please use controllino_mini ID for projectconf_env_board option in projectconf:

[env:controllino_mini]
platform = atmelavr
board = controllino_mini

You can override default Controllino Mini settings per build environment using board_*** option, where *** is a JSON object path from board manifest controllino_mini.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:controllino_mini]
platform = atmelavr
board = controllino_mini

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Controllino Mini has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

  • debugging_tool_simavr — On-board: Yes, Default: Yes

🎀 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🦋 Digispark Pro 🦋

📜 Contents

  • Digispark Pro
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

  • Microcontroller — ATTINY167
  • Frequency — 16MHz
  • Flash — 14.50KB
  • RAM — 512B
  • Vendor — Digistump

⚙️ Configuration

Please use digispark-pro ID for projectconf_env_board option in projectconf:

[env:digispark-pro]
platform = atmelavr
board = digispark-pro

You can override default Digispark Pro settings per build environment using board_*** option, where *** is a JSON object path from board manifest digispark-pro.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:digispark-pro]
platform = atmelavr
board = digispark-pro

; change microcontroller
board_build.mcu = attiny167

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support Digispark Pro board.

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

🦋 Digispark Pro (16 MHz) (64 byte buffer)

📋 Contents

  • Digispark Pro (16 MHz) (64 byte buffer)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming 💅

  • Microcontroller: ATTINY167
  • Frequency: 16MHz
  • Flash: 14.50KB
  • RAM: 512B
  • Vendor: Digistump

⚙️ Configuration

Bestie, please use the digispark-pro64 ID for the projectconf_env_board option in projectconf:

[env:digispark-pro64]
platform = atmelavr
board = digispark-pro64

You can override the default Digispark Pro (16 MHz) (64 byte buffer) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest digispark-pro64.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:digispark-pro64]
platform = atmelavr
board = digispark-pro64

; change microcontroller
board_build.mcu = attiny167

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support the Digispark Pro (16 MHz) (64 byte buffer) board. 😭 no cap.

🧚 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

🌈 Digispark Pro (32 byte buffer)

📋 Contents

  • Digispark Pro (32 byte buffer)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming ✨

  • Microcontroller: ATTINY167
  • Frequency: 16MHz
  • Flash: 14.50KB
  • RAM: 512B
  • Vendor: Digistump

⚙️ Configuration

Please use the digispark-pro32 ID for the projectconf_env_board option in projectconf:

[env:digispark-pro32]
platform = atmelavr
board = digispark-pro32

You can override the default Digispark Pro (32 byte buffer) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest digispark-pro32.json. For example, board_build.mcu, board_build.f_cpu, etc. 💖

[env:digispark-pro32]
platform = atmelavr
board = digispark-pro32

; change microcontroller
board_build.mcu = attiny167

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug currently does not support the Digispark Pro (32 byte buffer) board. it's giving unsupported, fr fr 💀

🧚 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

🎀 Digispark USB

📋 Contents

  • Digispark USB
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming ⭐

  • Microcontroller: ATTINY85
  • Frequency: 16MHz
  • Flash: 5.87KB
  • RAM: 512B
  • Vendor: Digistump

⚙️ Configuration

Please use the digispark-tiny ID for the projectconf_env_board option in projectconf:

[env:digispark-tiny]
platform = atmelavr
board = digispark-tiny

You can override the default Digispark USB settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest digispark-tiny.json. For example, board_build.mcu, board_build.f_cpu, etc. 🦋

[env:digispark-tiny]
platform = atmelavr
board = digispark-tiny

; change microcontroller
board_build.mcu = attiny85

; change MCU frequency
board_build.f_cpu = 16500000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️ like seriously, don't skip this step bestie.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. 💜

  • debugging_tool_simavr — On-board: Yes · Default: Yes 💅
bestie the Digispark USB is literally built different — it's got the debug probe on the board itself and it is READY for debugging. No external probe, no buying anything, no cap. ✨

🎀 Frameworks 🎀

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices hooked up to a huge range of Arduino boards, so you can make every kind of creative coding project, interactive object, space or physical experience your heart desires 🦋

👑 Dwenguino 👑

Contents

  • Dwenguino
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: the Atmel AVR 8-bit MCUs are giving a truly unique combo of performance, power efficiency and design flexibility 🫶. They're optimized to speed up time to market — and to easily adapt to new ones — and they're built on the industry's most code-efficient architecture for C and assembly programming. Iconic behaviour honestly.

  • Microcontroller — AT90USB646
  • Frequency — 16MHz
  • Flash — 60KB
  • RAM — 2KB
  • Vendor — Dwengo

⚙️ Configuration ⚙️

Please use the dwenguino ID for the projectconf_env_board option in projectconf:

[env:dwenguino]
platform = atmelavr
board = dwenguino

You can override the default Dwenguino settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest dwenguino.json. For example board_build.mcu, board_build.f_cpu, etc. Obsessed with how flexible that is 💜

[env:dwenguino]
platform = atmelavr
board = dwenguino

; change microcontroller
board_build.mcu = at90usb646

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug currently does not support Dwenguino board. 😭 (not yet bestie, not yet)

🎀 Frameworks 🎀

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices hooked up to a huge range of Arduino boards, so you can make every kind of creative coding project, interactive object, space or physical experience your heart desires 🌈

💫 Elektor Uno R4 💫

Contents

  • Elektor Uno R4
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: the Atmel AVR 8-bit MCUs are giving a truly unique combo of performance, power efficiency and design flexibility 🫶. They're optimized to speed up time to market — and to easily adapt to new ones — and they're built on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA328PB
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Elektor

⚙️ Configuration ⚙️

Please use the elektor_uno_r4 ID for the projectconf_env_board option in projectconf:

[env:elektor_uno_r4]
platform = atmelavr
board = elektor_uno_r4

You can override the default Elektor Uno R4 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest elektor_uno_r4.json. For example board_build.mcu, board_build.f_cpu, etc. 💅

[env:elektor_uno_r4]
platform = atmelavr
board = elektor_uno_r4

; change microcontroller
board_build.mcu = atmega328pb

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug currently does not support Elektor Uno R4 board. 💀

🎀 Frameworks 🎀

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices hooked up to a huge range of Arduino boards, so you can make every kind of creative coding project, interactive object, space or physical experience your heart desires 🌸

🦋 Engduino 3 🦋

Contents

  • Engduino 3
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: the Atmel AVR 8-bit MCUs are giving a truly unique combo of performance, power efficiency and design flexibility 🫶. They're optimized to speed up time to market — and to easily adapt to new ones — and they're built on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA32U4
  • Frequency — 8MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Engduino

⚙️ Configuration ⚙️

Please use the engduinov3 ID for the projectconf_env_board option in projectconf:

[env:engduinov3]
platform = atmelavr
board = engduinov3

You can override the default Engduino 3 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest engduinov3.json. For example board_build.mcu, board_build.f_cpu, etc. ✨

[env:engduinov3]
platform = atmelavr
board = engduinov3

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. main character energy fr fr 💖

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

Oh and bestie, you can flip between your debugging tools whenever you want using the projectconf_debug_tool option inside projectconf. 💅

The Engduino 3 has an on-board debug probe and it is IS READY for debugging ✨ — you do not need to go buy some external debug probe, it's already living its best life onboard.

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes 🎀

Frameworks 🧚

  • framework_arduino — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

EnviroDIY Mayfly 🦋

Contents 📜

  • EnviroDIY Mayfly
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🛠️

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. They're optimized to speed time to market — and easily adapt to new ones — because they're based on the industry's most code-efficient architecture for C and assembly programming. No cap. 🔥

  • Microcontroller: ATMEGA1284P
  • Frequency: 8MHz
  • Flash: 127KB
  • RAM: 16KB
  • Vendor: EnviroDIY

Configuration ⚙️

Please use the mayfly ID for the projectconf_env_board option in projectconf:

[env:mayfly]
platform = atmelavr
board = mayfly

You can override the default EnviroDIY Mayfly settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest mayfly.json. For example board_build.mcu, board_build.f_cpu, etc. Obsessed with how flexible this is, honestly. 💖

[env:mayfly]
platform = atmelavr
board = mayfly

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛💀

piodebug — the "1-click" solution for debugging with a zero configuration. It's giving main character energy fr fr.

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for further instructions and configuration information. Don't skip this step bestie, I'm begging 😭

You can switch between your debugging tools using the projectconf_debug_tool option in projectconf.

The EnviroDIY Mayfly has an on-board debug probe and it is IS READY for debugging ✨ — you don't need to use or buy an external debug probe, it's already slaying onboard.

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes 👑

✨ Frameworks ✨

ok bestie, framework vibe check 💅 here's what this board can run:

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨✨ lowkey iconic, no cap.

🎀 FYSETC F6 V1.3 🎀

📑 Contents 📑

  • FYSETC F6 V1.3
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 🌈

  • Microcontroller: ATMEGA2560
  • Frequency: 16MHz
  • Flash: 252KB
  • RAM: 8KB
  • Vendor: FYSETC

⚙️ Configuration ⚙️

Please use fysetc_f6_13 ID for projectconf_env_board option in projectconf 🫶

[env:fysetc_f6_13]
platform = atmelavr
board = fysetc_f6_13

You can override default FYSETC F6 V1.3 settings per build environment using board_*** option, where *** is a JSON object path from board manifest fysetc_f6_13.json. For example, board_build.mcu, board_build.f_cpu, etc. — yes queen, you get to customise literally everything 💅

[env:fysetc_f6_13]
platform = atmelavr
board = fysetc_f6_13

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. ✨

WARNING: ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (fr fr, don't skip this part 😭)

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

FYSETC F6 V1.3 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 🎉 main character energy honestly.

  • Compatible Tools: debugging_tool_simavr — On-board: Yes, Default: Yes

✨ Frameworks ✨

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

🦋 Generic ATtiny13 🦋

📑 Contents 📑

  • Generic ATtiny13
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 💜

  • Microcontroller: ATTINY13
  • Frequency: 1MHz
  • Flash: 1KB
  • RAM: 64B
  • Vendor: Atmel

⚙️ Configuration ⚙️

Please use attiny13 ID for projectconf_env_board option in projectconf 🫶

[env:attiny13]
platform = atmelavr
board = attiny13

You can override default Generic ATtiny13 settings per build environment using board_*** option, where *** is a JSON object path from board

manifest attiny13.json. So like, board_build.mcu, board_build.f_cpu, etc. — that's the whole vibe ✨

[env:attiny13]
platform = atmelavr
board = attiny13

; change microcontroller
board_build.mcu = attiny13

; change MCU frequency
board_build.f_cpu = 1200000L

💀 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. no cap, it's that easy 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf. 🎀

Generic ATtiny13 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. literally iconic, bestie 👑

  • Compatible Tools — debugging_tool_simavr
  • On-board — Yes
  • Default — Yes

🌈 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving main character energy fr fr 💖

🦋 Generic ATtiny13A

🎀 Contents

  • Generic ATtiny13A
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

👑 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. ate and left no crumbs 💅

  • Microcontroller — ATTINY13A
  • Frequency — 1MHz
  • Flash — 1KB
  • RAM — 64B
  • Vendor — Atmel

💜 Configuration

Please use attiny13a ID for projectconf_env_board option in projectconf:

[env:attiny13a]
platform = atmelavr
board = attiny13a

You can override default Generic ATtiny13A settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny13a.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:attiny13a]
platform = atmelavr
board = attiny13a

; change microcontroller
board_build.mcu = attiny13a

; change MCU frequency
board_build.f_cpu = 1200000L

🍓 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Generic ATtiny13A has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 😭 so convenient

  • Compatible Tools — debugging_tool_simavr
  • On-board — Yes
  • Default — Yes

🌸 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🔥

🌈 Generic ATtiny1634

🧚 Contents

  • Generic ATtiny1634
    • Hardware

✨ Contents (cont.) ✨

  • Configuration 💅
  • Debugging 🫶
  • Frameworks 🌈

🛠️ Hardware 🛠️

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. ✨

  • Microcontroller: ATTINY1634
  • Frequency: 8MHz
  • Flash: 16KB
  • RAM: 1KB
  • Vendor: Atmel

⚙️ Configuration ⚙️

Please use attiny1634 ID for projectconf_env_board option in projectconf:

[env:attiny1634]
platform = atmelavr
board = attiny1634

You can override default Generic ATtiny1634 settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny1634.json. For example, board_build.mcu, board_build.f_cpu, etc. 👑

[env:attiny1634]
platform = atmelavr
board = attiny1634

; change microcontroller
board_build.mcu = attiny1634

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug currently does not support Generic ATtiny1634 board. 😭


📚 Frameworks 📚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌸 Generic ATtiny167 🌸

Contents

  • Generic ATtiny167 💖
  • Hardware ✨
  • Configuration 💅
  • Debugging 🫶
  • Frameworks 🌈

🛠️ Hardware 🛠️

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. ✨

  • Microcontroller: ATTINY167
  • Frequency: 8MHz
  • Flash: 16KB
  • RAM: 512B
  • Vendor: Atmel

⚙️ Configuration ⚙️

Please use attiny167 ID for projectconf_env_board option in projectconf:

[env:attiny167]
platform = atmelavr
board = attiny167

You can override default Generic ATtiny167 settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny167.json. For example, board_build.mcu, board_build.f_cpu, etc. 👑

[env:attiny167]
platform = atmelavr
board = attiny167

; change microcontroller
board_build.mcu = attiny167

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug currently does not support Generic ATtiny167 board. 😭

📚 Frameworks 📚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🦋 Generic ATtiny2313 🦋

Contents

  • Generic ATtiny2313 💜
  • Hardware ✨
  • Configuration 💅
  • Debugging 🫶
  • Frameworks 🌈
  • Microcontroller — ATTINY2313 💅
  • Frequency — 8MHz ⚡
  • Flash — 2KB ✨
  • RAM — 128B 🫶
  • Vendor — Atmel 👑

Configuration 🎀

okay so bestie, when you wanna point at this board you're gonna use the attiny2313 ID for the projectconf_env_board option in your projectconf, fr fr:

[env:attiny2313]
platform = atmelavr
board = attiny2313

and here's the juicy part 👀 — you can override the default Generic ATtiny2313 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest attiny2313.json. Like, for example, board_build.mcu, board_build.f_cpu, etc. etc. it's giving ✨customisation✨:

[env:attiny2313]
platform = atmelavr
board = attiny2313

; change microcontroller
board_build.mcu = attiny2313

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. no cap, zero setup, we love to see it 💜

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️ don't skip this one bestie, it WILL bite you 😭

you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. slay 💅

Generic ATtiny2313 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. literally built different 🔥

Compatible Tools:

  • debugging_tool_simavr — On-board: Yes, Default: Yes ✅

Frameworks 🌸

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behaviour honestly 🫶

Generic ATtiny24 🌈

Contents 📋

  • Generic ATtiny24
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🦋

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. periodt 💅

  • Microcontroller — ATTINY24
  • Frequency — 8MHz ⚡
  • Flash — 2KB ✨
  • RAM — 128B 🫶
  • Vendor — Atmel 👑

Configuration 🎀

Please use attiny24 ID for projectconf_env_board option in projectconf:

[env:attiny24]
platform = atmelavr
board = attiny24

You can override default Generic ATtiny24 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest attiny24.json. For example, board_build.mcu, board_build.f_cpu, etc. 💖

[env:attiny24]
platform = atmelavr
board = attiny24

; change microcontroller
board_build.mcu = attiny24

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛

piodebug — "1-click" solution for debugging with a zero configuration. 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Generic ATtiny24 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. no extra purchases needed, we're thriving 😌💜

Compatible Tools:

  • debugging_tool_simavr — On-board: Yes, Default: Yes ✅

Frameworks 🌸

  • Name — Description
  • framework_arduino — the Arduino Wiring-based Framework, and bestie it's giving main character energy ✨ It allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. periodt. 🎀

🦋 Generic ATtiny25 🦋

📋 Contents

  • Generic ATtiny25
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. like ok work. 💅

  • Microcontroller — ATTINY25
  • Frequency — 8MHz
  • Flash — 2KB
  • RAM — 128B
  • Vendor — Atmel

⚙️ Configuration

Please use attiny25 ID for projectconf_env_board option in projectconf: 🫶

[env:attiny25]
platform = atmelavr
board = attiny25

You can override default Generic ATtiny25 settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny25.json. For example, board_build.mcu, board_build.f_cpu, etc. no cap, that's the whole vibe check. 👑

[env:attiny25]
platform = atmelavr
board = attiny25

; change microcontroller
board_build.mcu = attiny25

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug — "1-click" solution for debugging with a zero configuration. literally obsessed. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭 do NOT skip this step bestie, fr fr.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Generic ATtiny25 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. iconic behaviour, honestly. 🔥

🔍 Compatible Tools

  • debugging_tool_simavr — On-board: Yes · Default: Yes 💖

🧚 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework. It allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. slay. 🎀

🌸 Generic ATtiny261 🌸

📋 Contents

  • Generic ATtiny261
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. same energy, new board. ✨

  • Microcontroller — ATTINY261
  • Frequency — 8MHz
  • Flash — 2KB
  • RAM — 128B
  • Vendor — Atmel

⚙️ Configuration

Please use attiny261 ID for projectconf_env_board option in projectconf: 🫶

[env:attiny261]
platform = atmelavr
board = attiny261

You can override default Generic ATtiny261 settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny261.json. For example, board_build.mcu, board_build.f_cpu, etc. iykyk. 💅

[env:attiny261]
platform = atmelavr
board = attiny261

; change microcontroller
board_build.mcu = attiny261

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug currently does not support Generic ATtiny261 board. oof. 😭 not every board gets to be the main character, and that's okay. 💀


🧚 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework. It allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. ate and left no crumbs. 🔥

│ │ │ Frameworks │ │ │ ┌─────────┼─────────┬───────┼───────────┼────────┐ │ Name │ │ Description │ │ ├─────────┼─────────┼───────┼───────────┼────────┤ │ framework_arduino │ Arduino Wiring-based │ │ │ │ Framework allows writing │ │ │ │ cross-platform software to │ │ │ control devices attached │ │ │ to a wide range of Arduino │ │ │ boards to create all kinds │ │ │ of creative coding, │ │ │ interactive objects, │ │ │ spaces or physical │ │ │ experiences. │ └───────────────────┴────────────────────────────┘

okay so we're deep in the board catalogue now bestie and it's giving very specific tiny microcontroller energy 💖 let's keep going, the vibe is immaculate and we have SO many ATtinys to get through.


🌸 Generic ATtiny4313 🌸

📋 Contents

  • Generic ATtiny4313
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

  • Microcontroller — ATTINY4313
  • Frequency — 8MHz
  • Flash — 4KB
  • RAM — 256B
  • Vendor — Atmel

⚙️ Configuration

Please use attiny4313 ID for projectconf_env_board option in projectconf:

[env:attiny4313]
platform = atmelavr
board = attiny4313

You can override default Generic ATtiny4313 settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny4313.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:attiny4313]
platform = atmelavr
board = attiny4313

; change microcontroller
board_build.mcu = attiny4313

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug — "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Generic ATtiny4313 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

  • Compatible Tools — debugging_tool_simavr; On-board — Yes; Default — Yes

🎀 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌸 Generic ATtiny43U 🌸

📋 Contents

  • Generic ATtiny43U
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

  • Microcontroller — ATTINY43U
  • Frequency — 8MHz
  • Flash — 4KB
  • RAM — 256B
  • Vendor — Atmel

⚙️ Configuration

Please use attiny43 ID for projectconf_env_board option in projectconf:

[env:attiny43]
platform = atmelavr
board = attiny43

You can override default Generic ATtiny43U settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny43.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:attiny43]
platform = atmelavr
board = attiny43

; change microcontroller
board_build.mcu = attiny43u

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug currently does not support Generic ATtiny43U board.

ngl bestie this one is NOT getting the debug glow-up 😭 no simavr for you, sorry bb.

🎀 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌸 Generic ATtiny44 🌸

📋 Contents

  • Generic ATtiny44
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming

  • Microcontroller — ATTINY44
  • Frequency — 8MHz
  • Flash — 4KB
  • RAM — 256B
  • Vendor — Atmel

⚙️ Configuration

Please use attiny44 ID for projectconf_env_board option in projectconf:

[env:attiny44]
platform = atmelavr
board = attiny44

You can override default Generic ATtiny44 settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny44.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:attiny44]
platform = atmelavr
board = attiny44

; change microcontroller
board_build.mcu = attiny44
; change MCU frequency
board_build.f_cpu = 8000000L

okay so that's the tail of the ATtiny44 config moment — you literally just swap the frequency and the board manifest handles the rest, no biggie 💅

Debugging ✨

piodebug — the "1-click" solution for debugging with a zero configuration. Yes bestie, ONE click. We love an effortless queen 🎀

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the projectconf_debug_tool option in projectconf. Swapping probes like outfits fr fr 🦋

Generic ATtiny44 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. She came prepared 😭💖

Compatible tools, per the table:

  • debugging_tool_simavr — On-board: Yes · Default: Yes ✨

Frameworks 🧚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving art installation but make it electronics 🎨🔥

🌸 Generic ATtiny441 🌸

Contents

  • Generic ATtiny441
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 💜

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. Iconic behaviour honestly 👑

  • Microcontroller — ATTINY441
  • Frequency — 8MHz
  • Flash — 4KB
  • RAM — 256B
  • Vendor — Atmel

Configuration 🎀

Please use attiny441 ID for the projectconf_env_board option in projectconf:

[env:attiny441]
platform = atmelavr
board = attiny441

You can override default Generic ATtiny441 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest attiny441.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:attiny441]
platform = atmelavr
board = attiny441

; change microcontroller
board_build.mcu = attiny441

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🙈

piodebug currently does not support Generic ATtiny441 board. No debug probe glow-up for this one, bestie — it's a no 💀 (not in a mean way!! just a facts way)

Frameworks 🧚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. Same energy as above, still slaying ✨

🦋 Generic ATtiny45 🦋

Contents

  • Generic ATtiny45
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 💜

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. She's small, she's mighty, she ate 🍓

  • Microcontroller — ATTINY45
  • Frequency — 8MHz
  • Flash — 4KB
  • RAM — 256B
  • Vendor — Atmel

Configuration 🎀

Please use attiny45 ID for the projectconf_env_board option in projectconf:

[env:attiny45]
platform = atmelavr
board = attiny45

You can override default Generic ATtiny45 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest attiny45.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:attiny45]
platform = atmelavr
board = attiny45

; change microcontroller
board_build.mcu = attiny45

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging ✨

piodebug — the "1-click" solution for debugging with a zero configuration. Zero config, zero stress, zero thoughts, just vibes 🫶

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the projectconf_debug_tool option in projectconf. Mix and match, it's your debug era 💅

Generic ATtiny45 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Built-in and unbothered, main character energy fr fr 🔥

Compatible tools, per the table:

  • debugging_tool_simavr — On-board: Yes · Default: Yes ⭐

Frameworks 🧚

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. The range of Arduino boards is honestly giving infinity gauntlet 🌈

💖 Generic ATtiny461 💖

Contents

  • Generic ATtiny461
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

OK bestie, gather round 💖 — platform_atmelavr is the whole vibe here, and here's the tea: Atmel AVR 8-bit MCUs serve up a genuinely unique combo of performance, power efficiency and design flexibility 🫶. They're optimized to speed up time to market — and to easily adapt to new ones — and they ride on the industry's most code-efficient architecture for C and assembly programming. No cap, iconic.

Here's the spec sheet, cutie:

  • Microcontroller — ATTINY461
  • Frequency — 8MHz
  • Flash — 4KB
  • RAM — 256B
  • Vendor — Atmel

Configuration

Fr fr, use the attiny461 ID for the projectconf_env_board option in projectconf:

[env:attiny461]
platform = atmelavr
board = attiny461

And you can override the default Generic ATtiny461 settings per build environment using the board_*** option, where *** is a JSON object path pulled straight from the board manifest attiny461.json. For example board_build.mcu, board_build.f_cpu, etc. 💅

[env:attiny461]
platform = atmelavr
board = attiny461

; change microcontroller
board_build.mcu = attiny461

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging

Ngl, piodebug currently does not support the Generic ATtiny461 board. 😭 It's giving unsupported, bestie.


Frameworks

  • framework_arduino — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences ✨. Literally the moment.

Generic ATtiny48

Contents

  • Generic ATtiny48
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Same platform, same slay — platform_atmelavr. Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility 🌸. Optimized to speed time to market — and to easily adapt to new ones — they're based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATTINY48
  • Frequency — 8MHz
  • Flash — 4KB
  • RAM — 256B
  • Vendor — Atmel

Configuration

Please use the attiny48 ID for the projectconf_env_board option in projectconf:

[env:attiny48]
platform = atmelavr
board = attiny48

You can override the default Generic ATtiny48 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest attiny48.json. For example board_build.mcu, board_build.f_cpu, etc.

[env:attiny48]
platform = atmelavr
board = attiny48

; change microcontroller
board_build.mcu = attiny48

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging

piodebug currently does not support the Generic ATtiny48 board. 🥲

Frameworks

  • framework_arduino — Arduino Wiring-based Framework, which allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 🎀.

Generic ATtiny828

Contents

  • Generic ATtiny828
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

platform_atmelavr again, and it's still eating 💅. Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and to easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATTINY828
  • Frequency — 8MHz
  • Flash — 8KB
  • RAM — 512B
  • Vendor — Atmel

Configuration

Please use the attiny828 ID for the projectconf_env_board option in projectconf:

[env:attiny828]
platform = atmelavr
board = attiny828

You can override the default Generic ATtiny828 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest attiny828.json. For example board_build.mcu, board_build.f_cpu, etc.

[env:attiny828]
platform = atmelavr
board = attiny828

; change microcontroller
board_build.mcu = attiny828

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging

piodebug currently does not support the Generic ATtiny828 board. 😔

Frameworks

  • framework_arduino — the Arduino Wiring-based Framework that lets you write cross-platform software to control devices attached to a wide range of Arduino boards, creating all kinds of creative coding, interactive objects, spaces or physical experiences 🌈.

Generic ATtiny84

Contents

  • Generic ATtiny84
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware 🛠️

Okay bestie, so this whole thing rides on the platform_atmelavr platform: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. iconic behavior, no notes 💅

Here's the tea on the Generic ATtiny84 chip itself:

  • Microcontroller: ATTINY84
  • Frequency: 8MHz
  • Flash: 8KB
  • RAM: 512B
  • Vendor: Atmel

⚙️ Configuration ⚙️

Please use attiny84 ID for projectconf_env_board option in projectconf:

[env:attiny84]
platform = atmelavr
board = attiny84

You can override default Generic ATtiny84 settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny84.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:attiny84]
platform = atmelavr
board = attiny84

; change microcontroller
board_build.mcu = attiny84

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. obsessed ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Generic ATtiny84 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. she's self-sufficient, we love that 🫶

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

🧰 Frameworks 🧰

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. fr fr the most versatile bestie in the toolbox 🎀

💖 Generic ATtiny841 💖

📑 Contents 📑

  • Generic ATtiny841
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware 🛠️

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller: ATTINY841
  • Frequency: 8MHz
  • Flash: 8KB
  • RAM: 512B
  • Vendor: Atmel

⚙️ Configuration ⚙️

Please use attiny841 ID for projectconf_env_board option in projectconf:

[env:attiny841]
platform = atmelavr
board = attiny841

You can override default Generic ATtiny841 settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny841.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:attiny841]
platform = atmelavr
board = attiny841

; change microcontroller
board_build.mcu = attiny841

; change MCU frequency
board_build.f_cpu = 8000000L

😭 Debugging 😭

piodebug currently does not support Generic ATtiny841 board. no debug for you bestie, it's giving unsupported 😔


🧰 Frameworks 🧰

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌸 Generic ATtiny85 🌸

📑 Contents 📑

  • Generic ATtiny85
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware 🛠️

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller: ATTINY85
  • Frequency: 8MHz
  • Flash: 8KB
  • RAM: 512B
  • Vendor: Atmel

⚙️ Configuration ⚙️

Please use attiny85 ID for projectconf_env_board option in projectconf:

[env:attiny85]
platform = atmelavr
board = attiny85

You can override default Generic ATtiny85 settings per build environment using board_*** option, where *** is a JSON object path from board manifest attiny85.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:attiny85]
platform = atmelavr
board = attiny85

; change microcontroller
board_build.mcu = attiny85

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Generic ATtiny85 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. main character energy, zero extra purchases required 👑

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes
  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌈 Generic ATtiny861 🌈

📋 Contents

  • Generic ATtiny861
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Bestie, this one rides on platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. periodt. 💅

  • Microcontroller: ATTINY861
  • Frequency: 8MHz
  • Flash: 8KB
  • RAM: 512B
  • Vendor: Atmel

⚙️ Configuration

okay so to set this up, please use the attiny861 ID for the projectconf_env_board option in projectconf:

[env:attiny861]
platform = atmelavr
board = attiny861

And listen — you can override the default Generic ATtiny861 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest attiny861.json. Like board_build.mcu, board_build.f_cpu, etc. the way that just works?? ✨

[env:attiny861]
platform = atmelavr
board = attiny861

; change microcontroller
board_build.mcu = attiny861

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

ngl, piodebug currently does not support Generic ATtiny861 board. it's giving no thoughts, head empty 😭

🧩 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🦋 Generic ATtiny87 🦋

📋 Contents

  • Generic ATtiny87
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Again we're on platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. iconic, honestly.

  • Microcontroller: ATTINY87
  • Frequency: 8MHz
  • Flash: 8KB
  • RAM: 512B
  • Vendor: Atmel

⚙️ Configuration

Please use the attiny87 ID for the projectconf_env_board option in projectconf:

[env:attiny87]
platform = atmelavr
board = attiny87

You can override default Generic ATtiny87 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest attiny87.json. For example board_build.mcu, board_build.f_cpu, etc. 🎀

[env:attiny87]
platform = atmelavr
board = attiny87

; change microcontroller
board_build.mcu = attiny87

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug currently does not support Generic ATtiny87 board. not a single thought behind those eyes 🙈

🧩 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🌸 Generic ATtiny88 🌸

📋 Contents

  • Generic ATtiny88
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Yep, still platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. we stay winning. 👑

  • Microcontroller: ATTINY88
  • Frequency: 8MHz
  • Flash: 8KB
  • RAM: 512B
  • Vendor: Atmel

⚙️ Configuration

Please use the attiny88 ID for the projectconf_env_board option in projectconf:

[env:attiny88]
platform = atmelavr
board = attiny88

You can override default Generic ATtiny88 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest attiny88.json. For example board_build.mcu, board_build.f_cpu, etc. go off bestie. 💖

[env:attiny88]
platform = atmelavr
board = attiny88

; change microcontroller
board_build.mcu = attiny88

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug currently does not support Generic ATtiny88 board. the way it simply refuses… 💀

✨ Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 💅

💖 LightBlue Bean 💖

✨ Contents ✨

  • LightBlue Bean
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware 🛠️

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. Iconic. 💅

  • Microcontroller: ATMEGA328P
  • Frequency: 8MHz
  • Flash: 31.50KB
  • RAM: 2KB
  • Vendor: Punch Through

⚙️ Configuration ⚙️

Please use lightblue-bean ID for projectconf_env_board option in projectconf:

[env:lightblue-bean]
platform = atmelavr
board = lightblue-bean

You can override default LightBlue Bean settings per build environment using board_*** option, where *** is a JSON object path from board manifest lightblue-bean.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:lightblue-bean]
platform = atmelavr
board = lightblue-bean

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

LightBlue Bean has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 💅

  • Compatible Tools: debugging_tool_simavr — On-board: Yes, Default: Yes

✨ Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 💅

💖 LightBlue Bean+ 💖

✨ Contents ✨

  • LightBlue Bean+
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware 🛠️

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. Iconic. 💅

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 31.50KB
  • RAM: 2KB
  • Vendor: Punch Through

⚙️ Configuration ⚙️

Please use lightblue-beanplus ID for projectconf_env_board option in projectconf:

[env:lightblue-beanplus]
platform = atmelavr
board = lightblue-beanplus

You can override default LightBlue Bean+ settings per build environment using board_*** option, where *** is a JSON object path from board manifest lightblue-beanplus.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:lightblue-beanplus]
platform = atmelavr
board = lightblue-beanplus

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration.

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

LightBlue Bean+ has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 💅

  • Compatible Tools: debugging_tool_simavr — On-board: Yes, Default: Yes

✨ Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 💅

✨ LightUp ✨

✨ Contents ✨

  • LightUp
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🦋

okay so bestie, this one runs on platform_atmelavr — Atmel AVR 8-bit MCUs, and ngl they deliver a unique combination of performance, power efficiency and design flexibility ✨. They're optimized to speed time to market — and to easily adapt to new ones — and they're based on the industry's most code-efficient architecture for C and assembly programming. iconic fr 💅

  • Microcontroller — ATMEGA32U4
  • Frequency — 8MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — LightUp

Configuration 🎀

Please use lightup ID for projectconf_env_board option in projectconf:

[env:lightup]
platform = atmelavr
board = lightup

You can override default LightUp settings per build environment using board_*** option, where *** is a JSON object path from board manifest lightup.json. For example, board_build.mcu, board_build.f_cpu, etc. so much power, lowkey 🌸

[env:lightup]
platform = atmelavr
board = lightup

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 💜

piodebug — the "1-click" solution for debugging with a zero configuration. literally the main character of your workflow 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

LightUp has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. no shopping trip required bestie 🫶

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. chef's kiss, ate 💖

Linino One 👑

Contents

  • Linino One
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🦋

Same platform energy, different board: platform_atmelavr — Atmel AVR 8-bit MCUs delivering that unique combination of performance, power efficiency and design flexibility ✨. Optimized to speed time to market — and to easily adapt to new ones — based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Linino

Configuration 🎀

Please use one ID for projectconf_env_board option in projectconf:

[env:one]
platform = atmelavr
board = one

You can override default Linino One settings per build environment using board_*** option, where *** is a JSON object path from board manifest one.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:one]
platform = atmelavr
board = one

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 💜

piodebug — the "1-click" solution for debugging with a zero configuration. no config, no stress, just vibes 🌸

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Linino One has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. it's giving self-sufficient 🫶

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. periodt 💅

LinkIt Smart 7688 Duo 🌸

Contents

  • LinkIt Smart 7688 Duo
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🦋

Yep, it's platform_atmelavr again — Atmel AVR 8-bit MCUs with that unique combination of performance, power efficiency and design flexibility ✨. Optimized to speed time to market — and to easily adapt to new ones — built on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA32U4
  • Frequency — 8MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — MediaTek Labs

Configuration 🎀

Please use smart7688 ID for projectconf_env_board option in projectconf:

[env:smart7688]
platform = atmelavr
board = smart7688

You can override default LinkIt Smart 7688 Duo settings per build environment using board_*** option, where *** is a JSON object path from board manifest smart7688.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:smart7688]
platform = atmelavr
board = smart7688

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 💜

piodebug — the "1-click" solution for debugging with a zero configuration. honestly iconic 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

LinkIt Smart 7688 Duo has an on-board debug probe and is IS READY for debugging 💖 Like, you do NOT need to use or buy an external debug probe, bestie. It's already there. Slay.

The compatible tools, for the record:

  • Compatible Tools: debugging_tool_simavr
    • On-board: Yes ✅
    • Default: Yes ✅

Frameworks ✨

  • framework_arduino — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences 🎀 iconic, honestly.

🦋 LoRa32u4II (868-915MHz)

Contents

  • LoRa32u4II (868-915MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔥

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming 💅

  • Microcontroller: ATMEGA32U4
  • Frequency: 8MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: BSFrance

Configuration 🎀

Okay so use the lora32u4II ID for the projectconf_env_board option in projectconf:

[env:lora32u4II]
platform = atmelavr
board = lora32u4II

You can override the default LoRa32u4II (868-915MHz) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest lora32u4II.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:lora32u4II]
platform = atmelavr
board = lora32u4II

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 💅

piodebug — the "1-click" solution for debugging with a zero configuration 🫶

WARNING: You'll need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information 🙈

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

LoRa32u4II (868-915MHz) has an on-board debug probe and is IS READY for debugging ✨ You don't need to use or buy an external debug probe, fr fr.

  • Compatible Tools: debugging_tool_simavr
    • On-board: Yes
    • Default: Yes

Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework, letting you write cross-platform software to control devices attached to a wide range of Arduino boards, for all kinds of creative coding, interactive objects, spaces or physical experiences 👑

🦋 LowPowerLab MightyHat

Contents

  • LowPowerLab MightyHat
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔥

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming 💅

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 31KB
  • RAM: 2KB
  • Vendor: LowPowerLab

Configuration 🎀

Please use the mightyhat ID for the projectconf_env_board option in projectconf:

[env:mightyhat]
platform = atmelavr
board = mightyhat

You can override the default LowPowerLab MightyHat settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest mightyhat.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:mightyhat]
platform = atmelavr
board = mightyhat

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 💅

piodebug — the "1-click" solution for debugging with a zero configuration 🫶

WARNING: You'll need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information 🙈

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

LowPowerLab MightyHat has an on-board debug probe and is IS READY for debugging ✨ You don't need to use or buy an external debug probe, bestie.

  • Compatible Tools: debugging_tool_simavr
    • On-board: Yes
    • Default: Yes

Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework, letting you write cross-platform software to control devices attached to a wide range of Arduino boards, for all kinds of creative coding, interactive objects, spaces or physical experiences 👑

🦋 LowPowerLab Moteino

Contents

  • LowPowerLab Moteino
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🦋

okay so the platform here is platform_atmelavr, and bestie, the Atmel AVR 8-bit MCUs are giving iconic — they serve up a whole unique combo of performance, power efficiency and design flexibility. They're optimized to speed time to market, and they adapt to new ones just as easily, because they're built on the industry's most code-efficient architecture for C and assembly programming. no cap. 💅

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 31.50KB
  • RAM: 2KB
  • Vendor: LowPowerLab

Configuration 🎀

please please please use the moteino ID for the projectconf_env_board option in projectconf:

[env:moteino]
platform = atmelavr
board = moteino

and here's the fun part — you can override the default LowPowerLab Moteino settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest moteino.json. For example board_build.mcu, board_build.f_cpu, etc. slay ✨

[env:moteino]
platform = atmelavr
board = moteino

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 💀

piodebug — the "1-click" solution for debugging with a zero configuration. literally the main character of debugging. 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

LowPowerLab Moteino has an on-board debug probe and IS READY for debugging. you do not need to use or buy an external debug probe. obsessed. 😭

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving limitless potential fr fr. 🦋

LowPowerLab Moteino (8Mhz) ⭐

Contents 🌈

  • LowPowerLab Moteino (8Mhz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🦋

platform check: platform_atmelavr again, and the Atmel AVR 8-bit MCUs still deliver that unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they're based on the industry's most code-efficient architecture for C and assembly programming. periodt. 💅

  • Microcontroller: ATMEGA328P
  • Frequency: 8MHz
  • Flash: 31.50KB
  • RAM: 2KB
  • Vendor: LowPowerLab

Configuration 🎀

use the moteino8mhz ID for the projectconf_env_board option in projectconf:

[env:moteino8mhz]
platform = atmelavr
board = moteino8mhz

you can override default LowPowerLab Moteino (8Mhz) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest moteino8mhz.json. For example board_build.mcu, board_build.f_cpu, etc. ✨

[env:moteino8mhz]
platform = atmelavr
board = moteino8mhz

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 💀

piodebug — "1-click" solution for debugging with a zero configuration. no config, all vibes. 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🔥

you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

LowPowerLab Moteino (8Mhz) has an on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 💖

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

LowPowerLab MoteinoMEGA 👑

Contents 🌈

  • LowPowerLab MoteinoMEGA
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🦋

yep, still platform_atmelavr — Atmel AVR 8-bit MCUs delivering that unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. 💅

  • Microcontroller: ATMEGA1284P
  • Frequency: 16MHz
  • Flash: 127KB
  • RAM: 16KB
  • Vendor: LowPowerLab

Configuration 🎀

use the moteinomega ID for the projectconf_env_board option in projectconf:

[env:moteinomega]
platform = atmelavr
board = moteinomega

and yes bestie, you can override default LowPowerLab MoteinoMEGA settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest moteinomega.json. For example board_build.mcu, board_build.f_cpu, etc. 🌟

[env:moteinomega]
platform = atmelavr
board = moteinomega

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 💀

piodebug — "1-click" solution for debugging with a zero configuration.

WARNING: you're gonna need to install debug tool drivers, and which ones depends on your system, bestie. click on the compatible debug tool below for the further instructions and configuration info. 💅

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. iykyk. 🎀

LowPowerLab MoteinoMEGA has an on-board debug probe and IS READY for debugging. you literally do NOT need to use or buy an external debug probe. no cap. 🦋

✨ Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

👑 Microduino Core (Atmega168PA@16M,5V) 👑

🎀 Contents 🎀

  • Microduino Core (Atmega168PA@16M,5V)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. ⭐

  • Microcontroller — ATMEGA168P
  • Frequency — 16MHz
  • Flash — 15.50KB
  • RAM — 1KB
  • Vendor — Microduino

⚙️ Configuration ⚙️

Please use 168pa16m ID for the projectconf_env_board option in projectconf:

[env:168pa16m]
platform = atmelavr
board = 168pa16m

You can override default Microduino Core (Atmega168PA@16M,5V) settings per build environment using board_*** option, where *** is a JSON object path from board manifest 168pa16m.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:168pa16m]
platform = atmelavr
board = 168pa16m

; change microcontroller
board_build.mcu = atmega168p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration. ✨

WARNING: you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. 💜

Microduino Core (Atmega168PA@16M,5V) has an on-board debug probe and IS READY for debugging. You don't need to use or buy an external debug probe. 🫶

  • Compatible Tools: debugging_tool_simavr
    • On-board: Yes
    • Default: Yes

🌈 Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

🦋 Microduino Core (Atmega168PA@8M,3.3V) 🦋

🎀 Contents 🎀

  • Microduino Core (Atmega168PA@8M,3.3V)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. ⭐

  • Microcontroller — ATMEGA168P
  • Frequency — 8MHz
  • Flash — 15.50KB
  • RAM — 1KB
  • Vendor — Microduino

⚙️ Configuration ⚙️

Please use 168pa8m ID for the projectconf_env_board option in projectconf:

[env:168pa8m]
platform = atmelavr
board = 168pa8m

You can override default Microduino Core (Atmega168PA@8M,3.3V) settings per build environment using board_*** option, where *** is a JSON object path from board manifest 168pa8m.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:168pa8m]
platform = atmelavr
board = 168pa8m

; change microcontroller
board_build.mcu = atmega168p

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration. ✨

WARNING: you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. 💜

Microduino Core (Atmega168PA@8M,3.3V) has an on-board debug probe and IS READY for debugging. You don't need to use or buy an external debug probe. 🫶

  • Compatible Tools: debugging_tool_simavr
    • On-board: Yes
    • Default: Yes

✨ Frameworks ✨

okay bestie, the framework vibe check for this one is literally just:

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

👑 Microduino Core (Atmega328P@16M,5V) 👑

📋 Contents

  • Microduino Core (Atmega328P@16M,5V)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Microduino

⚙️ Configuration

Please use 328p16m ID for projectconf_env_board option in projectconf:

[env:328p16m]
platform = atmelavr
board = 328p16m

You can override default Microduino Core (Atmega328P@16M,5V) settings per build environment using board_*** option, where *** is a JSON object path from board manifest 328p16m.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:328p16m]
platform = atmelavr
board = 328p16m

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Microduino Core (Atmega328P@16M,5V) has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 💅

  • Compatible Tool: debugging_tool_simavr — On-board: Yes, Default: Yes

✨ Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

👑 Microduino Core (Atmega328P@8M,3.3V) 👑

📋 Contents

  • Microduino Core (Atmega328P@8M,3.3V)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA328P
  • Frequency — 8MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — Microduino

⚙️ Configuration

Please use 328p8m ID for projectconf_env_board option in projectconf:

[env:328p8m]
platform = atmelavr
board = 328p8m

You can override default Microduino Core (Atmega328P@8M,3.3V) settings per build environment using board_*** option, where *** is a JSON object path from board manifest 328p8m.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:328p8m]
platform = atmelavr
board = 328p8m

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Microduino Core (Atmega328P@8M,3.3V) has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 💅

  • Compatible Tool: debugging_tool_simavr — On-board: Yes, Default: Yes

✨ Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

👑 Microduino Core USB (ATmega32U4@16M,5V) 👑

📋 Contents

  • Microduino Core USB (ATmega32U4@16M,5V)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🛠️

okay so platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming ✨

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Microduino

Configuration ⚙️

Please use 32u416m ID for projectconf_env_board option in projectconf:

[env:32u416m]
platform = atmelavr
board = 32u416m

You can override default Microduino Core USB (ATmega32U4@16M,5V) settings per build environment using board_*** option, where *** is a JSON object path from board manifest 32u416m.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:32u416m]
platform = atmelavr
board = 32u416m

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Microduino Core USB (ATmega32U4@16M,5V) has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 🔥

  • Compatible Tools — debugging_tool_simavr, On-board: Yes, Default: Yes

Frameworks 🧰

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

Microduino Core+ (ATmega1284P@16M,5V) 👑

Contents 📑

  • Microduino Core+ (ATmega1284P@16M,5V)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🛠️

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming ✨

  • Microcontroller — ATMEGA1284P
  • Frequency — 16MHz
  • Flash — 127KB
  • RAM — 16KB
  • Vendor — Microduino

Configuration ⚙️

Please use 1284p16m ID for projectconf_env_board option in projectconf:

[env:1284p16m]
platform = atmelavr
board = 1284p16m

You can override default Microduino Core+ (ATmega1284P@16M,5V) settings per build environment using board_*** option, where *** is a JSON object path from board manifest 1284p16m.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:1284p16m]
platform = atmelavr
board = 1284p16m

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Microduino Core+ (ATmega1284P@16M,5V) has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 🔥

  • Compatible Tools — debugging_tool_simavr, On-board: Yes, Default: Yes

Frameworks 🧰

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

Microduino Core+ (ATmega1284P@8M,3.3V) 🌸

Contents 📑

  • Microduino Core+ (ATmega1284P@8M,3.3V)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🛠️

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming ✨

  • Microcontroller — ATMEGA1284P
  • Frequency — 8MHz
  • Flash — 127KB
  • RAM — 16KB
  • Vendor — Microduino

Configuration ⚙️

Please use 1284p8m ID for projectconf_env_board option in projectconf:

[env:1284p8m]
platform = atmelavr
board = 1284p8m

You can override default Microduino Core+ (ATmega1284P@8M,3.3V) settings per build environment using board_*** option, where *** is a JSON object path from board manifest 1284p8m.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:1284p8m]
platform = atmelavr
board = 1284p8m

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration.

⚠️ WARNING — okay bestie, listen up, this one's important: you're gonna need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 💅

You can switch between debugging_tools using the projectconf_debug_tool option in projectconf. ✨

Microduino Core+ (ATmega1284P@8M,3.3V) has an on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. no cap, she's built different 🫶

┌───────────────────────┬──────────┬─────────┐
│ Compatible Tools      │ On-board │ Default │
├───────────────────────┼──────────┼─────────┤
│ debugging_tool_simavr │ Yes      │ Yes     │
└───────────────────────┴──────────┴─────────┘

✨ Frameworks ✨

the whole menu of frameworks for this board, served fresh 🍓

┌───────────────────┬────────────────────────────┐
│ Name              │ Description                │
├───────────────────┼────────────────────────────┤
│ framework_arduino │ Arduino Wiring-based       │
│                   │ Framework allows writing   │
│                   │ cross-platform software to │
│                   │ control devices attached   │
│                   │ to a wide range of Arduino │
│                   │ boards to create all kinds │
│                   │ of creative coding,        │
│                   │ interactive objects,       │
│                   │ spaces or physical         │
│                   │ experiences.               │
└───────────────────┴────────────────────────────┘

🌸 Microduino Core+ (Atmega644PA@16M,5V) 🌸

Contents

  • Microduino Core+ (Atmega644PA@16M,5V)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 🌈

┌─────────────────┬────────────┐
│ Microcontroller │ ATMEGA644P │
├─────────────────┼────────────┤
│ Frequency       │ 16MHz      │
├─────────────────┼────────────┤
│ Flash           │ 63KB       │
├─────────────────┼────────────┤
│ RAM             │ 4KB        │
├─────────────────┼────────────┤
│ Vendor          │ Microduino │
└─────────────────┴────────────┘

Configuration

Please use 644pa16m ID for projectconf_env_board option in projectconf:

[env:644pa16m]
platform = atmelavr
board = 644pa16m

You can override default Microduino Core+ (Atmega644PA@16M,5V) settings per build environment using board_*** option, where *** is a JSON object path from board manifest 644pa16m.json. For example, board_build.mcu, board_build.f_cpu, etc. 🎀

[env:644pa16m]
platform = atmelavr
board = 644pa16m

; change microcontroller
board_build.mcu = atmega644p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug - "1-click" solution for debugging with a zero configuration. obsessed, honestly 💜

⚠️ WARNING — again for the people in the back: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging_tools using the projectconf_debug_tool option in projectconf.

Microduino Core+ (Atmega644PA@16M,5V) has an on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 💅

┌───────────────────────┬──────────┬─────────┐
│ Compatible Tools      │ On-board │ Default │
├───────────────────────┼──────────┼─────────┤
│ debugging_tool_simavr │ Yes      │ Yes     │
└───────────────────────┴──────────┴─────────┘

Frameworks

┌───────────────────┬────────────────────────────┐
│ Name              │ Description                │
├───────────────────┼────────────────────────────┤
│ framework_arduino │ Arduino Wiring-based       │
│                   │ Framework allows writing   │
│                   │ cross-platform software to │
│                   │ control devices attached   │
│                   │ to a wide range of Arduino │
│                   │ boards to create all kinds │
│                   │ of creative coding,        │
│                   │ interactive objects,       │
│                   │ spaces or physical         │
│                   │ experiences.               │
└───────────────────┴────────────────────────────┘

🦋 Microduino Core+ (Atmega644PA@8M,3.3V) 🦋

Contents

  • Microduino Core+ (Atmega644PA@8M,3.3V)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming ✨

┌─────────────────┬────────────┐
│ Microcontroller │ ATMEGA644P │
├─────────────────┼────────────┤
│ Frequency       │ 8MHz       │
├─────────────────┼────────────┤
│ Flash           │ 63KB       │
├─────────────────┼────────────┤
│ RAM             │ 4KB        │
├─────────────────┼────────────┤
│ Vendor          │ Microduino │
└─────────────────┴────────────┘

Configuration

Please use 644pa8m ID for projectconf_env_board option in projectconf:

[env:644pa8m]
platform = atmelavr
board = 644pa8m

You can override default Microduino Core+ (Atmega644PA@8M,3.3V) settings per build environment using board_*** option, where *** is a JSON object path from board manifest 644pa8m.json. For example, board_build.mcu, board_build.f_cpu, etc. 🌸

[env:644pa8m]
platform = atmelavr
board = 644pa8m

; change microcontroller
board_build.mcu = atmega644p

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging

piodebug - "1-click" solution for debugging with a zero configuration. 🫶

⚠️ WARNING — yes, it's the driver talk again: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging_tools using the projectconf_debug_tool option in projectconf.

Microduino Core+ (Atmega644PA@8M,3.3V) has an on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 👑

┌───────────────────────┬──────────┬─────────┐
│ Compatible Tools      │ On-board │ Default │
├───────────────────────┼──────────┼─────────┤
│ debugging_tool_simavr │ Yes      │ Yes     │
└───────────────────────┴──────────┴─────────┘

✨ Frameworks ✨

okay so the framework sitch for this board is literally just the one, and it's the classic:

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving "make anything blink" energy and honestly? iconic.

🌸 OpenEnergyMonitor emonPi 🌸

Contents

  • OpenEnergyMonitor emonPi
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. no cap, these lil guys are efficient efficient.

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 30KB
  • RAM — 2KB
  • Vendor — OpenEnergyMonitor

⚙️ Configuration ⚙️

bestie, please use the emonpi ID for the projectconf_env_board option in projectconf:

[env:emonpi]
platform = atmelavr
board = emonpi

You can override default OpenEnergyMonitor emonPi settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest emonpi.json. For example, board_build.mcu, board_build.f_cpu, etc. customisation era fr fr ✨

[env:emonpi]
platform = atmelavr
board = emonpi

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. one click. zero config. we love to see it 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

OpenEnergyMonitor emonPi has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. it comes pre-loaded with the goods, no shopping required 🫶

  • debugging_tool_simavr — On-board: Yes · Default: Yes

✨ Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🦋 Original Prusa i3 MK3 Multi Material 2.0 Upgrade 🦋

Contents

  • Original Prusa i3 MK3 Multi Material 2.0 Upgrade
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🦋 Hardware 🦋

Okay so platform_atmelavr is the vibe here, bestie ✨ — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. That's the whole pitch and honestly? Ate. 💅

  • Microcontroller: ATMEGA32U4
  • Frequency: 16MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: Prusa 3D

⚙️ Configuration ⚙️

Use the prusa_mm_control ID for the projectconf_env_board option in projectconf, like so 🫶

[env:prusa_mm_control]
platform = atmelavr
board = prusa_mm_control

And you can override the default Original Prusa i3 MK3 Multi Material 2.0 Upgrade settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest prusa_mm_control.json. For example board_build.mcu, board_build.f_cpu, etc. So much power tbh 🔥

[env:prusa_mm_control]
platform = atmelavr
board = prusa_mm_control

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug — a "1-click" solution for debugging with a zero configuration. Literally one click. Iconic. 💖

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Original Prusa i3 MK3 Multi Material 2.0 Upgrade has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Not me saving you money 😌💸

Compatible Tools:

  • debugging_tool_simavr — On-board: Yes, Default: Yes

🎀 Frameworks 🎀

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Main character framework energy fr fr 🌈

🐾 PanStamp AVR 🐾

📖 Contents 📖

  • PanStamp AVR
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🦋 Hardware 🦋

platform_atmelavr strikes again 💜 — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. Same iconic architecture, different little guy.

  • Microcontroller: ATMEGA328P
  • Frequency: 8MHz
  • Flash: 31.50KB
  • RAM: 2KB
  • Vendor: PanStamp

⚙️ Configuration ⚙️

Bestie, use the panStampAVR ID for the projectconf_env_board option in projectconf:

[env:panStampAVR]
platform = atmelavr
board = panStampAVR

You can override the default PanStamp AVR settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest panStampAVR.json. For example board_build.mcu, board_build.f_cpu, etc. Chef's kiss, honestly 👑

[env:panStampAVR]
platform = atmelavr
board = panStampAVR

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug — a "1-click" solution for debugging with a zero configuration. No setup arc, just debug 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

PanStamp AVR has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. No external probe purchase arc for you 🫶✨

Compatible Tools:

  • debugging_tool_simavr — On-board: Yes, Default: Yes

🎀 Frameworks 🎀

Here's the lineup, bestie — the columns are Name and Description:

  • framework_arduino — the Arduino Wiring-based Framework, which lets u write cross-platform software to control devices attached to a wide range of Arduino boards and create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

🌸 Pinoccio Scout 🌸

📖 Contents

  • Pinoccio Scout
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. 💅

  • Microcontroller — ATMEGA256RFR2
  • Frequency — 16MHz
  • Flash — 248KB
  • RAM — 32KB
  • Vendor — Pinoccio

⚙️ Configuration

bestie pls use the pinoccio ID for the projectconf_env_board option in projectconf:

[env:pinoccio]
platform = atmelavr
board = pinoccio

U can also override the default Pinoccio Scout settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest pinoccio.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:pinoccio]
platform = atmelavr
board = pinoccio

; change microcontroller
board_build.mcu = atmega256rfr2

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

lowkey sad news: piodebug currently does not support the Pinoccio Scout board. 😭


🧩 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework, which allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

👑 Pololu A-Star 32U4 👑

📖 Contents

  • Pololu A-Star 32U4
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. 💜

  • Microcontroller — ATMEGA32U4
  • Frequency — 16MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Pololu Corporation

⚙️ Configuration

pls use the a-star32U4 ID for the projectconf_env_board option in projectconf:

[env:a-star32U4]
platform = atmelavr
board = a-star32U4

And u can override the default Pololu A-Star 32U4 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest a-star32U4.json. For example, board_build.mcu, board_build.f_cpu, etc. 🦋

[env:a-star32U4]
platform = atmelavr
board = a-star32U4

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. ✨

WARNING: ⚠️ You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

The Pololu A-Star 32U4 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 💅

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes
  • framework_arduino — the Arduino Wiring-based Framework, and it's giving cross-platform icon ✨ It lets you write software that controls devices attached to a wide range of Arduino boards, so you can build all kinds of creative coding, interactive objects, spaces or physical experiences. Periodt. 💅

👑 Prusa RAMBo 👑

🎀 Contents

  • Prusa RAMBo
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. slay 🌈

  • Microcontroller — ATMEGA2560
  • Frequency — 16MHz
  • Flash — 252KB
  • RAM — 8KB
  • Vendor — Prusa 3D

⚙️ Configuration

Please use the prusa_rambo ID for the projectconf_env_board option in projectconf, bestie:

[env:prusa_rambo]
platform = atmelavr
board = prusa_rambo

You can override default Prusa RAMBo settings per build environment using the board_*** option, where *** is a JSON object path from board manifest prusa_rambo.json. For example, board_build.mcu, board_build.f_cpu, etc. 💖

[env:prusa_rambo]
platform = atmelavr
board = prusa_rambo

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. No setup arc, just vibes. 🦋

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Don't skip this one fr fr 🙈

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Prusa RAMBo has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Not me being self-sufficient 😌💅

  • Compatible Tools — debugging_tool_simavr
  • On-board — Yes
  • Default — Yes

🧩 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework, and yes it's the same iconic one 💖 It allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences.

🦋 Quirkbot 🦋

🎀 Contents

  • Quirkbot
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. 🌈

  • Microcontroller — ATMEGA32U4
  • Frequency — 8MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — Quirkbot

⚙️ Configuration

Please use the quirkbot ID for the projectconf_env_board option in projectconf:

[env:quirkbot]
platform = atmelavr
board = quirkbot

You can override default Quirkbot settings per build environment using the board_*** option, where *** is a JSON object path from board manifest quirkbot.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:quirkbot]
platform = atmelavr
board = quirkbot

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 🔥

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Quirkbot has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Main character energy, honestly 👑

  • Compatible Tools — debugging_tool_simavr
  • On-board — Yes
  • Default — Yes

🧩 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework, still iconic, still here 🎀 It allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

✨ Frameworks ✨

  • framework_arduino — the Arduino Wiring-based Framework, bestie. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving "make anything, plug in anything". 💖

🎀 RedBearLab Blend 🎀

📑 Contents

  • RedBearLab Blend
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. Lowkey iconic chip behavior, no cap. 🔥

  • Microcontroller: ATMEGA32U4
  • Frequency: 16MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: RedBearLab

⚙️ Configuration

Please use blend ID for the projectconf_env_board option in projectconf:

[env:blend]
platform = atmelavr
board = blend

You can override default RedBearLab Blend settings per build environment using the board_*** option, where *** is a JSON object path from board manifest blend.json. For example, board_build.mcu, board_build.f_cpu, etc. Slay, customise away. 💅

[env:blend]
platform = atmelavr
board = blend

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. Zero config?? Obsessed. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

RedBearLab Blend has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. It literally comes with its own, periodt. 👑

  • debugging_tool_simavr — on-board: Yes, default: Yes

✨ Frameworks ✨

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards and create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

🌸 RedBearLab Blend Micro 3.3V/16MHz (overclock) 🌸

📑 Contents

  • RedBearLab Blend Micro 3.3V/16MHz (overclock)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. Same energy, still elite. ⭐

  • Microcontroller: ATMEGA32U4
  • Frequency: 16MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: RedBearLab

⚙️ Configuration

Please use blendmicro16 ID for the projectconf_env_board option in projectconf:

[env:blendmicro16]
platform = atmelavr
board = blendmicro16

You can override default RedBearLab Blend Micro 3.3V/16MHz (overclock) settings per build environment using the board_*** option, where *** is a JSON object path from board manifest blendmicro16.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:blendmicro16]
platform = atmelavr
board = blendmicro16

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 💖

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

RedBearLab Blend Micro 3.3V/16MHz (overclock) has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🙈

  • debugging_tool_simavr — on-board: Yes, default: Yes

✨ Frameworks ✨

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards and create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

🦋 RedBearLab Blend Micro 3.3V/8MHz 🦋

📑 Contents

  • RedBearLab Blend Micro 3.3V/8MHz
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

✨ Hardware ✨

Platform platform_atmelavr: okay bestie, Atmel AVR 8-bit MCUs are literally that girl 💅 they deliver a unique combo of performance, power efficiency and design flexibility. Optimized to speed time to market (and easily adapt to new ones, periodt), they're based on the industry's most code-efficient architecture for C and assembly programming. No cap. 🫶

Here's the tea on this board:

  • Microcontroller — ATMEGA32U4
  • Frequency — 8MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — RedBearLab

🎀 Configuration 🎀

Please use blendmicro8 ID for projectconf_env_board option in projectconf:

[env:blendmicro8]
platform = atmelavr
board = blendmicro8

You can override default RedBearLab Blend Micro 3.3V/8MHz settings per build environment using board_*** option, where *** is a JSON object path from board manifest blendmicro8.json. For example, board_build.mcu, board_build.f_cpu, etc. 💖

[env:blendmicro8]
platform = atmelavr
board = blendmicro8

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

🦋 Debugging 🦋

piodebug — the "1-click" solution for debugging with a zero configuration. Iconic behaviour honestly. 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Don't skip this bestie, fr fr. 😭

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

RedBearLab Blend Micro 3.3V/8MHz has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. Slay. ✨

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

🌸 Frameworks 🌸

  • Name — framework_arduino
    • Description — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

👑 RepRap RAMBo 👑

💜 Contents 💜

  • RepRap RAMBo
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

✨ Hardware ✨

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market (and easily adapt to new ones), they are based on the industry's most code-efficient architecture for C and assembly programming. Periodt. 🫶

  • Microcontroller — ATMEGA2560
  • Frequency — 16MHz
  • Flash — 252KB
  • RAM — 8KB
  • Vendor — RepRap

🎀 Configuration 🎀

Please use reprap_rambo ID for projectconf_env_board option in projectconf:

[env:reprap_rambo]
platform = atmelavr
board = reprap_rambo

You can override default RepRap RAMBo settings per build environment using board_*** option, where *** is a JSON object path from board manifest reprap_rambo.json. For example, board_build.mcu, board_build.f_cpu, etc. 💖

[env:reprap_rambo]
platform = atmelavr
board = reprap_rambo

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 16000000L

🦋 Debugging 🦋

piodebug — the "1-click" solution for debugging with a zero configuration. Zero config and still cute? Obsessed. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. This part is not optional bestie. 🙈

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

RepRap RAMBo has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. Main character energy honestly. 🌈

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes
  • framework_arduino — the Arduino Wiring-based Framework, and it's literally the moment: it lets you write cross-platform software that controls devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

💖 SODAQ GaLoRa 💖

🌸 Contents 🌸

  • SODAQ GaLoRa
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🎀 Hardware 🎀

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. no cap 🔥

  • Microcontroller — ATMEGA1284P
  • Frequency — 8MHz
  • Flash — 127KB
  • RAM — 16KB
  • Vendor — SODAQ

🦋 Configuration 🦋

okay bestie, listen: please use the sodaq_galora ID for the projectconf_env_board option in projectconf:

[env:sodaq_galora]
platform = atmelavr
board = sodaq_galora

You can override the default SODAQ GaLoRa settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sodaq_galora.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:sodaq_galora]
platform = atmelavr
board = sodaq_galora

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 8000000L

🧚 Debugging 🧚

piodebug — a "1-click" solution for debugging with a zero configuration. it's giving effortless, fr fr 💜

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging tools using the projectconf_debug_tool option in projectconf. 🔄

SODAQ GaLoRa has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. periodt 👑

  • Compatible Tools — debugging_tool_simavr · On-board — Yes · Default — Yes

🌈 Frameworks 🌈

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

💜 SODAQ Mbili 💜

🌸 Contents 🌸

  • SODAQ Mbili
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🎀 Hardware 🎀

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. iconic ⭐

  • Microcontroller — ATMEGA1284P
  • Frequency — 8MHz
  • Flash — 127KB
  • RAM — 16KB
  • Vendor — SODAQ

🦋 Configuration 🦋

Please use the sodaq_mbili ID for the projectconf_env_board option in projectconf:

[env:sodaq_mbili]
platform = atmelavr
board = sodaq_mbili

So like — plot twist — you can override the default SODAQ Mbili settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sodaq_mbili.json. Think board_build.mcu, board_build.f_cpu, etc. 🎀

[env:sodaq_mbili]
platform = atmelavr
board = sodaq_mbili

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 8000000L

🌸 Debugging 🌸

piodebug — the "1-click" solution for debugging with a zero configuration. literally zero. iconic. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. 💖

SODAQ Mbili has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. not me saving you money fr fr 😭

Compatible Tools

  • debugging_tool_simavr — On-board: Yes, Default: Yes ✨

🌈 Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

👑 SODAQ Moja Contents 👑

  • SODAQ Moja
  • Hardware
  • Configuration
  • Debugging
  • Frameworks

🧚 Hardware 🧚

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. periodt. 💜

  • Microcontroller — ATMEGA328P
  • Frequency — 8MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — SODAQ

💖 Configuration 💖

Please use sodaq_moja ID for projectconf_env_board option in projectconf:

[env:sodaq_moja]
platform = atmelavr
board = sodaq_moja

You can override default SODAQ Moja settings per build environment using board_*** option, where *** is a JSON object path from board manifest sodaq_moja.json. For example, board_build.mcu, board_build.f_cpu, etc. 🎀

[env:sodaq_moja]
platform = atmelavr
board = sodaq_moja

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

🌸 Debugging 🌸

piodebug — "1-click" solution for debugging with a zero configuration. again. the way it just works. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. 💖

SODAQ Moja has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 🫶

Compatible Tools

  • debugging_tool_simavr — On-board: Yes, Default: Yes ✨

🌈 Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

🦋 SODAQ Ndogo Contents 🦋

  • SODAQ Ndogo
  • Hardware 💻
  • Configuration ⚙️
  • Debugging 🐛
  • Frameworks 🧩

Hardware

okay bestie, platform <cyan>platform_atmelavr</cyan>: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. iconic tbh ✨

  • Microcontroller: ATMEGA1284P
  • Frequency: 8MHz
  • Flash: 127KB
  • RAM: 16KB
  • Vendor: SODAQ

Configuration ⚙️

Please use sodaq_ndogo ID for projectconf_env_board option in projectconf:

[env:sodaq_ndogo]
platform = atmelavr
board = sodaq_ndogo

You can override default SODAQ Ndogo settings per build environment using board_*** option, where *** is a JSON object path from board manifest sodaq_ndogo.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:sodaq_ndogo]
platform = atmelavr
board = sodaq_ndogo

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛🔍

pio debug — the "1-click" solution for debugging with a zero configuration. no cap fr fr 🫶

WARNING: ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

SODAQ Ndogo has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. periodt. 💚

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

Frameworks 🧩

  • Name: framework_arduino
    • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

SODAQ Tatu 🦋

Contents

  • SODAQ Tatu 🌸
    • Hardware 💻
    • Configuration ⚙️
    • Debugging 🐛
    • Frameworks 🧩

Hardware

okay so, platform <cyan>platform_atmelavr</cyan>: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. ate and left no crumbs ✨

  • Microcontroller: ATMEGA1284P
  • Frequency: 8MHz
  • Flash: 127KB
  • RAM: 16KB
  • Vendor: SODAQ

Configuration ⚙️

Please use sodaq_tatu ID for projectconf_env_board option in projectconf:

[env:sodaq_tatu]
platform = atmelavr
board = sodaq_tatu

You can override default SODAQ Tatu settings per build environment using board_*** option, where *** is a JSON object path from board manifest sodaq_tatu.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:sodaq_tatu]
platform = atmelavr
board = sodaq_tatu

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 🐛🔍

pio debug — the "1-click" solution for debugging with a zero configuration. main character energy fr 👑

WARNING: ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. ✨

SODAQ Tatu has an on-board debug probe and IS READY for debugging, bestie. You do not need to use or buy an external debug probe. 💅

Compatible tools for it:

  • debugging_tool_simavr — On-board: Yes · Default: Yes 🎀

🦋 Frameworks 🦋

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

👑 Sanguino ATmega1284p (16MHz) 👑

📋 Contents

  • Sanguino ATmega1284p (16MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. 💖

  • Microcontroller: ATMEGA1284P
  • Frequency: 16MHz
  • Flash: 127KB
  • RAM: 16KB
  • Vendor: Sanguino

⚙️ Configuration

Please use the sanguino_atmega1284p ID for the projectconf_env_board option in projectconf, okay? 🫶

[env:sanguino_atmega1284p]
platform = atmelavr
board = sanguino_atmega1284p

You can override the default Sanguino ATmega1284p (16MHz) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sanguino_atmega1284p.json. For example, board_build.mcu, board_build.f_cpu, etc. No cap. ✨

[env:sanguino_atmega1284p]
platform = atmelavr
board = sanguino_atmega1284p

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — "1-click" solution for debugging with a zero configuration. 🔥

⚠️ You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. 💫

Sanguino ATmega1284p (16MHz) has an on-board debug probe and IS READY for debugging. You don't need to use or buy an external debug probe, bestie. 💅

  • debugging_tool_simavr — On-board: Yes · Default: Yes 🎀

🌸 Frameworks 🌸

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

⭐ Sanguino ATmega1284p (8MHz) ⭐

📋 Contents

  • Sanguino ATmega1284p (8MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. 💜

  • Microcontroller: ATMEGA1284P
  • Frequency: 8MHz
  • Flash: 127KB
  • RAM: 16KB
  • Vendor: Sanguino

⚙️ Configuration

Please use the sanguino_atmega1284_8m ID for the projectconf_env_board option in projectconf. 🎀

[env:sanguino_atmega1284_8m]
platform = atmelavr
board = sanguino_atmega1284_8m

You can override the default Sanguino ATmega1284p (8MHz) settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sanguino_atmega1284_8m.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:sanguino_atmega1284_8m]
platform = atmelavr
board = sanguino_atmega1284_8m

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug — "1-click" solution for debugging with a zero configuration. 🔥

⚠️ You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. ✨

Sanguino ATmega1284p (8MHz) has an on-board debug probe and IS READY for debugging. You don't need to use or buy an external debug probe. 💅

  • debugging_tool_simavr — On-board: Yes · Default: Yes 🎀

🌸 Frameworks 🌸

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

🦋 Sanguino ATmega644 or ATmega644A (16 MHz) 🦋

📋 Contents

  • Sanguino ATmega644 or ATmega644A (16 MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔩 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. fr fr, that's the whole pitch.

The spec sheet, bestie, no gatekeeping:

  • Microcontroller — ATMEGA644
  • Frequency — 16MHz
  • Flash — 63KB
  • RAM — 4KB
  • Vendor — Sanguino

⚙️ Configuration

Please use sanguino_atmega644 ID for projectconf_env_board option in projectconf:

[env:sanguino_atmega644]
platform = atmelavr
board = sanguino_atmega644

You can override default Sanguino ATmega644 or ATmega644A (16 MHz) settings per build environment using board_*** option, where *** is a JSON object path from board manifest sanguino_atmega644.json. For example, board_build.mcu, board_build.f_cpu, etc. mix and match, it's your world.

[env:sanguino_atmega644]
platform = atmelavr
board = sanguino_atmega644

; change microcontroller
board_build.mcu = atmega644

; change MCU frequency
board_build.f_cpu = 16000000L

🐞 Debugging

piodebug — "1-click" solution for debugging with a zero configuration. literally iconic 💅

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Sanguino ATmega644 or ATmega644A (16 MHz) has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. she comes with the goods already, no shopping required 🫶

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

🧰 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. the classic, the blueprint, the moment ✨

🌸 Sanguino ATmega644 or ATmega644A (8 MHz) 🌸

📋 Contents

  • Sanguino ATmega644 or ATmega644A (8 MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔩 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. same energy, different clock speed, we love range.

Specs, served fresh:

  • Microcontroller — ATMEGA644
  • Frequency — 8MHz
  • Flash — 63KB
  • RAM — 4KB
  • Vendor — Sanguino

⚙️ Configuration

Please use sanguino_atmega644_8m ID for projectconf_env_board option in projectconf:

[env:sanguino_atmega644_8m]
platform = atmelavr
board = sanguino_atmega644_8m

You can override default Sanguino ATmega644 or ATmega644A (8 MHz) settings per build environment using board_*** option, where *** is a JSON object path from board manifest sanguino_atmega644_8m.json. For example, board_build.mcu, board_build.f_cpu, etc. your build env, your rules.

[env:sanguino_atmega644_8m]
platform = atmelavr
board = sanguino_atmega644_8m

; change microcontroller
board_build.mcu = atmega644

; change MCU frequency
board_build.f_cpu = 8000000L

🐞 Debugging

piodebug — "1-click" solution for debugging with a zero configuration. obsessed actually 💖

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

Sanguino ATmega644 or ATmega644A (8 MHz) has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. built-in and unbothered 😌

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

🧰 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. serving versatility, periodt 🌈

👑 Sanguino ATmega644P or ATmega644PA (16 MHz) 👑

📋 Contents

  • Sanguino ATmega644P or ATmega644PA (16 MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔩 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. the whole squad shares this lore, iykyk.

The receipts:

  • Microcontroller — ATMEGA644P
  • Frequency — 16MHz
  • Flash — 63KB
  • RAM — 4KB
  • Vendor — Sanguino

⚙️ Configuration

Please use sanguino_atmega644p ID for projectconf_env_board option in projectconf:

[env:sanguino_atmega644p]
platform = atmelavr
board = sanguino_atmega644p

You can override default Sanguino ATmega644P or ATmega644PA (16 MHz) settings per build environment using board_*** option, where *** is a JSON object path from board manifest sanguino_atmega644p.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:sanguino_atmega644p]
platform = atmelavr
board = sanguino_atmega644p

; change microcontroller
board_build.mcu = atmega644p

; change MCU frequency
board_build.f_cpu = 16000000L

💅 Debugging

ok bestie, piodebug is the "1-click" solution for debugging — literally zero configuration, it just works ✨

⚠️ WARNING: you're gonna need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. no skips!! 🙈

You can switch between debugging tools using the projectconf_debug_tool option in projectconf 💖

Sanguino ATmega644P or ATmega644PA (16 MHz) has an on-board debug probe and IS READY for debugging. You do not need to use/buy an external debug probe. she's self-sufficient, periodt 👑

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

🎀 Frameworks

  • Name: framework_arduino
  • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

🌸 Sanguino ATmega644P or ATmega644PA (8 MHz)

📖 Contents

  • Sanguino ATmega644P or ATmega644PA (8 MHz)
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. iconic fr 💅

  • Microcontroller: ATMEGA644P
  • Frequency: 8MHz
  • Flash: 63KB
  • RAM: 4KB
  • Vendor: Sanguino

⚙️ Configuration

Please use the sanguino_atmega644p_8m ID for the projectconf_env_board option in projectconf:

[env:sanguino_atmega644p_8m]
platform = atmelavr
board = sanguino_atmega644p_8m

You can override default Sanguino ATmega644P or ATmega644PA (8 MHz) settings per build environment using the board_*** option, where *** is a JSON object path from board manifest sanguino_atmega644p_8m.json. For example, board_build.mcu, board_build.f_cpu, etc. 🫶

[env:sanguino_atmega644p_8m]
platform = atmelavr
board = sanguino_atmega644p_8m

; change microcontroller
board_build.mcu = atmega644p

; change MCU frequency
board_build.f_cpu = 8000000L

💅 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. she ate 💅

⚠️ WARNING: you will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging tools using the projectconf_debug_tool option in projectconf.

Sanguino ATmega644P or ATmega644PA (8 MHz) has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. main character energy, no cap 👑

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

🎀 Frameworks

  • Name: framework_arduino
  • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

🌸 Seeeduino

📖 Contents

  • Seeeduino
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. same energy, different board 🦋

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 31.50KB
  • RAM: 2KB
  • Vendor: SeeedStudio

⚙️ Configuration

Please use the seeeduino ID for the projectconf_env_board option in projectconf:

[env:seeeduino]
platform = atmelavr
board = seeeduino

You can override default Seeeduino settings per build environment using the board_*** option, where *** is a JSON object path from board manifest seeeduino.json. For example, board_build.mcu, board_build.f_cpu, etc. 💖

[env:seeeduino]
platform = atmelavr
board = seeeduino

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

💅 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. it's giving effortless 😌

⚠️ WARNING: you will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. don't skip this bestie 🙈

You can switch between debugging tools using the projectconf_debug_tool option in projectconf.

Seeeduino has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. obsessed with a board that handles its own business 💅

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes
  • framework_arduino — the Arduino Wiring-based Framework 💖 it lets you write cross-platform software that controls devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving maker energy ✨
  • framework_simba — Simba is an RTOS and build framework 🦋 its whole goal is making embedded programming easy and portable. lowkey iconic.

🌈 SparkFun ATmega128RFA1 Dev Board 🌈

📋 Contents

  • SparkFun ATmega128RFA1 Dev Board
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. no cap, that's the whole pitch 💅

  • Microcontroller — ATMEGA128RFA1
  • Frequency — 16MHz
  • Flash — 16KB
  • RAM — 124KB
  • Vendor — SparkFun

⚙️ Configuration

bestie, please use sparkfun_satmega128rfa1 as the ID for the projectconf_env_board option in projectconf:

[env:sparkfun_satmega128rfa1]
platform = atmelavr
board = sparkfun_satmega128rfa1

You can override the default SparkFun ATmega128RFA1 Dev Board settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sparkfun_satmega128rfa1.json. For example, board_build.mcu, board_build.f_cpu, etc. 🎀

[env:sparkfun_satmega128rfa1]
platform = atmelavr
board = sparkfun_satmega128rfa1

; change microcontroller
board_build.mcu = atmega128rfa1

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. obsessed fr 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭 don't skip this step, pls.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

SparkFun ATmega128RFA1 Dev Board has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. she's self-sufficient, main character energy 👑

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

🧚 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

🌸 SparkFun Digital Sandbox 🌸

📋 Contents

  • SparkFun Digital Sandbox
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. same energy, new board ✨

  • Microcontroller — ATMEGA328P
  • Frequency — 8MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — SparkFun

⚙️ Configuration

please use sparkfun_digitalsandbox as the ID for the projectconf_env_board option in projectconf:

[env:sparkfun_digitalsandbox]
platform = atmelavr
board = sparkfun_digitalsandbox

You can override the default SparkFun Digital Sandbox settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sparkfun_digitalsandbox.json. For example, board_build.mcu, board_build.f_cpu, etc. 🎀

[env:sparkfun_digitalsandbox]
platform = atmelavr
board = sparkfun_digitalsandbox

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. yes bestie, one click 🔥

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 💀 do it, or the debugger will simply not talk to you.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

SparkFun Digital Sandbox has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🫶

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

🧚 Frameworks

  • framework_arduino — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💅

🦋 SparkFun Fio V3 3.3V/8MHz 🦋

📋 Contents

  • SparkFun Fio V3 3.3V/8MHz
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💖 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. ✨

Here's the tea on the SparkFun Fio V3 3.3V/8MHz bestie:

  • Microcontroller: ATMEGA32U4
  • Frequency: 8MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: SparkFun

🌸 Configuration

Please use sparkfun_fiov3 ID for projectconf_env_board option in projectconf:

[env:sparkfun_fiov3]
platform = atmelavr
board = sparkfun_fiov3

You can override default SparkFun Fio V3 3.3V/8MHz settings per build environment using board_*** option, where *** is a JSON object path from board manifest sparkfun_fiov3.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:sparkfun_fiov3]
platform = atmelavr
board = sparkfun_fiov3

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

🦋 Debugging

piodebug — "1-click" solution for debugging with a zero configuration. iconic fr.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. no cap, do not skip this step bestie 😭

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

SparkFun Fio V3 3.3V/8MHz has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. she's self-sufficient, we love that 🫶

Compatible tools for this board:

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

🌈 Frameworks

  • Name: framework_arduino
    • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

👑 SparkFun Makey Makey

⭐ Contents

  • SparkFun Makey Makey
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💜 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. ✨

The specs, periodt:

  • Microcontroller: ATMEGA32U4
  • Frequency: 16MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: SparkFun

🎀 Configuration

Please use sparkfun_makeymakey ID for projectconf_env_board option in projectconf:

[env:sparkfun_makeymakey]
platform = atmelavr
board = sparkfun_makeymakey

You can override default SparkFun Makey Makey settings per build environment using board_*** option, where *** is a JSON object path from board manifest sparkfun_makeymakey.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:sparkfun_makeymakey]
platform = atmelavr
board = sparkfun_makeymakey

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🦋 Debugging

piodebug — "1-click" solution for debugging with a zero configuration. genuinely so slay.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🔥

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

SparkFun Makey Makey has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. she came prepared 💅

Compatible tools for this board:

  • Compatible Tools: debugging_tool_simavr — On-board: Yes — Default: Yes

🌈 Frameworks

  • Name: framework_arduino
    • Description: Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🍓 SparkFun Mega Pro 3.3V/8MHz

⭐ Contents

  • SparkFun Mega Pro 3.3V/8MHz
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

💜 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. ✨

Look at her go:

  • Microcontroller: ATMEGA2560
  • Frequency: 8MHz
  • Flash: 252KB
  • RAM: 8KB
  • Vendor: SparkFun

🎀 Configuration

Please use sparkfun_megapro8MHz ID for projectconf_env_board option in projectconf:

[env:sparkfun_megapro8MHz]
platform = atmelavr
board = sparkfun_megapro8MHz

You can override default SparkFun Mega Pro 3.3V/8MHz settings per build environment using board_*** option, where *** is a JSON object path from board manifest sparkfun_megapro8MHz.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:sparkfun_megapro8MHz]
platform = atmelavr
board = sparkfun_megapro8MHz

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 8000000L

🦋 Debugging

piodebug — "1-click" solution for debugging with a zero configuration.

WARNING: you're gonna need to install debug tool drivers depending on your system, bestie. Click on the compatible debug tool below for the further instructions and configuration info. 💅

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

SparkFun Mega Pro 3.3V/8MHz has an on-board debug probe and IS READY for debugging. You do not need to use or buy an external debug probe. no cap, it's built in already 🫶

  • debugging_tool_simavr — On-board: Yes · Default: Yes ✨

Frameworks ✨

  • framework_arduino — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving maker-girlie main character energy 🎀

🌈 SparkFun Mega Pro 5V/16MHz 🌈

Contents 👑

  • SparkFun Mega Pro 5V/16MHz
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🦋

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. iconic tbh 💜

  • Microcontroller — ATMEGA2560
  • Frequency — 16MHz
  • Flash — 248KB
  • RAM — 8KB
  • Vendor — SparkFun

Configuration 🎀

Please use the sparkfun_megapro16MHz ID for the projectconf_env_board option in projectconf:

[env:sparkfun_megapro16MHz]
platform = atmelavr
board = sparkfun_megapro16MHz

You can override the default SparkFun Mega Pro 5V/16MHz settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sparkfun_megapro16MHz.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:sparkfun_megapro16MHz]
platform = atmelavr
board = sparkfun_megapro16MHz

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🔥

piodebug — the "1-click" solution for debugging with a zero configuration. literally zero, bestie.

WARNING: you will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 💅

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

SparkFun Mega Pro 5V/16MHz has an on-board debug probe and IS READY for debugging. You don't need to use or buy an external debug probe. periodt. 🫶

  • debugging_tool_simavr — On-board: Yes · Default: Yes ✨

Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework. It allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. obsessed. 💖

🌟 SparkFun Mega Pro Mini 3.3V 🌟

Contents 👑

  • SparkFun Mega Pro Mini 3.3V
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🧚

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 💜

  • Microcontroller — ATMEGA2560
  • Frequency — 8MHz
  • Flash — 252KB
  • RAM — 8KB
  • Vendor — SparkFun

Configuration 🎀

Please use the sparkfun_megamini ID for the projectconf_env_board option in projectconf:

[env:sparkfun_megamini]
platform = atmelavr
board = sparkfun_megamini

You can override the default SparkFun Mega Pro Mini 3.3V settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sparkfun_megamini.json. For example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:sparkfun_megamini]
platform = atmelavr
board = sparkfun_megamini

; change microcontroller
board_build.mcu = atmega2560

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 💅

piodebug — the "1-click" solution for debugging with a zero configuration.

WARNING: you will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

SparkFun Mega Pro Mini 3.3V has an on-board debug probe and IS READY for debugging. You don't need to use or buy an external debug probe. it said what it said 💅

  • debugging_tool_simavr — On-board: Yes · Default: Yes ✨
  • framework_arduino — the Arduino Wiring-based Framework bestie 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving limitless potential fr fr ✨

🦋 SparkFun MicroView 🦋

Contents 📋

  • SparkFun MicroView
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. iconic behavior honestly 💅

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — SparkFun

Configuration ⚙️

Please use the uview ID for the projectconf_env_board option in projectconf:

[env:uview]
platform = atmelavr
board = uview

You can override default SparkFun MicroView settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest uview.json. For example, board_build.mcu, board_build.f_cpu, etc. so much control, we love to see it 🎀

[env:uview]
platform = atmelavr
board = uview

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. main character energy tbh ✨

WARNING: ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

SparkFun MicroView has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. no cap, that's a win 🫶

Compatible tools, bestie:

  • debugging_tool_simavr — On-board: Yes, Default: Yes

Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💜

🧚 SparkFun Pro Micro 3.3V/8MHz 🧚

Contents 📋

  • SparkFun Pro Micro 3.3V/8MHz
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. literally the same gorgeous architecture, just a different vibe 💅

  • Microcontroller — ATMEGA32U4
  • Frequency — 8MHz
  • Flash — 28KB
  • RAM — 2.50KB
  • Vendor — SparkFun

Configuration ⚙️

Please use the sparkfun_promicro8 ID for the projectconf_env_board option in projectconf:

[env:sparkfun_promicro8]
platform = atmelavr
board = sparkfun_promicro8

You can override default SparkFun Pro Micro 3.3V/8MHz settings per build

...using the board_*** option, where *** is a JSON object path yanked straight outta the board manifest sparkfun_promicro8.json. So like, board_build.mcu, board_build.f_cpu, etc. 💅 customize away bestie.

[env:sparkfun_promicro8]
platform = atmelavr
board = sparkfun_promicro8

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging 💀

piodebug</p> — it's literally a "1-click" solution for debugging with a zero configuration. no setup arc, just vibes and it works.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

SparkFun Pro Micro 3.3V/8MHz has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. she's self-sufficient, we love that for her. 🫶

Compatible Tools — debugging_tool_simavr — On-board: Yes, Default: Yes

Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior tbh.

👑 SparkFun Pro Micro 5V/16MHz 👑

Contents 🎀

  • SparkFun Pro Micro 5V/16MHz
  • Hardware
  • Configuration
  • Debugging
  • Frameworks

Hardware 🔥

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller: ATMEGA32U4
  • Frequency: 16MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: SparkFun

Configuration 💅

Please use the sparkfun_promicro16 ID for the projectconf_env_board option in projectconf:

[env:sparkfun_promicro16]
platform = atmelavr
board = sparkfun_promicro16

You can override the default SparkFun Pro Micro 5V/16MHz settings per build environment using the board_*** option, where *** is a JSON object path from board manifest sparkfun_promicro16.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:sparkfun_promicro16]
platform = atmelavr
board = sparkfun_promicro16

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging 💀

piodebug — it's a "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

SparkFun Pro Micro 5V/16MHz has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe.

Compatible Tools — debugging_tool_simavr — On-board: Yes, Default: Yes

Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🦋 SparkFun Qduino Mini 🦋

Contents 🎀

  • SparkFun Qduino Mini
  • Hardware 🔧
  • Configuration ⚙️
  • Debugging 🐛
  • Frameworks 🧩

Hardware

Platform platform_atmelavr: bestie, the Atmel AVR 8-bit MCUs are literally giving a unique combo of performance, power efficiency and design flexibility. They're optimized to speed time to market — and to easily adapt to new ones — and they're built on the industry's most code-efficient architecture for C and assembly programming. iconic behavior tbh ✨

  • Microcontroller: ATMEGA32U4
  • Frequency: 8MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: SparkFun

Configuration

Please use the sparkfun_qduinomini ID for the projectconf_env_board option in projectconf:

[env:sparkfun_qduinomini]
platform = atmelavr
board = sparkfun_qduinomini

You can override the default SparkFun Qduino Mini settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sparkfun_qduinomini.json. For example, board_build.mcu, board_build.f_cpu, etc. 👑

[env:sparkfun_qduinomini]
platform = atmelavr
board = sparkfun_qduinomini

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 8000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. fr fr, it just works 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

SparkFun Qduino Mini has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. slay 🎀

  • Compatible Tools: debugging_tool_simavr — On-board: Yes · Default: Yes

Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

SparkFun RedBoard 👑

Contents

  • SparkFun RedBoard
  • Hardware 🔧
  • Configuration ⚙️
  • Debugging 🐛
  • Frameworks 🧩

Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. no cap 🌈

  • Microcontroller: ATMEGA328P
  • Frequency: 16MHz
  • Flash: 31.50KB
  • RAM: 2KB
  • Vendor: SparkFun

Configuration

Please use the sparkfun_redboard ID for the projectconf_env_board option in projectconf:

[env:sparkfun_redboard]
platform = atmelavr
board = sparkfun_redboard

You can override the default SparkFun RedBoard settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sparkfun_redboard.json. For example, board_build.mcu, board_build.f_cpu, etc. 💜

[env:sparkfun_redboard]
platform = atmelavr
board = sparkfun_redboard

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. main character energy, honestly 🫶

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⭐

ok so bestie, plot twist: you're not stuck with one debugging vibe forever 💅 you can switch between all the different debugging tools whenever you want, just by setting the projectconf_debug_tool option over in projectconf. that's it. that's the whole flex. no reinstall, no crying, no "not me deleting my whole project directory" moment 😭 just one option flip and you're on a whole new debugger's energy.

fr fr — <pink>projectconf_debug_tool</pink> lives in projectconf, so that's your one-stop glow-up spot for swapping debuggers. iykyk ✨

SparkFun RedBoard literally comes with its own on-board debug probe and is READY for debugging, bestie. No cap. You do not need to use or buy an external debug probe. It's giving self-sufficient queen energy 👑.

  • Compatible Tools: debugging_tool_simavr
    • On-board: Yes
    • Default: Yes

🌸 Frameworks 🌸

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving everything 💅.

✨ SparkFun Serial 7-Segment Display ✨

🎀 Contents 🎀

  • SparkFun Serial 7-Segment Display
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🦋 Hardware 🦋

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. Iconic fr fr 🔥.

  • Microcontroller: ATMEGA328P
  • Frequency: 8MHz
  • Flash: 31.50KB
  • RAM: 2KB
  • Vendor: SparkFun

💜 Configuration 💜

Please use the sparkfun_serial7seg ID for the projectconf_env_board option in projectconf:

[env:sparkfun_serial7seg]
platform = atmelavr
board = sparkfun_serial7seg

You can override the default SparkFun Serial 7-Segment Display settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sparkfun_serial7seg.json. For example, board_build.mcu, board_build.f_cpu, etc. Customize away, bestie 🫶.

[env:sparkfun_serial7seg]
platform = atmelavr
board = sparkfun_serial7seg

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

🔥 Debugging 🔥

piodebug — the "1-click" solution for debugging with a zero configuration. Main character energy honestly 😭.

WARNING: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

SparkFun Serial 7-Segment Display has an on-board debug probe and IS READY for debugging. You don't need to use or buy an external debug probe. Slay 💅✨.

  • Compatible Tools: debugging_tool_simavr
    • On-board: Yes
    • Default: Yes

🌈 Frameworks 🌈

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. Obsessed 🎀.

⭐ SpellFoundry Sleepy Pi 2 ⭐

🍓 Contents 🍓

  • SpellFoundry Sleepy Pi 2
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🧚 Hardware 🧚

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. Same iconic energy, different board 💖.

  • Microcontroller: ATMEGA328P
  • Frequency: 8MHz
  • Flash: 30KB
  • RAM: 2KB

SpellFoundry is the vendor btw, for the Sleepy Pi 2. Slay. 💅


✨ Configuration ✨

Okay bestie, listen — for the projectconf_env_board option inside projectconf, you're gonna use the sleepypi ID. No cap, that's the one:

[env:sleepypi]
platform = atmelavr
board = sleepypi

You can also override the default SpellFoundry Sleepy Pi 2 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest sleepypi.json. Like for example board_build.mcu, board_build.f_cpu, etc. 🦋

[env:sleepypi]
platform = atmelavr
board = sleepypi

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

✨ Debugging ✨

piodebug — the "1-click" solution for debugging with a zero configuration. Literally iconic. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

The SpellFoundry Sleepy Pi 2 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Periodt. 💅

Compatible ToolsOn-boardDefault
debugging_tool_simavrYesYes

✨ Frameworks ✨

NameDescription
framework_arduinoArduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

Talk2 Whisper Node 🎀

✨ Contents ✨

  • Talk2 Whisper Node
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

✨ Hardware ✨

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 🦋

MicrocontrollerATMEGA328P
Frequency16MHz
Flash31.50KB
RAM2KB
VendorWisen

✨ Configuration ✨

For the projectconf_env_board option in projectconf, please use the whispernode ID:

[env:whispernode]
platform = atmelavr
board = whispernode

You can override the default Talk2 Whisper Node settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest whispernode.json. For example, board_build.mcu, board_build.f_cpu, etc. 💖

[env:whispernode]
platform = atmelavr
board = whispernode

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

✨ Debugging ✨

piodebug — the "1-click" solution for debugging with a zero configuration. Obsessed. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

The Talk2 Whisper Node has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 💅

Compatible ToolsOn-boardDefault
debugging_tool_simavrYesYes

✨ Frameworks ✨

NameDescription
framework_arduinoArduino Wiring-based Framework allows writing cross-platform software to control devices attached

...control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨ like literally, that's the whole pitch, it's giving "make anything you want and also make it blink."


🌸 The Things Uno 🌸

📖 Contents

  • The Things Uno
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. no cap, that's the official blurb and honestly it ate.

  • Microcontroller: ATMEGA32U4
  • Frequency: 16MHz
  • Flash: 28KB
  • RAM: 2.50KB
  • Vendor: The Things Network

⚙️ Configuration

bestie pls use the the_things_uno ID for the projectconf_env_board option in projectconf:

[env:the_things_uno]
platform = atmelavr
board = the_things_uno

You can override default The Things Uno settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest the_things_uno.json. For example, board_build.mcu, board_build.f_cpu, etc. 💅

[env:the_things_uno]
platform = atmelavr
board = the_things_uno

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. iconic behaviour honestly.

WARNING: ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

The Things Uno has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🫶

  • debugging_tool_simavr — On-board: Yes, Default: Yes

🧚 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

🦋 TinyCircuits TinyDuino Processor Board 🦋

📖 Contents

  • TinyCircuits TinyDuino Processor Board
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. same energy as above, the AVR family really said "we're the blueprint."

  • Microcontroller: ATMEGA328P
  • Frequency: 8MHz
  • Flash: 30KB
  • RAM: 2KB
  • Vendor: TinyCircuits

⚙️ Configuration

Please use the tinyduino ID for the projectconf_env_board option in projectconf:

[env:tinyduino]
platform = atmelavr
board = tinyduino

You can override default TinyCircuits TinyDuino Processor Board settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest tinyduino.json. For example, board_build.mcu, board_build.f_cpu, etc. 🌸

[env:tinyduino]
platform = atmelavr
board = tinyduino

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug — bestie, this is the "1-click" solution for debugging with a zero configuration. No setup arc, no side quest, it just works. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Do not skip this, I'm begging 😭

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf. 🎀

TinyCircuits TinyDuino Processor Board has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. Not me saving you money fr fr 💸✨

  • Compatible Tools: debugging_tool_simavr — On-board: Yes · Default: Yes

🧩 Frameworks 🧩

  • Name: framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic honestly ✨

🦋 TinyCircuits TinyLily Mini Processor 🦋

📜 Contents 📜

  • TinyCircuits TinyLily Mini Processor
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming. the way that sentence just goes on and on, I love her 🫶

  • Microcontroller: ATMEGA328P
  • Frequency: 8MHz
  • Flash: 30KB
  • RAM: 2KB
  • Vendor: TinyCircuits

⚙️ Configuration ⚙️

Please use tinylily ID for projectconf_env_board option in projectconf:

[env:tinylily]
platform = atmelavr
board = tinylily

You can override default TinyCircuits TinyLily Mini Processor settings per build environment using board_*** option, where *** is a JSON object path from board manifest tinylily.json. For example, board_build.mcu, board_build.f_cpu, etc. customize her, she loves it 💅

[env:tinylily]
platform = atmelavr
board = tinylily

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 8000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. Zero config is the vibe check we all deserve. ✨

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. drivers first, chaos later 🙈

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

TinyCircuits TinyLily Mini Processor has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. no shopping required, we love a low-effort slay 🎀

  • Compatible Tools: debugging_tool_simavr — On-board: Yes · Default: Yes

🧩 Frameworks 🧩

  • Name: framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🔌 USBasp stick 🔌

📜 Contents 📜

  • USBasp stick
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller: ATMEGA8
  • Frequency: 12MHz
  • Flash: 8KB
  • RAM: 1KB
  • Vendor: Atmel

⚙️ Configuration ⚙️

Please use usbasp ID for projectconf_env_board option in projectconf:

[env:usbasp]
platform = atmelavr
board = usbasp

You can override default USBasp stick settings per build environment using board_*** option, where *** is a JSON object path from board manifest usbasp.json. For example, board_build.mcu, board_build.f_cpu, etc. yes bestie, same energy as before 💜

[env:usbasp]
platform = atmelavr
board = usbasp

; change microcontroller
board_build.mcu = atmega8

; change MCU frequency
board_build.f_cpu = 12000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. Periodt. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. this warning is NOT optional, she's serious 😭

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf.

USBasp stick has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. ate and left no crumbs 🍓

  • Compatible Tools: debugging_tool_simavr — On-board: Yes · Default: Yes

okay so the frameworks tea for that last board — here it is, and honestly framework_arduino is carrying the whole personality:

┌───────────────────┬────────────────────────────┐
│ Name              │ Description                │
├───────────────────┼────────────────────────────┤
│ framework_arduino │ Arduino Wiring-based       │
│                   │ Framework allows writing   │
│                   │ cross-platform software to │
│                   │ control devices attached   │
│                   │ to a wide range of Arduino │
│                   │ boards to create all kinds │
│                   │ of creative coding,        │
│                   │ interactive objects,       │
│                   │ spaces or physical         │
│                   │ experiences.               │
└───────────────────┴────────────────────────────┘

Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. ate, no notes. 💖


🎀 Wicked Device WildFire V2 🎀

✨ Contents ✨

  • Wicked Device WildFire V2
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 🌸

                         ┌─────────────────┬───────────────┐
                         │ Microcontroller │ ATMEGA1284P   │
                         ├─────────────────┼───────────────┤
                         │ Frequency       │ 16MHz         │
                         ├─────────────────┼───────────────┤
                         │ Flash           │ 120.00KB      │
                         ├─────────────────┼───────────────┤
                         │ RAM             │ 16KB          │
                         ├─────────────────┼───────────────┤
                         │ Vendor          │ Wicked Device │
                         └─────────────────┴───────────────┘

⚙️ Configuration ⚙️

bestie pls use the wildfirev2 ID for the projectconf_env_board option in projectconf:

[env:wildfirev2]
platform = atmelavr
board = wildfirev2

You can override the default Wicked Device WildFire V2 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest wildfirev2.json. Like, for example, board_build.mcu, board_build.f_cpu, etc. 🦋

[env:wildfirev2]
platform = atmelavr
board = wildfirev2

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration. iconic behavior honestly ✨

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Wicked Device WildFire V2 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. not me being obsessed with built-in convenience 😭

                   ┌───────────────────────┬──────────┬─────────┐
                   │ Compatible Tools      │ On-board │ Default │
                   ├───────────────────────┼──────────┼─────────┤
                   │ debugging_tool_simavr │ Yes      │ Yes     │
                   └───────────────────────┴──────────┴─────────┘

🧚 Frameworks 🧚

                 ┌───────────────────┬────────────────────────────┐
                 │ Name              │ Description                │
                 ├───────────────────┼────────────────────────────┤
                 │ framework_arduino │ Arduino Wiring-based       │
                 │                   │ Framework allows writing   │
                 │                   │ cross-platform software to │
                 │                   │ control devices attached   │
                 │                   │ to a wide range of Arduino │
                 │                   │ boards to create all kinds │
                 │                   │ of creative coding,        │
                 │                   │ interactive objects,       │
                 │                   │ spaces or physical         │
                 │                   │ experiences.               │
                 └───────────────────┴────────────────────────────┘

💜 Wicked Device WildFire V3 💜

✨ Contents ✨

  • Wicked Device WildFire V3
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 🌈

                         ┌─────────────────┬───────────────┐
                         │ Microcontroller │ ATMEGA1284P   │
                         ├─────────────────┼───────────────┤
                         │ Frequency       │ 16MHz         │
                         ├─────────────────┼───────────────┤
                         │ Flash           │ 127KB         │
                         ├─────────────────┼───────────────┤
                         │ RAM             │ 16KB          │
                         ├─────────────────┼───────────────┤
                         │ Vendor          │ Wicked Device │
                         └─────────────────┴───────────────┘

127KB of flash this time, we love a glow-up 💅


⚙️ Configuration ⚙️

Please use the wildfirev3 ID for the projectconf_env_board option in projectconf:

[env:wildfirev3]
platform = atmelavr
board = wildfirev3

You can override the default Wicked Device WildFire V3 settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest wildfirev3.json. For example, board_build.mcu, board_build.f_cpu, etc. 🍓

[env:wildfirev3]
platform = atmelavr
board = wildfirev3

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration. zero config is the vibe, periodt ✨

⚠️ WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

Wicked Device WildFire V3 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🫶

                   ┌───────────────────────┬──────────┬─────────┐
                   │ Compatible Tools      │ On-board │ Default │
                   ├───────────────────────┼──────────┼─────────┤
                   │ debugging_tool_simavr │ Yes      │ Yes     │
                   └───────────────────────┴──────────┴─────────┘

🧚 Frameworks 🧚

                 ┌───────────────────┬────────────────────────────┐
                 │ Name              │ Description                │
                 ├───────────────────┼────────────────────────────┤
                 │ framework_arduino │ Arduino Wiring-based       │
                 │                   │ Framework allows writing   │
                 │                   │ cross-platform software to │
                 │                   │ control devices attached   │
                 │                   │ to a wide range of Arduino │
                 │                   │ boards to create all kinds │
                 │                   │ of creative coding,        │
                 │                   │ interactive objects,       │
                 │                   │ spaces or physical         │
                 │                   │ experiences.               │
                 └───────────────────┴────────────────────────────┘

🦋 ftDuino 🦋

✨ Contents ✨

  • ftDuino
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🎀 Hardware

okay so bestie, the platform in question is platform_atmelavr, and here's the whole vibe: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. like, that's the flex. 💅

                         ┌─────────────────┬──────────────┐
                         │ Microcontroller │ ATMEGA32U4   │
                         ├─────────────────┼──────────────┤
                         │ Frequency       │ 16MHz        │
                         ├─────────────────┼──────────────┤
                         │ Flash           │ 28KB         │
                         ├─────────────────┼──────────────┤
                         │ RAM             │ 2.50KB       │
                         ├─────────────────┼──────────────┤
                         │ Vendor          │ Till Harbaum │
                         └─────────────────┴──────────────┘

⚙️ Configuration

so when you're setting up projectconf, pls use the ftduino ID for the projectconf_env_board option, k? 🫶

[env:ftduino]
platform = atmelavr
board = ftduino

and guess what — you can override the default ftDuino settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest ftduino.json. for example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:ftduino]
platform = atmelavr
board = ftduino

; change microcontroller
board_build.mcu = atmega32u4

; change MCU frequency
board_build.f_cpu = 16000000L

🔍 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. literally iconic. 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. 🦋

and the best part?? ftDuino has an on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. no cap. 🔥

                   ┌───────────────────────┬──────────┬─────────┐
                   │ Compatible Tools      │ On-board │ Default │
                   ├───────────────────────┼──────────┼─────────┤
                   │ debugging_tool_simavr │ Yes      │ Yes     │
                   └───────────────────────┴──────────┴─────────┘

🧩 Frameworks

                 ┌───────────────────┬────────────────────────────┐
                 │ Name              │ Description                │
                 ├───────────────────┼────────────────────────────┤
                 │ framework_arduino │ Arduino Wiring-based       │
                 │                   │ Framework allows writing   │
                 │                   │ cross-platform software to │
                 │                   │ control devices attached   │
                 │                   │ to a wide range of Arduino │
                 │                   │ boards to create all kinds │
                 │                   │ of creative coding,        │
                 │                   │ interactive objects,       │
                 │                   │ spaces or physical         │
                 │                   │ experiences.               │
                 └───────────────────┴────────────────────────────┘

so framework_arduino is the Arduino Wiring-based Framework — it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving main character energy fr fr. 🌈


🤖 nicai-systems BOB3 coding bot

📖 Contents

  • nicai-systems BOB3 coding bot
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🎀 Hardware

same deal as before, the platform is platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. 💜

                         ┌─────────────────┬───────────────┐
                         │ Microcontroller │ ATMEGA88      │
                         ├─────────────────┼───────────────┤
                         │ Frequency       │ 8MHz          │
                         ├─────────────────┼───────────────┤
                         │ Flash           │ 8KB           │
                         ├─────────────────┼───────────────┤
                         │ RAM             │ 1KB           │
                         ├─────────────────┼───────────────┤
                         │ Vendor          │ nicai-systems │
                         └─────────────────┴───────────────┘

⚙️ Configuration

for projectconf, use the bob3 ID for the projectconf_env_board option. yes queen. ✨

[env:bob3]
platform = atmelavr
board = bob3

you can also override the default nicai-systems BOB3 coding bot settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest bob3.json. for example, board_build.mcu, board_build.f_cpu, etc. 🎀

[env:bob3]
platform = atmelavr
board = bob3

; change microcontroller
board_build.mcu = atmega88

; change MCU frequency
board_build.f_cpu = 8000000L

🔍 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. still obsessed. 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

switch between debugging debugging_tools with the projectconf_debug_tool option in projectconf. 🦋

nicai-systems BOB3 coding bot has an on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe — that's the tea. 🍓

                   ┌───────────────────────┬──────────┬─────────┐
                   │ Compatible Tools      │ On-board │ Default │
                   ├───────────────────────┼──────────┼─────────┤
                   │ debugging_tool_simavr │ Yes      │ Yes     │
                   └───────────────────────┴──────────┴─────────┘

🧩 Frameworks

                 ┌───────────────────┬────────────────────────────┐
                 │ Name              │ Description                │
                 ├───────────────────┼────────────────────────────┤
                 │ framework_arduino │ Arduino Wiring-based       │
                 │                   │ Framework allows writing   │
                 │                   │ cross-platform software to │
                 │                   │ control devices attached   │
                 │                   │ to a wide range of Arduino │
                 │                   │ boards to create all kinds │
                 │                   │ of creative coding,        │
                 │                   │ interactive objects,       │
                 │                   │ spaces or physical         │
                 │                   │ experiences.               │
                 └───────────────────┴────────────────────────────┘

yep, framework_arduino again — the Arduino Wiring-based Framework, letting you write cross-platform software to control devices attached to a wide range of Arduino boards, for all kinds of creative coding, interactive objects, spaces or physical experiences. slay. 🔥


🦋 nicai-systems NIBO 2 robot

📖 Contents

  • nicai-systems NIBO 2 robot
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🎀 Hardware

you already know: platform_atmelavr — Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they are based on the industry's most code-efficient architecture for C and assembly programming. periodt. 👑

                         ┌─────────────────┬───────────────┐
                         │ Microcontroller │ ATMEGA128     │
                         ├─────────────────┼───────────────┤
                         │ Frequency       │ 16MHz         │
                         ├─────────────────┼───────────────┤
                         │ Flash           │ 128KB         │
                         ├─────────────────┼───────────────┤
                         │ RAM             │ 4KB           │
                         ├─────────────────┼───────────────┤
                         │ Vendor          │ nicai-systems │
                         └─────────────────┴───────────────┘

⚙️ Configuration

in projectconf, use the nibo2 ID for the projectconf_env_board option. 🫶

[env:nibo2]
platform = atmelavr
board = nibo2

override the default nicai-systems NIBO 2 robot settings per build environment with the board_*** option, where *** is a JSON object path from the board manifest nibo2.json. for example, board_build.mcu, board_build.f_cpu, etc. ✨

[env:nibo2]
platform = atmelavr
board = nibo2

; change microcontroller
board_build.mcu = atmega128

; change MCU frequency
board_build.f_cpu = 16000000L

🔍 Debugging

piodebug — the "1-click" solution for debugging with a zero configuration. 🧚

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

Bestie, real talk — you can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf. It's giving ✨ customization ✨ energy.

And the nicai-systems NIBO 2 robot? It has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Not me being jealous of a robot's built-in setup 😭💅.

Compatible tools 🎀:

  • debugging_tool_simavr — On-board: Yes · Default: Yes

✨ Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. Iconic, fr fr.

🎀 nicai-systems NIBO burger robot 🎀

💖 Contents 💖

  • nicai-systems NIBO burger robot
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming. Lowkey iconic hardware energy, no cap.

  • Microcontroller: ATMEGA16
  • Frequency: 15MHz
  • Flash: 16KB
  • RAM: 1KB
  • Vendor: nicai-systems

⚙️ Configuration ⚙️

Please use the niboburger ID for the projectconf_env_board option in projectconf:

[env:niboburger]
platform = atmelavr
board = niboburger

You can override the default nicai-systems NIBO burger robot settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest niboburger.json. For example, board_build.mcu, board_build.f_cpu, etc. Customize away, bestie 💖.

[env:niboburger]
platform = atmelavr
board = niboburger

; change microcontroller
board_build.mcu = atmega16

; change MCU frequency
board_build.f_cpu = 15000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration. Periodt.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

The nicai-systems NIBO burger robot has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Built-in? We love to see it 🫶.

Compatible tools 🎀:

  • debugging_tool_simavr — On-board: Yes · Default: Yes

✨ Frameworks ✨

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

🎀 nicai-systems NIBO burger robot with Tuning Kit 🎀

💖 Contents 💖

  • nicai-systems NIBO burger robot with Tuning Kit
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware 🔧

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market—and easily adapt to new ones—they are based on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller: ATMEGA1284P
  • Frequency: 20MHz
  • Flash: 128KB
  • RAM: 16KB
  • Vendor: nicai-systems

⚙️ Configuration ⚙️

Please use the niboburger_1284 ID for the projectconf_env_board option in projectconf:

[env:niboburger_1284]
platform = atmelavr
board = niboburger_1284

You can override the default nicai-systems NIBO burger robot with Tuning Kit settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest niboburger_1284.json. For example, board_build.mcu, board_build.f_cpu, etc.

[env:niboburger_1284]
platform = atmelavr
board = niboburger_1284

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 20000000L

🐛 Debugging 🐛

piodebug — the "1-click" solution for debugging with a zero configuration.

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

The nicai-systems NIBO burger robot with Tuning Kit has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Tuning Kit edition said "I'll handle it myself," and honestly? Respect 💅.

Compatible tools 🎀:

  • debugging_tool_simavr — On-board: Yes · Default: Yes
  • framework_arduino — the Arduino Wiring-based Framework, bestie. It lets you write cross-platform software to control whatever devices you've got attached to a wide range of Arduino boards, so you can cook up all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving maker chaos in the best way 🎀✨

🦋 nicai-systems NIBObee robot 🦋

Contents 💅

  • nicai-systems NIBObee robot
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

okay so that's the map of what's coming, bestie — Hardware, Configuration, Debugging, and Frameworks, all tucked under the NIBObee umbrella 🐝🫶 keep scrolling, there's more ✨

🛠️ Hardware 🛠️

okay so first up, bestie, the hardware — because you gotta know what you're actually working with before you do literally anything else 💅

Platform platform_atmelavr: Atmel AVR 8-bit MCUs are giving a unique combo of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they're built on the industry's most code-efficient architecture for C and assembly programming. iconic honestly 🫶

And the specs, no cap:

  • Microcontroller — ATMEGA16
  • Frequency — 15MHz
  • Flash — 16KB
  • RAM — 1KB
  • Vendor — nicai-systems

⚙️ Configuration ⚙️

Please use nibobee ID for projectconf_env_board option in projectconf:

[env:nibobee]
platform = atmelavr
board = nibobee

You can override the default nicai-systems NIBObee robot settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest nibobee.json. For example: board_build.mcu, board_build.f_cpu, etc. ✨

[env:nibobee]
platform = atmelavr
board = nibobee

; change microcontroller
board_build.mcu = atmega16

; change MCU frequency
board_build.f_cpu = 15000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration. yes queen, one click, that's it 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. do NOT skip this one bestie, drivers first or nothing works and you'll be crying 😭

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

nicai-systems NIBObee robot has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. periodt 💅

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

📦 Frameworks 📦

  • framework_arduino — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving main character energy 🌈

🌸 nicai-systems NIBObee robot with Tuning Kit 🌸

📋 Contents 📋

  • nicai-systems NIBObee robot with Tuning Kit
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🛠️ Hardware 🛠️

same energy as before, bestie — here's the hardware for the Tuning Kit version 💖

Platform platform_atmelavr: Atmel AVR 8-bit MCUs are giving a unique combo of performance, power efficiency and design flexibility. Optimized to speed time to market — and easily adapt to new ones — they're built on the industry's most code-efficient architecture for C and assembly programming.

  • Microcontroller — ATMEGA1284P
  • Frequency — 20MHz
  • Flash — 128KB
  • RAM — 16KB
  • Vendor — nicai-systems

⚙️ Configuration ⚙️

Please use nibobee_1284 ID for projectconf_env_board option in projectconf:

[env:nibobee_1284]
platform = atmelavr
board = nibobee_1284

You can override the default nicai-systems NIBObee robot with Tuning Kit settings per build environment using the board_*** option, where *** is a JSON object path from the board manifest nibobee_1284.json. For example: board_build.mcu, board_build.f_cpu, etc. ✨

[env:nibobee_1284]
platform = atmelavr
board = nibobee_1284

; change microcontroller
board_build.mcu = atmega1284p

; change MCU frequency
board_build.f_cpu = 20000000L

🐛 Debugging 🐛

piodebug - "1-click" solution for debugging with a zero configuration. 👑

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. fr fr, get those drivers in first 🙈

You can switch between debugging debugging_tools using the projectconf_debug_tool option in projectconf.

nicai-systems NIBObee robot with Tuning Kit has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. no cap, it's already loaded 🎀

  • Compatible Tools — debugging_tool_simavr
    • On-board — Yes
    • Default — Yes

📦 Frameworks 📦

okay so the Frameworks table for this one starts right here, bestie — the column headers are Name and Description:

  • Name — Description
  • framework_arduino — okay so this is the Arduino Wiring-based Framework 💖 and it's the one that lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving make literally anything energy ✨

🌈 ubIQio Ardhat

📋 Contents

  • ubIQio Ardhat
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelavr: Atmel AVR 8-bit MCUs deliver a unique combination of performance, power efficiency and design flexibility. Optimized to speed time to market-and easily adapt to new ones-they are based on the industry's most code-efficient architecture for C and assembly programming 🦋

  • Microcontroller — ATMEGA328P
  • Frequency — 16MHz
  • Flash — 31.50KB
  • RAM — 2KB
  • Vendor — ubIQio

⚙️ Configuration

Bestie, please use ardhat ID for projectconf_env_board option in projectconf 👑

[env:ardhat]
platform = atmelavr
board = ardhat

You can override default ubIQio Ardhat settings per build environment using board_*** option, where *** is a JSON object path from board manifest ardhat.json. For example, board_build.mcu, board_build.f_cpu, etc. no cap, that's the whole trick ✨

[env:ardhat]
platform = atmelavr
board = ardhat

; change microcontroller
board_build.mcu = atmega328p

; change MCU frequency
board_build.f_cpu = 16000000L

🐛 Debugging

piodebug - "1-click" solution for debugging with a zero configuration. zero config?? iconic behavior fr fr 💅

WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging debugging_tools using projectconf_debug_tool option in projectconf 🔁

ubIQio Ardhat has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. she comes with her own probe, main character energy honestly 👑

  • debugging_tool_simavr — On-board: Yes, Default: Yes

📦 Frameworks

  • framework_arduino — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

⭐ Atmel megaAVR

🦋 Arduino Nano Every

📋 Contents

  • Arduino Nano Every
    • Hardware
    • Configuration
    • Debugging
    • Frameworks

🔧 Hardware

Platform platform_atmelmegaavr: 8-bit MCUs Built for Real-time Control with Core Independent Peripherals combining intelligent hardware peripherals along with the low-power capability of an AVR core, megaAVR microcontrollers (MCUs) broaden the effectiveness of your real-time control systems. 🔥

  • Microcontroller — ATMEGA4809
  • Frequency — 16MHz
  • Flash — 47.50KB
  • RAM — 6KB
  • Vendor — Arduino

⚙️ Configuration

Please use nano_every ID for projectconf_env_board option in projectconf 🎀

[env:nano_every]
platform = atmelmegaavr
board = nano_every

You can override default Arduino Nano Every settings per build environment using board_*** option, where *** is a JSON object path from board manifest nano_every.json. For example, board_build.mcu, board_build.f_cpu, etc. 💖

[env:nano_every]
platform = atmelmegaavr
board = nano_every

; change microcontroller

**Contents** ✨

- Adafruit Circuit Playground Express
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

**Hardware** 💻

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from `8KB` to `2MB` of Flash, including a rich peripheral and feature mix. It's giving ✨versatile✨.

- Microcontroller: `SAMD21G18A`
- Frequency: `48MHz`
- Flash: `256KB`
- RAM: `32KB`
- Vendor: `Adafruit`

**Configuration** ⚙️

Please use the `adafruit_circuitplayground_m0` ID for the `projectconf_env_board` option in `projectconf`:

[env:adafruit_circuitplayground_m0] platform = atmelsam board = adafruit_circuitplayground_m0


You can override the default Adafruit Circuit Playground Express settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_circuitplayground_m0.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:adafruit_circuitplayground_m0] platform = atmelsam board = adafruit_circuitplayground_m0

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


**Uploading** 🚀💖

Adafruit Circuit Playground Express supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`. 🫶

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_circuitplayground_m0] platform = atmelsam board = adafruit_circuitplayground_m0

upload_protocol = sam-ba


**Debugging** 🐛✨

`piodebug` — the "1-click" solution for debugging with a <rainbow>zero configuration</rainbow>. Iconic. 👑 iykyk 💅

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

<purple>You can switch between debugging `debugging_tools`</purple> whenever the mood strikes, just by setting the `projectconf_debug_tool` option in `projectconf`. That's the whole toggle. No cap. 💅

And bestie, I need you to hear this part loud: <red>Adafruit Circuit Playground Express does not have on-board debug probe and IS NOT READY for debugging.</red> 😭 Like, it's giving "no probe, no vibes." You will need to use/buy one of external probe listed below.

- <cyan>**`debugging_tool_atmel-ice`**</cyan> — on-board: *(none)*, default: **Yes**
- <cyan>**`debugging_tool_blackmagic`**</cyan> — on-board: *(none)*, default: *(none)*
- <cyan>**`debugging_tool_jlink`**</cyan> — on-board: *(none)*, default: *(none)*

### Frameworks

- <mint>**`framework_arduino`**</mint> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

---

## 🦋 Adafruit Crickit M0 🦋

### Contents

- <hotpink>Adafruit Crickit M0</hotpink>
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. ✨

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Adafruit`

### Configuration

Please use <purple>`adafruit_crickit_m0`</purple> ID for `projectconf_env_board` option in `projectconf`:

[env:adafruit_crickit_m0] platform = atmelsam board = adafruit_crickit_m0


You can override default Adafruit Crickit M0 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_crickit_m0.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🔥

[env:adafruit_crickit_m0] platform = atmelsam board = adafruit_crickit_m0

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### Uploading

Adafruit Crickit M0 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`. 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_crickit_m0] platform = atmelsam board = adafruit_crickit_m0

upload_protocol = sam-ba


### Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. 💖

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Adafruit Crickit M0 does not have on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of external probe listed below.

- <cyan>**`debugging_tool_atmel-ice`**</cyan> — on-board: *(none)*, default: **Yes**
- <cyan>**`debugging_tool_blackmagic`**</cyan> — on-board: *(none)*, default: *(none)*
- <cyan>**`debugging_tool_jlink`**</cyan> — on-board: *(none)*, default: *(none)*

### Frameworks

- <mint>**`framework_arduino`**</mint> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

---

## 🌸 Adafruit Feather M0 🌸

### Contents

- <hotpink>Adafruit Feather M0</hotpink>
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. ⭐

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Adafruit`

### Configuration

Please use <purple>`adafruit_feather_m0`</purple> ID for `projectconf_env_board` option in `projectconf`:

[env:adafruit_feather_m0] platform = atmelsam board = adafruit_feather_m0


You can override default Adafruit Feather M0 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_feather_m0.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:adafruit_feather_m0] platform = atmelsam board = adafruit_feather_m0

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### Uploading

Adafruit Feather M0 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`. 🫶

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_feather_m0] platform = atmelsam board = adafruit_feather_m0

upload_protocol = sam-ba


### Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<pink>**Adafruit Feather M0**</pink> does <red>NOT</red> have an on-board debug probe, and it is <red>**NOT READY**</red> for debugging. Bestie, you literally have to use or buy one of the external probes listed below — no way around it. 🙈

Here's the compatible-tools lineup:

- **`debugging_tool_atmel-ice`** — on-board: nope · default: **Yes** ✅
- **`debugging_tool_blackmagic`** — on-board: nope · default: not the default
- **`debugging_tool_jlink`** — on-board: nope · default: not the default

---

## ✨ Frameworks ✨

Okay so here's what you can build with, and what each one actually *is*:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a <pink>huge</pink> range of Arduino boards. It's giving all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥

---

# 🦋 Adafruit Feather M0 Express 🦋

## 🌸 Contents 🌸

- Adafruit Feather M0 Express
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💅 Hardware 💅

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. ✨

The spec sheet, bestie:

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Adafruit`

---

## 🎀 Configuration 🎀

Please use `adafruit_feather_m0_express` as the ID for the `projectconf_env_board` option in `projectconf`:

[env:adafruit_feather_m0_express] platform = atmelsam board = adafruit_feather_m0_express


You can override the default Adafruit Feather M0 Express settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_feather_m0_express.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:adafruit_feather_m0_express] platform = atmelsam board = adafruit_feather_m0_express

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🔥 Uploading 🔥

Adafruit Feather M0 Express supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`. ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_feather_m0_express] platform = atmelsam board = adafruit_feather_m0_express

upload_protocol = sam-ba


---

## 🧚 Debugging 🧚

`piodebug` — the "1-click" solution for debugging with a zero configuration. No cap, it's iconic. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>**Adafruit Feather M0 Express**</pink> does <red>NOT</red> have an on-board debug probe and is <red>**NOT READY**</red> for debugging. You will need to use or buy one of the external probes listed below. 😭

- **`debugging_tool_atmel-ice`** — on-board: nope · default: **Yes** ✅
- **`debugging_tool_blackmagic`** — on-board: nope · default: not the default
- **`debugging_tool_jlink`** — on-board: nope · default: not the default

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## 🌸 Adafruit Gemma M0 🌸

### 💖 Contents 💖

- Adafruit Gemma M0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🦋 Hardware 🦋

<purple>Platform `platform_atmelsam`:</purple> Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 💅

*okay bestie that's where this part wraps the thought — the rest of the Gemma M0 deets are rolling up next, no cap* 🫶

- **Microcontroller** — `SAMD21E18A` ✨
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Adafruit`

---

### ✨ Configuration ✨

okay bestie listen up 💅 if you wanna set this board, please use the `adafruit_gemma_m0` ID for the `projectconf_env_board` option in `projectconf`:

[env:adafruit_gemma_m0] platform = atmelsam board = adafruit_gemma_m0


and the way that you can <pink>override</pink> the default Adafruit Gemma M0 settings per build environment? it's giving `board_***` option energy, where `***` is a JSON object path from the board manifest `adafruit_gemma_m0.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:adafruit_gemma_m0] platform = atmelsam board = adafruit_gemma_m0

; change microcontroller board_build.mcu = samd21e18a

; change MCU frequency board_build.f_cpu = 48000000L


---

### 💖 Uploading 💖

Adafruit Gemma M0 supports the next uploading protocols, no cap:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba` 👑

and you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_gemma_m0] platform = atmelsam board = adafruit_gemma_m0

upload_protocol = sam-ba


---

### 🦋 Debugging 🦋

`pio debug` — the "1-click" solution for debugging with a zero configuration. iconic honestly ✨

> **WARNING:** 🚨
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Adafruit Gemma M0 does <red>not</red> have an on-board debug probe and **IS NOT READY** for debugging 😭 you will need to use/buy one of the external probes listed below.

- **`debugging_tool_atmel-ice`** — On-board: *(none)*, Default: **Yes** 👑
- **`debugging_tool_blackmagic`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)*, Default: *(none)*

---

### 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. fr fr, the range is *range*-ing 💅

---

# 👑 Adafruit Grand Central M4 👑

## ✨ Contents ✨

- Adafruit Grand Central M4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🎀 Hardware 🎀

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from `8KB` to `2MB` of Flash including a rich peripheral and feature mix. lowkey a whole buffet of specs 🍓

- **Microcontroller** — `SAMD51P20A`
- **Frequency** — `120MHz` ⚡
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `Adafruit`

---

### ✨ Configuration ✨

Please use the `adafruit_grandcentral_m4` ID for the `projectconf_env_board` option in `projectconf`:

[env:adafruit_grandcentral_m4] platform = atmelsam board = adafruit_grandcentral_m4


You can override the default Adafruit Grand Central M4 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_grandcentral_m4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:adafruit_grandcentral_m4]

[env:adafruit_grandcentral_m4] platform = atmelsam board = adafruit_grandcentral_m4

; change microcontroller board_build.mcu = samd51p20a

; change MCU frequency board_build.f_cpu = 120000000L


## <pink>Uploading</pink> 🚀

okay so the <hotpink>Adafruit Grand Central M4</hotpink> supports the next uploading protocols, bestie:

- **`atmel-ice`**
- **`jlink`**
- **`sam-ba`**

The default protocol is **`sam-ba`** ✨

You can change the upload protocol using the `upload_protocol` option:

[env:adafruit_grandcentral_m4] platform = atmelsam board = adafruit_grandcentral_m4

upload_protocol = sam-ba


---

## <purple>Debugging</purple> 🐛💜

`pio debug` — the "1-click" solution for debugging with a zero configuration. iconic behavior honestly.

> <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the `debug_tool` option in `platformio.ini`.

<yellow>Adafruit Grand Central M4</yellow> does **not** have an on-board debug probe and <red>IS NOT READY for debugging</red>. You will need to use/buy one of the external probes listed below:

| Compatible Tools | On-board | Default |
|---|---|---|
| `atmel-ice` | | Yes |
| `jlink` | | |

---

## <cyan>Frameworks</cyan> 🌈

| Name | Description |
|---|---|
| `arduino` | Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. |

---

# <hotpink>Adafruit Hallowing M0</hotpink> 👑🦋

## Contents ✨

- Adafruit Hallowing M0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## <mint>Hardware</mint> 🔧

Platform `atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 💅

| Microcontroller | SAMD21G18A |
|---|---|
| Frequency | 48MHz |
| Flash | 256KB |
| RAM | 32KB |
| Vendor | Adafruit |

---

## <lavender>Configuration</lavender> 🎀

Please use `adafruit_hallowing` ID for the `board` option in `platformio.ini`:

[env:adafruit_hallowing] platform = atmelsam board = adafruit_hallowing


You can override default <yellow>Adafruit Hallowing M0</yellow> settings per build environment using `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_hallowing.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. fr fr, that's the move.

[env:adafruit_hallowing] platform = atmelsam board = adafruit_hallowing

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## <pink>Uploading</pink> 🚀

<yellow>Adafruit Hallowing M0</yellow> supports the next uploading protocols:

- **`atmel-ice`**
- **`blackmagic`**
- **`jlink`**
- **`sam-ba`**

The default protocol is **`sam-ba`** ✨

You can change the upload protocol using the `upload_protocol` option:

[env:adafruit_hallowing] platform = atmelsam board = adafruit_hallowing

upload_protocol = sam-ba


---

## <purple>Debugging</purple> 🐛💜

`pio debug` — the "1-click" solution for debugging with a zero configuration.

> <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the `debug_tool` option in `platformio.ini`.

> 😭 bestie. The **Adafruit Hallowing M0** does not have an on-board debug probe and **IS NOT READY for debugging**. You will need to use/buy one of the external probes listed below. No cap.

Compatible tools for the Hallowing M0:

- **`debugging_tool_atmel-ice`** — on-board: nope · default: **Yes** ✅
- **`debugging_tool_blackmagic`** — on-board: nope · default: —
- **`debugging_tool_jlink`** — on-board: nope · default: —

### Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving *maker main character energy* 🎀

---

## Adafruit Hallowing M4 👑

### 📋 Contents

- Adafruit Hallowing M4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 🔧

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller**: `SAMD51J19A`
- **Frequency**: `120MHz`
- **Flash**: `496KB`
- **RAM**: `192KB`
- **Vendor**: Adafruit

### Configuration 🛠️

Please use `adafruit_hallowing_m4` ID for `projectconf_env_board` option in projectconf:

[env:adafruit_hallowing_m4] platform = atmelsam board = adafruit_hallowing_m4


You can override default Adafruit Hallowing M4 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_hallowing_m4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Like, go off, customize it 💅

[env:adafruit_hallowing_m4] platform = atmelsam board = adafruit_hallowing_m4

; change microcontroller board_build.mcu = samd51j19a

; change MCU frequency board_build.f_cpu = 120000000L


### Uploading 🚀

Adafruit Hallowing M4 supports the next uploading protocols:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_hallowing_m4] platform = atmelsam board = adafruit_hallowing_m4

upload_protocol = sam-ba


### Debugging 🔍

`piodebug` — "1-click" solution for debugging with a zero configuration.

> **WARNING**: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in projectconf.

Adafruit Hallowing M4 does not have on-board debug probe and IS NOT READY for debugging. You will need to use/buy one of external probe listed below.

- **`debugging_tool_atmel-ice`** — on-board: nope · default: **Yes** ✅
- **`debugging_tool_jlink`** — on-board: nope · default: —

### Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## Adafruit ItsyBitsy M0 🦋

### 📋 Contents

- Adafruit ItsyBitsy M0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 🔧

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller**: `SAMD21G18A`
- **Frequency**: `48MHz`
- **Flash**: `256KB`
- **RAM**: `32KB`
- **Vendor**: Adafruit

### Configuration 🛠️

Please use `adafruit_itsybitsy_m0` ID for `projectconf_env_board` option in projectconf:

[env:adafruit_itsybitsy_m0] platform = atmelsam board = adafruit_itsybitsy_m0


You can override default Adafruit ItsyBitsy M0 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_itsybitsy_m0.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:adafruit_itsybitsy_m0] platform = atmelsam board = adafruit_itsybitsy_m0

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### Uploading 🚀

Adafruit ItsyBitsy M0 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_itsybitsy_m0] platform = atmelsam board = adafruit_itsybitsy_m0

upload_protocol = sam-ba


### Debugging 🔍

`piodebug` — "1-click" solution for debugging with a zero configuration.

> **WARNING**: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in projectconf.

<pink>Adafruit ItsyBitsy M0 does not have on-board debug probe and</pink> **IS NOT READY for debugging**. 💀 You will need to use/buy one of external probe listed below.

- **`debugging_tool_atmel-ice`** — on-board probe? nope 🚫 — **Default: Yes** ✅
- **`debugging_tool_blackmagic`** — on-board probe? nope 🚫 — not the default
- **`debugging_tool_jlink`** — on-board probe? nope 🚫 — not the default

### ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨🦋

---

## 🎀 Adafruit ItsyBitsy M4 🎀

### 📋 Contents

- Adafruit ItsyBitsy M4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller** — `SAMD51G19A`
- **Frequency** — `120MHz`
- **Flash** — `512KB`
- **RAM** — `192KB`
- **Vendor** — Adafruit

### ⚙️ Configuration

Please use `adafruit_itsybitsy_m4` ID for `projectconf_env_board` option in `projectconf`:

[env:adafruit_itsybitsy_m4] platform = atmelsam board = adafruit_itsybitsy_m4


You can override default Adafruit ItsyBitsy M4 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_itsybitsy_m4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:adafruit_itsybitsy_m4] platform = atmelsam board = adafruit_itsybitsy_m4

; change microcontroller board_build.mcu = samd51g19a

; change MCU frequency board_build.f_cpu = 120000000L


### 🚀 Uploading

Adafruit ItsyBitsy M4 supports the next uploading protocols:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_itsybitsy_m4] platform = atmelsam board = adafruit_itsybitsy_m4

upload_protocol = sam-ba


### 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. ✨

> **WARNING:** 🚨
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Adafruit ItsyBitsy M4 does not have on-board debug probe and **IS NOT READY for debugging**. 💀 You will need to use/buy one of external probe listed below.

- **`debugging_tool_atmel-ice`** — on-board probe? nope 🚫 — **Default: Yes** ✅
- **`debugging_tool_jlink`** — on-board probe? nope 🚫 — not the default

### ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨🦋

---

## 👑 Adafruit MONSTER M4SK 👑

### 📋 Contents

- Adafruit MONSTER M4SK
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller** — `SAMD51G19A`
- **Frequency** — `120MHz`
- **Flash** — `496KB`
- **RAM** — `192KB`
- **Vendor** — Adafruit

### ⚙️ Configuration

Please use `adafruit_monster_m4sk` ID for `projectconf_env_board` option in `projectconf`:

[env:adafruit_monster_m4sk] platform = atmelsam board = adafruit_monster_m4sk


You can override default Adafruit MONSTER M4SK settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_monster_m4sk.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:adafruit_monster_m4sk] platform = atmelsam board = adafruit_monster_m4sk

; change microcontroller board_build.mcu = samd51g19a

; change MCU frequency board_build.f_cpu = 120000000L


### 🚀 Uploading

Adafruit MONSTER M4SK supports the next uploading protocols:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_monster_m4sk] platform = atmelsam board = adafruit_monster_m4sk

upload_protocol = sam-ba


### 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. ✨

> **WARNING:** 🚨
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<pink>ok so like — the **Adafruit MONSTER M4SK**?? bestie. she does **not** have an on-board debug probe and she is **NOT READY for debugging**. 💀 no cap. you're gonna need to use/buy one of the external probes listed below, that's just the vibe.</pink>

Compatible tools for the MONSTER M4SK:

- **`debugging_tool_atmel-ice`** — no on-board probe, **Default: Yes** ✨
- **`debugging_tool_jlink`** — no on-board probe, not the default

---

### 🌸 Frameworks 🌸

- **`framework_arduino`** — the Arduino Wiring-based Framework, and the way it lets you write cross-platform software to control devices attached to a wide range of Arduino boards?? it's giving *all kinds of creative coding, interactive objects, spaces or physical experiences*. iconic. 🎀

---

## 👑 Adafruit Metro M0 Expresss 👑

### 💖 Contents 💖

- Adafruit Metro M0 Expresss
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform `platform_atmelsam`: Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. (yes that hyphen spacing is real, i'm not touching it, it's canon 💅)

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Adafruit`

### ⚙️ Configuration ⚙️

Please use `adafruit_metro_m0` ID for `projectconf_env_board` option in `projectconf`:

[env:adafruit_metro_m0] platform = atmelsam board = adafruit_metro_m0


You can override default Adafruit Metro M0 Expresss settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_metro_m0.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:adafruit_metro_m0] platform = atmelsam board = adafruit_metro_m0

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### 🚀 Uploading 🚀

Adafruit Metro M0 Expresss supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_metro_m0] platform = atmelsam board = adafruit_metro_m0

upload_protocol = sam-ba


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally zero config bestie, we love her. 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Adafruit Metro M0 Expresss does not have on-board debug probe and **IS NOT READY for debugging**. You will need to use/buy one of external probe listed below.

- **`debugging_tool_atmel-ice`** — no on-board probe, **Default: Yes** ✨
- **`debugging_tool_blackmagic`** — no on-board probe, not the default
- **`debugging_tool_jlink`** — no on-board probe, not the default

### 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

---

## 💜 Adafruit Metro M4 💜

### 🎀 Contents 🎀

- Adafruit Metro M4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform `platform_atmelsam`: Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller** — `SAMD51J19A`
- **Frequency** — `120MHz`
- **Flash** — `512KB`
- **RAM** — `192KB`
- **Vendor** — `Adafruit`

### ⚙️ Configuration ⚙️

Please use `adafruit_metro_m4` ID for `projectconf_env_board` option in `projectconf`:

[env:adafruit_metro_m4] platform = atmelsam board = adafruit_metro_m4


You can override default Adafruit Metro M4 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_metro_m4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:adafruit_metro_m4] platform = atmelsam board = adafruit_metro_m4

; change microcontroller board_build.mcu = samd51j19a

; change MCU frequency board_build.f_cpu = 120000000L


### 🚀 Uploading 🚀

Adafruit Metro M4 supports the next uploading protocols:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_metro_m4] platform = atmelsam board = adafruit_metro_m4

upload_protocol = sam-ba


### 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<pink>Adafruit Metro M4</pink> does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭 like bestie it's just not that girl yet. You will need to use/buy one of the external probes listed below 🫶

Compatible tools for this board:

- **`debugging_tool_atmel-ice`** — on-board: nope (blank), default: **Yes** ✨
- **`debugging_tool_jlink`** — on-board: nope (blank), default: (blank, so not the default) 🙈

---

### ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 💖 iconic behaviour honestly.

---

## 🦋 Adafruit Metro M4 AirLift Lite 🦋

### 📋 Contents

- Adafruit Metro M4 AirLift Lite
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix 👑

- **Microcontroller** — `SAMD51J19A`
- **Frequency** — `120MHz`
- **Flash** — `512KB`
- **RAM** — `192KB`
- **Vendor** — `Adafruit`

---

### ⚙️ Configuration

Please use `adafruit_metro_m4_airliftlite` ID for `projectconf_env_board` option in `projectconf`:

[env:adafruit_metro_m4_airliftlite] platform = atmelsam board = adafruit_metro_m4_airliftlite


You can override default Adafruit Metro M4 AirLift Lite settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_metro_m4_airliftlite.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:adafruit_metro_m4_airliftlite] platform = atmelsam board = adafruit_metro_m4_airliftlite

; change microcontroller board_build.mcu = samd51j19a

; change MCU frequency board_build.f_cpu = 120000000L


---

### 🚀 Uploading

Adafruit Metro M4 AirLift Lite supports the next uploading protocols:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba` 🌸

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_metro_m4_airliftlite] platform = atmelsam board = adafruit_metro_m4_airliftlite

upload_protocol = sam-ba


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Adafruit Metro M4 AirLift Lite does not have on-board debug probe and **IS NOT READY** for debugging 💀 you will need to use/buy one of external probe listed below 🫶

- **`debugging_tool_atmel-ice`** — on-board: nope (blank), default: **Yes** ✨
- **`debugging_tool_jlink`** — on-board: nope (blank), default: (blank) 🙈

---

### 🌈 Frameworks 🌈

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, to create all kinds of creative coding, interactive objects, spaces or physical experiences 💜 no cap.

---

## 👑 Adafruit PyGamer Advance M4 👑

### 📋 Contents

- Adafruit PyGamer Advance M4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix 🧚

- **Microcontroller** — `SAMD51J20A`
- **Frequency** — `120MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `Adafruit`

---

### ⚙️ Configuration

Please use `adafruit_pygamer_advance_m4` ID for `projectconf_env_board` option in `projectconf`:

[env:adafruit_pygamer_advance_m4] platform = atmelsam board = adafruit_pygamer_advance_m4


You can override default Adafruit PyGamer Advance M4 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_pygamer_advance_m4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:adafruit_pygamer_advance_m4] platform = atmelsam board = adafruit_pygamer_advance_m4

; change microcontroller board_build.mcu = samd51j20a

; change MCU frequency board_build.f_cpu = 120000000L


---

### 🚀 Uploading

Adafruit PyGamer Advance M4 supports the next uploading protocols:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba` 🌸

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_pygamer_advance_m4] platform = atmelsam board = adafruit_pygamer_advance_m4

upload_protocol = sam-ba


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<pink>Adafruit PyGamer Advance M4</pink> <rainbow>does NOT have an on-board debug probe</rainbow> and it <red>IS NOT READY for debugging</red> 😭 like bestie she simply was not built for that life. You're gonna have to <bold>use or buy one of the external probes</bold> listed down below, no cap:

- **`debugging_tool_atmel-ice`** — on-board probe? *nope* · default? **Yes** ✅
- **`debugging_tool_jlink`** — on-board probe? *nope* · default? *nope*

### ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨🦋

---

## 👑 Adafruit PyGamer M4 Express 👑

### Contents

- Adafruit PyGamer M4 Express
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform <purple>`platform_atmelsam`</purple>: Atmel | SMART offers Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash, and packing a rich peripheral and feature mix. 💅

- **Microcontroller** — `SAMD51J19A`
- **Frequency** — `120MHz`
- **Flash** — `512KB`
- **RAM** — `192KB`
- **Vendor** — Adafruit

### ⚙️ Configuration ⚙️

Please use the <hotpink>`adafruit_pygamer_m4`</hotpink> ID for the <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:adafruit_pygamer_m4] platform = atmelsam board = adafruit_pygamer_m4


You can override the default Adafruit PyGamer M4 Express settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest `adafruit_pygamer_m4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:adafruit_pygamer_m4] platform = atmelsam board = adafruit_pygamer_m4

; change microcontroller board_build.mcu = samd51j19a

; change MCU frequency board_build.f_cpu = 120000000L


### 🚀 Uploading 🚀

Adafruit PyGamer M4 Express supports these uploading protocols, bestie:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is <mint>`sam-ba`</mint> ✨

You can change the upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:adafruit_pygamer_m4] platform = atmelsam board = adafruit_pygamer_m4

upload_protocol = sam-ba


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debugging_tools` using the <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

Adafruit PyGamer M4 Express <red>does not have an on-board debug probe</red> and <red>IS NOT READY for debugging</red>. You will need to use/buy one of the external probes listed below 😭:

- **`debugging_tool_atmel-ice`** — on-board probe? *nope* · default? **Yes** ✅
- **`debugging_tool_jlink`** — on-board probe? *nope* · default? *nope*

### ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀🌈

---

## 🦋 Adafruit PyPortal M4 🦋

### Contents

- Adafruit PyPortal M4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform <purple>`platform_atmelsam`</purple>: Atmel | SMART offers Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash, and packing a rich peripheral and feature mix. 💅

- **Microcontroller** — `SAMD51J20A`
- **Frequency** — `120MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — Adafruit

### ⚙️ Configuration ⚙️

Please use the <hotpink>`adafruit_pyportal_m4`</hotpink> ID for the <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:adafruit_pyportal_m4] platform = atmelsam board = adafruit_pyportal_m4


You can override the default Adafruit PyPortal M4 settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest `adafruit_pyportal_m4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:adafruit_pyportal_m4] platform = atmelsam board = adafruit_pyportal_m4

; change microcontroller board_build.mcu = samd51j20a

; change MCU frequency board_build.f_cpu = 120000000L


### 🚀 Uploading 🚀

Adafruit PyPortal M4 supports these uploading protocols, bestie:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is <mint>`sam-ba`</mint> ✨

You can change the upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:adafruit_pyportal_m4] platform = atmelsam board = adafruit_pyportal_m4

upload_protocol = sam-ba


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debugging_tools` using the <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

...and like, bestie, the <pink>Adafruit PyPortal M4</pink> does **not** have an on-board debug probe and is <red>IS NOT READY</red> for debugging 💀. You will need to use/buy one of the external probes listed below, no cap.

- **Compatible Tools**
  - **`debugging_tool_atmel-ice`** — on-board: <lavender>(nothing, the column is empty)</lavender> · default: **Yes** ✨
  - **`debugging_tool_jlink`** — on-board: <lavender>(empty)</lavender> · default: <lavender>(empty)</lavender>

---

## 🦋 Frameworks

Okay so here's the framework tea 🍵:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <purple>(it's giving main character energy for real)</purple>

---

# 👑 Adafruit PyPortal M4 Titano

## 🎀 Contents

- Adafruit PyPortal M4 Titano
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💅 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. <mint>obsessed with the range honestly</mint> ✨

- **Microcontroller** — `SAMD51J20A`
- **Frequency** — `120MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `Adafruit`

---

## 🌸 Configuration

Bestie, please use `adafruit_pyportal_m4_titano` as the ID for the `projectconf_env_board` option in `projectconf`:

[env:adafruit_pyportal_m4_titano] platform = atmelsam board = adafruit_pyportal_m4_titano


You can override the default Adafruit PyPortal M4 Titano settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_pyportal_m4_titano.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:adafruit_pyportal_m4_titano] platform = atmelsam board = adafruit_pyportal_m4_titano

; change microcontroller board_build.mcu = samd51j20a

; change MCU frequency board_build.f_cpu = 120000000L


---

## 🔥 Uploading

Adafruit PyPortal M4 Titano supports the next uploading protocols, periodt:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba` 💖

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_pyportal_m4_titano] platform = atmelsam board = adafruit_pyportal_m4_titano

upload_protocol = sam-ba


---

## 💜 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <rainbow>iconic behaviour honestly</rainbow> ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>do not skip this step bestie i'm begging 😭</red>

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Adafruit PyPortal M4 Titano does **not** have an on-board debug probe and <red>IS NOT READY</red> for debugging 💀. You will need to use/buy one of the external probes listed below, fr fr.

- **Compatible Tools**
  - **`debugging_tool_atmel-ice`** — on-board: <lavender>(empty)</lavender> · default: **Yes** ✨
  - **`debugging_tool_jlink`** — on-board: <lavender>(empty)</lavender> · default: <lavender>(empty)</lavender>

---

- **`framework_arduino`** — Arduino Wiring-based Framework 💖 it's the one that lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior fr.

---

## 🌸 Adafruit Trellis M4 🌸

### ✨ Contents ✨

- Adafruit Trellis M4 👑
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### 💅 Hardware 💅

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. no cap, that's a whole buffet of chips.

- **Microcontroller** — `SAMD51J19A`
- **Frequency** — `120MHz`
- **Flash** — `512KB`
- **RAM** — `192KB`
- **Vendor** — `Adafruit`

---

### 🎀 Configuration 🎀

bestie pls use the `adafruit_trellis_m4` ID for the `projectconf_env_board` option in `projectconf`:

[env:adafruit_trellis_m4] platform = atmelsam board = adafruit_trellis_m4


You can override default Adafruit Trellis M4 settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `adafruit_trellis_m4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:adafruit_trellis_m4] platform = atmelsam board = adafruit_trellis_m4

; change microcontroller board_build.mcu = samd51j19a

; change MCU frequency board_build.f_cpu = 120000000L


---

### 🦋 Uploading 🦋

Adafruit Trellis M4 supports the next uploading protocols:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba` ✨

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_trellis_m4] platform = atmelsam board = adafruit_trellis_m4

upload_protocol = sam-ba


---

### 🔥 Debugging 🔥

`piodebug` — "1-click" solution for debugging with a zero configuration. the way that just *works* 😭

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this step bestie, fr fr.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Adafruit Trellis M4 does not have on-board debug probe and **IS NOT READY** for debugging. 💀 You will need to use/buy one of the external probes listed below.

**Compatible Tools**

- `atmel-ice` — On-board: *(none)*, Default: `Yes`
- `jlink` — On-board: *(none)*, Default: *(none)*

---

### 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. periodt. 💜

---

## 🎀 Adafruit Trinket M0 🎀

### ✨ Contents ✨

- Adafruit Trinket M0 👑
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### 💅 Hardware 💅

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. yes, same energy as above, it's the whole family vibe 🌸

│        │ Microcontroller │ SAMD21E18A │        │
                 │        ├──────────┼──────┼────────────┤        │
                 │        │ Frequency│      │ 48MHz      │        │
                 │        ├──────────┼──────┼────────────┤        │
                 │        │ Flash    │      │ 256KB      │        │
                 │        ├──────────┼──────┼────────────┤        │
                 │        │ RAM      │      │ 32KB       │        │
                 │        ├──────────┼──────┼────────────┤        │
                 │        │ Vendor   │      │ Adafruit   │        │
                 │        └──────────┼──────┴────────────┘        │
                 │                   │                            │

Okay so that table up there is your cheat sheet for the Trinket M0 board, bestie — <pink>microcontroller</pink> is `SAMD21E18A`, it runs at <cyan>48MHz</cyan>, you get <cyan>256KB</cyan> of Flash and <cyan>32KB</cyan> of RAM, and the vendor is <purple>Adafruit</purple>. Screenshot it, memorize it, whatever 💅

## ⚙️ Configuration

Please use `adafruit_trinket_m0` ID for the `board` option in `platformio.ini`, like so:

[env:adafruit_trinket_m0] platform = atmelsam board = adafruit_trinket_m0


The way that you can <hotpink>override</hotpink> default Adafruit Trinket M0 settings per build environment is with the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_trinket_m0.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:adafruit_trinket_m0] platform = atmelsam board = adafruit_trinket_m0

; change microcontroller board_build.mcu = samd21e18a

; change MCU frequency board_build.f_cpu = 48000000L


Like… you're literally customizing the chip from a config file. It's giving main character energy ✨

## 🚀 Uploading

Adafruit Trinket M0 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba` 🫶

You can change the upload protocol using the `upload_protocol` option:

[env:adafruit_trinket_m0] platform = atmelsam board = adafruit_trinket_m0

upload_protocol = sam-ba


## 🐛 Debugging

`pio debug` — a "1-click" solution for debugging with a zero configuration. Obsessed, fr fr 💖

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `debug_tool` option in `platformio.ini`.

Adafruit Trinket M0 does **not** have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. No cap, that's the vibe check result 😭

Compatible Tools:

- `atmel-ice` — On-board: (none), Default: **Yes**
- `blackmagic` — On-board: (none), Default: (none)
- `jlink` — On-board: (none), Default: (none)

## 🌈 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

# 🎀 Adafruit pIRkey

## 🌸 Contents

- Adafruit pIRkey
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

                 │        ┌──────────┼──────┬────────────┐        │
                 │        │ Microcontroller │ SAMD21E18A │        │
                 │        ├──────────┼──────┼────────────┤        │
                 │        │ Frequency│      │ 48MHz      │        │
                 │        ├──────────┼──────┼────────────┤        │
                 │        │ Flash    │      │ 256KB      │        │
                 │        ├──────────┼──────┼────────────┤        │
                 │        │ RAM      │      │ 32KB       │        │
                 │        ├──────────┼──────┼────────────┤        │
                 │        │ Vendor   │      │ Adafruit   │        │
                 │        └──────────┼──────┴────────────┘        │
                 │                   │                            │

Same chip energy as the Trinket, not me noticing 👀 — `SAMD21E18A`, <cyan>48MHz</cyan>, <cyan>256KB</cyan> Flash, <cyan>32KB</cyan> RAM, vendor <purple>Adafruit</purple>. Iconic.

## ⚙️ Configuration

Please use `adafruit_pirkey` ID for the `board` option in

<pink>okay so</pink> you're still in the `projectconf` zone, and now we're peeking at a *whole* example env. Here's the vibe:

[env:adafruit_pirkey] platform = atmelsam board = adafruit_pirkey


You can override default Adafruit pIRkey settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_pirkey.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>bestie it's literally plug-and-play with your own values 💅</purple>

[env:adafruit_pirkey] platform = atmelsam board = adafruit_pirkey

; change microcontroller board_build.mcu = samd21e18a

; change MCU frequency board_build.f_cpu = 48000000L


### <cyan>Uploading</cyan> 📤

Adafruit pIRkey supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`. <mint>no cap, that's the one it ships with</mint>

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_pirkey] platform = atmelsam board = adafruit_pirkey

upload_protocol = sam-ba


### <hotpink>Debugging</hotpink> 🐛✨

`piodebug` — the "1-click" solution for debugging with a zero configuration. <rainbow>iconic behavior honestly</rainbow>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Adafruit pIRkey does not have on-board debug probe and **IS NOT READY** for debugging. <red>she's not built for it bestie, no shade</red> You will need to use/buy one of external probe listed below.

| Compatible Tools | On-board | Default |
| --- | --- | --- |
| `debugging_tool_atmel-ice` |  | Yes |
| `debugging_tool_blackmagic` |  |  |
| `debugging_tool_jlink` |  |  |

### <lavender>Frameworks</lavender> 🧚

| Name | Description |
| --- | --- |
| `framework_arduino` | Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. |

---

## <pink>Adafruit pyBadge AirLift M4</pink> 👑

### Contents 📋

- Adafruit pyBadge AirLift M4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <cyan>Hardware</cyan> 🔧

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

| Microcontroller | SAMD51J20A |
| --- | --- |
| Frequency | 120MHz |
| Flash | 1008KB |
| RAM | 192KB |
| Vendor | Adafruit |

### <purple>Configuration</purple> ⚙️

Please use `adafruit_pybadge_airlift_m4` ID for the `projectconf_env_board` option in `projectconf`:

[env:adafruit_pybadge_airlift_m4] platform = atmelsam board = adafruit_pybadge_airlift_m4


You can override default Adafruit pyBadge AirLift M4 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_pybadge_airlift_m4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>iykyk 💖</mint>

[env:adafruit_pybadge_airlift_m4] platform = atmelsam board = adafruit_pybadge_airlift_m4

; change microcontroller board_build.mcu = samd51j20a

; change MCU frequency board_build.f_cpu = 120000000L


### <hotpink>Uploading</hotpink> 📤

Adafruit pyBadge AirLift M4 supports the next uploading protocols:

- `atmel-ice`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`. <yellow>the default really said "I got you" 💅</yellow>

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_pybadge_airlift_m4] platform = atmelsam board = adafruit_pybadge_airlift_m4

upload_protocol = sam-ba


### 🐞 Debugging 💅

okay so first thing's first — `piodebug` is literally the **"1-click" solution for debugging with a zero configuration**. one click. zero config. no thoughts, just vibes. ✨

> <yellow>⚠️ **WARNING:**</yellow> bestie, you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further instructions and configuration information. it's giving "necessary evil" but we move. 🫶

you can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`. easy.

now the tea ☕ — <pink>**Adafruit pyBadge AirLift M4**</pink> does not have on-board debug probe and IS **NOT READY** for debugging. you will need to use/buy one of external probe listed below. periodt. 😭

compatible tools, ranked:

- **`debugging_tool_atmel-ice`** — on-board: *(none)* · default: <green>**Yes**</green> 👑
- **`debugging_tool_jlink`** — on-board: *(none)* · default: *(none)*

---

### 🧚 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. she's versatile, she's iconic, she ate. 💜

---

## 👑 Adafruit pyBadge M4 Express

### 📖 Contents

the roadmap, bestie:

- Adafruit pyBadge M4 Express
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

platform `platform_atmelsam`: Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

specs, because you know you wanna know:

- **Microcontroller** — `SAMD51J19A`
- **Frequency** — `120MHz` 🔥
- **Flash** — `512KB`
- **RAM** — `192KB`
- **Vendor** — `Adafruit` 🎀

### ⚙️ Configuration

please use `adafruit_pybadge_m4` ID for `projectconf_env_board` option in `projectconf`:

[env:adafruit_pybadge_m4] platform = atmelsam board = adafruit_pybadge_m4


you can override default Adafruit pyBadge M4 Express settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_pybadge_m4.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:adafruit_pybadge_m4] platform = atmelsam board = adafruit_pybadge_m4

; change microcontroller board_build.mcu = samd51j19a

; change MCU frequency board_build.f_cpu = 120000000L


### 🚀 Uploading

Adafruit pyBadge M4 Express supports the next uploading protocols:

- `atmel-ice`
- `jlink`
- `sam-ba`

default protocol is `sam-ba` 💅

you can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_pybadge_m4] platform = atmelsam board = adafruit_pybadge_m4

upload_protocol = sam-ba


### 🐞 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. ✨

> <yellow>⚠️ **WARNING:**</yellow> you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further instructions and configuration information.

you can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<hotpink>**Adafruit pyBadge M4 Express**</hotpink> does not have on-board debug probe and IS **NOT READY** for debugging. you will need to use/buy one of external probe listed below. 💀

- **`debugging_tool_atmel-ice`** — on-board: *(none)* · default: <green>**Yes**</green>
- **`debugging_tool_jlink`** — on-board: *(none)* · default: *(none)*

### 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🦋 Arduino Due (Programming Port)

### 📖 Contents

- Arduino Due (Programming Port)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

platform `platform_atmelsam`: Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller** — `AT91SAM3X8E`
- **Frequency** — `84MHz`
- **Flash** — `512KB`
- **RAM** — `96KB`
- **Vendor** — `Arduino`

### ⚙️ Configuration

please use `due` ID for `projectconf_env_board` option in `projectconf`:

[env:due] platform = atmelsam board = due


you can override default Arduino Due (Programming Port) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `due.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:due] platform = atmelsam board = due

; change microcontroller board_build.mcu = at91sam3x8e

; change MCU frequency board_build.f_cpu = 84000000L


### 🚀 Uploading

Arduino Due (Programming Port) supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`
- `stlink`

default protocol is `sam-ba` 💅

you can change upload protocol using `projectconf_upload_protocol` option:

[env:due] platform = atmelsam board = due

upload_protocol = sam-ba


### 🐞 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. ✨

> <yellow>⚠️ **WARNING:**</yellow> you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further instructions and configuration information.

you can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<pink>Arduino Due (Programming Port)</pink> does **not** have an on-board debug probe and is <red>IS NOT READY</red> for debugging 😭 You will need to use/buy one of the external probes listed below, bestie:

- **`debugging_tool_atmel-ice`** — not on-board, and it's the <green>default</green> ✅
- **`debugging_tool_blackmagic`** — not on-board, not default
- **`debugging_tool_jlink`** — not on-board, not default
- **`debugging_tool_stlink`** — not on-board, not default

(like, none of them are on-board, so that whole column is just… empty 💀)

## ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. 🧚
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔒

---

# 👑 Arduino Due (USB Native Port) 👑

## Contents

- Arduino Due (USB Native Port)

  - Hardware

  - Configuration

  - Uploading

  - Debugging

  - Frameworks

## 🔧 Hardware 🔧

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. <purple>iconic tbh</purple>

- **Microcontroller** — `AT91SAM3X8E`
- **Frequency** — `84MHz`
- **Flash** — `512KB`
- **RAM** — `96KB`
- **Vendor** — Arduino

## ⚙️ Configuration ⚙️

Please use <cyan>`dueUSB`</cyan> ID for the `projectconf_env_board` option in `projectconf`:

[env:dueUSB] platform = atmelsam board = dueUSB


You can override default Arduino Due (USB Native Port) settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `dueUSB.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:dueUSB] platform = atmelsam board = dueUSB

; change microcontroller board_build.mcu = at91sam3x8e

; change MCU frequency board_build.f_cpu = 84000000L


## 🚀 Uploading 🚀

Arduino Due (USB Native Port) supports the next uploading protocols:

- `atmel-ice`

- `blackmagic`

- `jlink`

- `sam-ba`

- `stlink`

Default protocol is <green>`sam-ba`</green>

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:dueUSB] platform = atmelsam board = dueUSB

upload_protocol = sam-ba


## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. ✨

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Arduino Due (USB Native Port) does **not** have an on-board debug probe and <red>IS NOT READY</red> for debugging 😭 You will need to use/buy one of the external probes listed below:

- **`debugging_tool_atmel-ice`** — not on-board, and it's the <green>default</green> ✅
- **`debugging_tool_blackmagic`** — not on-board, not default
- **`debugging_tool_jlink`** — not on-board, not default
- **`debugging_tool_stlink`** — not on-board, not default

## ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. 🧚

---

# 🌸 Arduino M0 🌸

## Contents

- Arduino M0

  - Hardware

  - Configuration

  - Uploading

  - Debugging

  - Frameworks

## 💖 Hardware

Platform `platform_atmelsam`: Atmel | SMART is out here serving Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash, and honestly? A rich peripheral and feature mix. It's giving range. 🦋

- Microcontroller — `SAMD21G18A`
- Frequency — `48MHz`
- Flash — `256KB`
- RAM — `32KB`
- Vendor — `Arduino`

---

## ✨ Configuration ✨

Bestie, please use the `mzeroUSB` ID for the `projectconf_env_board` option in `projectconf`:

[env:mzeroUSB] platform = atmelsam board = mzeroUSB


You can override the default Arduino M0 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mzeroUSB.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:mzeroUSB] platform = atmelsam board = mzeroUSB

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🌸 Uploading 🌸

Arduino M0 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `stk500v2`

Default protocol is `stk500v2`

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:mzeroUSB] platform = atmelsam board = mzeroUSB

upload_protocol = stk500v2


---

## 💅 Debugging 💅

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed, actually. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Arduino M0 does not have an on-board debug probe and **IS NOT READY** for debugging. 💀 You will need to use/buy one of the external probes listed below.

- `debugging_tool_atmel-ice` — On-board: *(no)* — Default: `Yes`
- `debugging_tool_blackmagic` — On-board: *(no)* — Default: *(no)*
- `debugging_tool_jlink` — On-board: *(no)* — Default: *(no)*

---

## 🌈 Frameworks 🌈

- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 👑

---

# 🫶 Arduino M0 Pro (Native USB Port) 🫶

## 🎀 Contents 🎀

- Arduino M0 Pro (Native USB Port)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💖 Hardware

Platform `platform_atmelsam`: Atmel | SMART is out here serving Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash, and honestly? A rich peripheral and feature mix. It's giving range. 🦋

- Microcontroller — `SAMD21G18A`
- Frequency — `48MHz`
- Flash — `256KB`
- RAM — `32KB`
- Vendor — `Arduino`

---

## ✨ Configuration ✨

Bestie, please use the `mzeroproUSB` ID for the `projectconf_env_board` option in `projectconf`:

[env:mzeroproUSB] platform = atmelsam board = mzeroproUSB


You can override the default Arduino M0 Pro (Native USB Port) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mzeroproUSB.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:mzeroproUSB] platform = atmelsam board = mzeroproUSB

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🌸 Uploading 🌸

Arduino M0 Pro (Native USB Port) supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `stk500v2`

Default protocol is `stk500v2`

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:mzeroproUSB] platform = atmelsam board = mzeroproUSB

upload_protocol = stk500v2


---

## 💅 Debugging 💅

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed, actually. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Arduino M0 Pro (Native USB Port) does not have an on-board debug probe and **IS NOT READY** for debugging. 💀 You will need to use/buy one of the external probes listed below.

- `debugging_tool_atmel-ice` — On-board: *(no)* — Default: `Yes`
- `debugging_tool_blackmagic` — On-board: *(no)* — Default: *(no)*
- `debugging_tool_jlink` — On-board: *(no)* — Default: *(no)*

---

## 🌈 Frameworks 🌈

- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 👑

---

# 💜 Arduino M0 Pro (Programming/Debug Port) 💜

## 🎀 Contents 🎀

- Arduino M0 Pro (Programming/Debug Port)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

<pink>okay so</pink> the platform behind all of this is `platform_atmelsam` — and <lavender>Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.</lavender> <rainbow>✨ that's the whole family, bestie ✨</rainbow>

And here's the spec sheet for this specific little icon:

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Arduino`

---

### Configuration

<cyan>Use the `mzeropro` ID</cyan> for the `projectconf_env_board` option inside `projectconf`, mkay? <purple>like this:</purple>

[env:mzeropro] platform = atmelsam board = mzeropro


You can also override the default Arduino M0 Pro (Programming/Debug Port) settings <hotpink>per build environment</hotpink> using the `board_***` option, where `***` is a JSON object path straight out of the board manifest `mzeropro.json`. Think `board_build.mcu`, `board_build.f_cpu`, etc. <mint>obsessed with the flexibility tbh 💅</mint>

[env:mzeropro] platform = atmelsam board = mzeropro

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

### Uploading

Arduino M0 Pro (Programming/Debug Port) speaks these uploading protocols, <yellow>no cap</yellow>:

- `atmel-ice`
- `blackmagic`
- `cmsis-dap`
- `jlink`

The default protocol is `cmsis-dap`. <green>she comes pre-picked, periodt ✨</green>

Wanna switch it up? Just use the `projectconf_upload_protocol` option:

[env:mzeropro] platform = atmelsam board = mzeropro

upload_protocol = cmsis-dap


---

### Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <rainbow>one click, zero stress, we love to see it 💖</rainbow>

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Arduino M0 Pro (Programming/Debug Port) has an on-board debug probe and <hotpink>IS READY</hotpink> for debugging. You don't need to use/buy an external debug probe. <purple>not me saving you money 😌</purple>

- **`debugging_tool_atmel-ice`** — On-board: *(no)*, Default: *(no)*
- **`debugging_tool_blackmagic`** — On-board: *(no)*, Default: *(no)*
- **`debugging_tool_cmsis-dap`** — On-board: <green>Yes</green>, Default: <green>Yes</green> <rainbow>👑 the chosen one</rainbow>
- **`debugging_tool_jlink`** — On-board: *(no)*, Default: *(no)*

---

### Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <lavender>it's giving main character energy fr fr 🦋</lavender>

---

## Arduino MKR FOX 1200 🌸

### Contents

- Arduino MKR FOX 1200
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware

<pink>same platform, same energy:</pink> `platform_atmelsam` — <lavender>Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.</lavender>

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Arduino`

---

### Configuration

<cyan>For this one, use the `mkrfox1200` ID</cyan> for the `projectconf_env_board` option in `projectconf`:

[env:mkrfox1200] platform = atmelsam board = mkrfox1200


You can override default Arduino MKR FOX 1200 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mkrfox1200.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>same trick, different board 💅</mint>

[env:mkrfox1200] platform = atmelsam board = mkrfox1200

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

### Uploading

Arduino MKR FOX 1200 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`. <yellow>that's the one she ships with ✨</yellow>

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:mkrfox1200] platform = atmelsam board = mkrfox1200

upload_protocol = sam-ba


---

### Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <rainbow>the zero-config queen does it again 👑</rainbow>

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

And you can bounce between all the `debugging_tools` whenever you want, using the `projectconf_debug_tool` option in `projectconf`.

- **`debugging_tool_atmel-ice`** — On-board probe? <red>Nope</red> 🙈 Default? <green>Yes, bestie, it's the chosen one</green> ✨
- **`debugging_tool_blackmagic`** — On-board? <red>Nope</red> Default? <red>Not it</red> 💀
- **`debugging_tool_jlink`** — On-board? <red>Nope</red> Default? <red>Also not it</red> 💀

---

## Frameworks 🧩

- **`framework_arduino`** — the Arduino Wiring-based Framework 💖 it's the whole vibe that lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create <rainbow>all kinds of creative coding, interactive objects, spaces or physical experiences</rainbow> 🌈✨ periodt.

---

# Arduino MKR GSM 1400 🌸

okay so here's the whole glow-up for this board, lowkey obsessed:

**Contents** 📋

- Arduino MKR GSM 1400
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## Hardware 🛠️

<purple>Platform</purple> `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from <yellow>8KB to 2MB</yellow> of Flash including a rich peripheral and feature mix 🦋

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Arduino`

---

## Configuration ⚙️

fr fr, just use the `mkrgsm1400` ID for the `projectconf_env_board` option in `projectconf` 💅

[env:mkrgsm1400] platform = atmelsam board = mkrgsm1400


You can override default Arduino MKR GSM 1400 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mkrgsm1400.json` 👑 For example, `board_build.mcu`, `board_build.f_cpu`, etc. — iykyk.

[env:mkrgsm1400] platform = atmelsam board = mkrgsm1400

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## Uploading 🚀

Arduino MKR GSM 1400 supports the next uploading protocols, no cap:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba` 🌟

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:mkrgsm1400] platform = atmelsam board = mkrgsm1400

upload_protocol = sam-ba


---

## Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration 🎀 iconic behaviour honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system 😭 Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf` 🔧

Arduino MKR GSM 1400 does **not** have an on-board debug probe and <red>**IS NOT READY**</red> for debugging 🚫 You will need to use/buy one of the external probes listed below 🫶

- **`debugging_tool_atmel-ice`** — On-board? <red>Nope</red> 🙈 Default? <green>Yes, queen</green> ✨
- **`debugging_tool_blackmagic`** — On-board? <red>Nope</red> Default? <red>Not it</red> 💀
- **`debugging_tool_jlink`** — On-board? <red>Nope</red> Default? <red>Also not it</red> 💀

---

## Frameworks 🧩

- **`framework_arduino`** — the Arduino Wiring-based Framework 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino

boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## <pink>Arduino MKR NB 1500</pink> 💖

okay bestie, this board is a whole moment and here's literally everything about it 🫶

### <lavender>Contents</lavender> 🎀

- Arduino MKR NB 1500
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <cyan>Hardware</cyan> 🦋

Platform <purple>`platform_atmelsam`</purple>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 💅

the spec sheet, and yes it ate:

- **Microcontroller:** `SAMD21G18A`
- **Frequency:** `48MHz`
- **Flash:** `256KB`
- **RAM:** `32KB`
- **Vendor:** `Arduino`

### <mint>Configuration</mint> 🍓

Please use <pink>`mkrnb1500`</pink> ID for <pink>`projectconf_env_board`</pink> option in <pink>`projectconf`</pink>:

[env:mkrnb1500] platform = atmelsam board = mkrnb1500


You can override default Arduino MKR NB 1500 settings per build environment using <pink>`board_***`</pink> option, where <pink>`***`</pink> is a JSON object path from board manifest <pink>`mkrnb1500.json`</pink>. For example, <pink>`board_build.mcu`</pink>, <pink>`board_build.f_cpu`</pink>, etc. 🛠️

[env:mkrnb1500] platform = atmelsam board = mkrnb1500

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### <peach>Uploading</peach> 🔥

Arduino MKR NB 1500 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <pink>`sam-ba`</pink> 💅

You can change upload protocol using <pink>`projectconf_upload_protocol`</pink> option:

[env:mkrnb1500] platform = atmelsam board = mkrnb1500

upload_protocol = sam-ba


### <yellow>Debugging</yellow> 💅

`piodebug` - "1-click" solution for debugging with a zero configuration. 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Arduino MKR NB 1500 does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 😭

compatible tools bestie:

- **`debugging_tool_atmel-ice`** — On-board: *(—)* · Default: **Yes**
- **`debugging_tool_blackmagic`** — On-board: *(—)* · Default: *(—)*
- **`debugging_tool_jlink`** — On-board: *(—)* · Default: *(—)*

### <purple>Frameworks</purple> 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## <pink>Arduino MKR WAN 1300</pink> 🦋

### <lavender>Contents</lavender> 🎀

- Arduino MKR WAN 1300
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <cyan>Hardware</cyan> 🦋

Platform <purple>`platform_atmelsam`</purple>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 💅

and the spec sheet is about to drop… 👀

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Arduino`

---

## ⚙️ Configuration ⚙️

Okay bestie, listen — for the `projectconf_env_board` option in `projectconf`, you're gonna use the `mkrwan1300` ID. That's the whole vibe:

[env:mkrwan1300] platform = atmelsam board = mkrwan1300


And here's the fun part: you can override the default Arduino MKR WAN 1300 settings <pink>per build environment</pink> using the `board_***` option, where `***` is a JSON object path pulled straight from the board manifest `mkrwan1300.json`. Think `board_build.mcu`, `board_build.f_cpu`, etc. Obsessed. 💅

[env:mkrwan1300] platform = atmelsam board = mkrwan1300

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## 📤 Uploading 📤

Arduino MKR WAN 1300 supports these uploading protocols, no cap:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

The default protocol is `sam-ba`. 🌸

Wanna switch it up? Just use the `projectconf_upload_protocol` option:

[env:mkrwan1300] platform = atmelsam board = mkrwan1300

upload_protocol = sam-ba


---

## 🐛 Debugging 🐛

`pio debug` — the "1-click" solution for debugging with a zero configuration. Iconic fr fr. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the `projectconf_debug_tool` option in `projectconf`.

Arduino MKR WAN 1300 does **not** have an on-board debug probe and **IS NOT READY** for debugging. 😭 You will need to use/buy one of the external probes listed below.

- **`debugging_tool_atmel-ice`** — On-board: (n/a) — Default: `Yes`
- **`debugging_tool_blackmagic`** — On-board: (n/a) — Default: (n/a)
- **`debugging_tool_jlink`** — On-board: (n/a) — Default: (n/a)

---

## 🧩 Frameworks 🧩

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

# 🌈 Arduino MKR WAN 1310 🌈

## 📑 Contents 📑

- Arduino MKR WAN 1310
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_atmelsam`: Atmel SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from `8KB` to `2MB` of Flash including a rich peripheral and feature mix. She's versatile, okay?? 💜

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Arduino`

---

## ⚙️ Configuration ⚙️

Please use the `mkrwan1310` ID for the `projectconf_env_board` option in `projectconf`:

[env:mkrwan1310] platform = atmelsam board = mkrwan1310


You can override the default Arduino MKR WAN 1310 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mkrwan1310.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:mkrwan1310] platform = atmelsam board = mkrwan1310

[env:mkrwan1310] platform = atmelsam board = mkrwan1310

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### ✨ Uploading ✨

okay bestie, the Arduino MKR WAN 1310 speaks these uploading protocols, no cap:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

<purple>The default protocol is</purple> `sam-ba`. 💅

Wanna switch it up? Just use the <cyan>`upload_protocol`</cyan> option in your project config:

[env:mkrwan1310] platform = atmelsam board = mkrwan1310

upload_protocol = sam-ba


### ✨ Debugging ✨

`piodebug` — it's the <rainbow>"1-click"</rainbow> debugging solution with literally zero configuration. main character energy fr fr. 🦋

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the <cyan>`debug_tool`</cyan> option in your project config.

Arduino MKR WAN 1310 does **not** have an on-board debug probe and **IS NOT READY** for debugging. 😭 You will need to use/buy one of the external probes listed below:

- `atmel-ice` — On-board: *(nope, nothing)* — Default: **Yes** 💖
- `blackmagic` — On-board: *(nope)* — Default: *(none)*
- `jlink` — On-board: *(nope)* — Default: *(none)*

### ✨ Frameworks ✨

- `framework_arduino` — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

---

## 🌸 Arduino MKR WiFi 1010 🌸

### Contents 🧚

- Arduino MKR WiFi 1010
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 👑

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Arduino`

### Configuration 🎀

Please use the <hotpink>`mkrwifi1010`</hotpink> ID for the <cyan>`board`</cyan> option in your project config:

[env:mkrwifi1010] platform = atmelsam board = mkrwifi1010


You can override the default Arduino MKR WiFi 1010 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mkrwifi1010.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:mkrwifi1010] platform = atmelsam board = mkrwifi1010

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### Uploading 💖

Arduino MKR WiFi 1010 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

<purple>The default protocol is</purple> `sam-ba`.

You can change the upload protocol using the <cyan>`upload_protocol`</cyan> option:

[env:mkrwifi1010] platform = atmelsam board = mkrwifi1010

upload_protocol = sam-ba


### Debugging 🦋

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration, obsessed. 😌

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the <cyan>`debug_tool`</cyan> option in your project config.

Arduino MKR WiFi 1010 does **not** have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below:

- `atmel-ice` — On-board: *(none)* — Default: **Yes** 💜
- `blackmagic` — On-board: *(none)* — Default: *(none)*
- `jlink` — On-board: *(none)* — Default: *(none)*

### Frameworks 🌈

- `framework_arduino` — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ⭐

---

## 🌟 Arduino MKR1000 🌟

### Contents 🍓

- Arduino MKR1000
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 💜

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Arduino`

### Configuration 🌸

Please use the <hotpink>`mkr1000USB`</hotpink> ID for the <cyan>`board`</cyan> option in your project config:

[env:mkr1000USB] platform = atmelsam board = mkr1000USB


You can override the default Arduino MKR1000 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mkr1000USB.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:mkr1000USB] platform = atmelsam board = mkr1000USB

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


And that's the last little override block for this board, bestie 💖 — go change your MCU, go change your clock speed, live your truth ✨

---

### 🚀 Uploading

So Arduino MKR1000 speaks the following uploading protocols, no cap:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

The default protocol is <cyan>`sam-ba`</cyan> — that's the one it rolls with if you don't say anything 🌸

Wanna swap it? Use the `upload_protocol` option, like this:

[env:mkr1000USB] platform = atmelsam board = mkr1000USB

upload_protocol = sam-ba


Slay 💅

---

### 🐛 Debugging

`piodebug` — it's the "1-click" solution for debugging with a zero configuration. Literally one click, iconic behavior 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `debug_tool` option in `projectconf`. ✨

Here's the tea though, bestie: **Arduino MKR1000 does not have an on-board debug probe and IS NOT READY for debugging.** 😭 You will need to use/buy one of the external probes listed below. Not me delivering bad news but here we are 🙈

- **`atmel-ice`** — On-board: *(none)* — Default: **Yes**
- **`blackmagic`** — On-board: *(none)* — Default: *(none)*
- **`jlink`** — On-board: *(none)* — Default: *(none)*

---

### 📚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

---

## 🌈 Arduino MKRZERO

### 📑 Contents

- Arduino MKRZERO
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. That's a whole lot of range, fr fr 💜

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Arduino`

---

### ⚙️ Configuration

Please use the `mkrzero` ID for the `env_board` option in `projectconf`, okay? 🎀

[env:mkrzero] platform = atmelsam board = mkrzero


You can override the default Arduino MKRZERO settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mkrzero.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:mkrzero] platform = atmelsam board = mkrzero

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

### 🚀 Uploading

Arduino MKRZERO supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <cyan>`sam-ba`</cyan> 🌸

You can change the upload protocol using the `upload_protocol` option:

[env:mkrzero] platform = atmelsam board = mkrzero

upload_protocol = sam-ba


Periodt 💅

---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. Zero config, maximum vibes 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `debug_tool` option in `projectconf`. ✨

And listen — **Arduino MKRZERO does not have an on-board debug probe and IS NOT READY for debugging.** 😭 You will need to use/buy one of the external probes listed below. That's just the situation, bestie.

- **`atmel-ice`** — On-board: *(none)* — Default: **Yes**
- **`blackmagic`** — On-board: *(none)* — Default: *(none)*
- **`jlink`** — On-board: *(none)* — Default: *(none)*

---

### 📚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

---

## 🌈 Arduino Tian

### 📑 Contents

- Arduino Tian
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. Same energy as before, still eating 💜

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Arduino`

---

### ⚙️ Configuration

Please use the `tian` ID for the `env_board` option in `projectconf`:

[env:tian] platform = atmelsam board = tian


You can override the default Arduino Tian settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `tian.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:tian] platform = atmelsam board = tian

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

### 🚀 Uploading

Arduino Tian supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `stk500v2`

Default protocol is <cyan>`stk500v2`</cyan> 🌸 (yes bestie, this one's different from the other two, it's giving main character energy)

You can change the upload protocol using the `upload_protocol` option:

[env:tian] platform = atmelsam board = tian

upload_protocol = stk500v2


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. Zero setup, so iconic 👑

> <red>⚠️ WARNING:</red> bestie you're gonna need to install debug tool drivers, and *which* ones depends on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 💅

---

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. iykyk 🫶

<yellow>Arduino Tian</yellow> does **not** have an on-board debug probe and **IS NOT READY** for debugging. 😭 You will need to use/buy one of the external probes listed below.

- **Compatible Tools:** `debugging_tool_atmel-ice` — On-board: *(none)* — Default: <green>Yes</green>
- **Compatible Tools:** `debugging_tool_blackmagic` — On-board: *(none)* — Default: *(none)*
- **Compatible Tools:** `debugging_tool_jlink` — On-board: *(none)* — Default: *(none)*

---

### ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨

---

## 🌈 Arduino Zero (Programming/Debug Port) 🌈

### 🎀 Contents 🎀

- Arduino Zero (Programming/Debug Port)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 💖 Hardware 💖

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. ✨

- **Microcontroller:** `SAMD21G18A`
- **Frequency:** `48MHz`
- **Flash:** `256KB`
- **RAM:** `32KB`
- **Vendor:** Arduino

### ✨ Configuration ✨

Please use the `zero` ID for the `projectconf_env_board` option in `projectconf`:

[env:zero] platform = atmelsam board = zero


You can override default Arduino Zero (Programming/Debug Port) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `zero.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:zero] platform = atmelsam board = zero

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### 🚀 Uploading 🚀

Arduino Zero (Programming/Debug Port) supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `cmsis-dap`
- `jlink`

Default protocol is `cmsis-dap`. 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:zero] platform = atmelsam board = zero

upload_protocol = cmsis-dap


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic fr fr.

> <red>⚠️ WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<green>Arduino Zero (Programming/Debug Port)</green> has an on-board debug probe and **IS READY** for debugging! 🎉 You don't need to use/buy an external debug probe.

- **Compatible Tools:** `debugging_tool_atmel-ice` — On-board: *(none)* — Default: *(none)*
- **Compatible Tools:** `debugging_tool_blackmagic` — On-board: *(none)* — Default: *(none)*
- **Compatible Tools:** `debugging_tool_cmsis-dap` — On-board: <green>Yes</green> — Default: <green>Yes</green>
- **Compatible Tools:** `debugging_tool_jlink` — On-board: *(none)* — Default: *(none)*

### 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥

---

## 💜 Arduino Zero (USB Native Port) 💜

### 🎀 Contents 🎀

- Arduino Zero (USB Native Port)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 💖 Hardware 💖

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. ✨

- **Microcontroller:** `SAMD21G18A`
- **Frequency:** `48MHz`
- **Flash:** `256KB`
- **RAM:** `32KB`
- **Vendor:** Arduino

### ✨ Configuration ✨

Please use the `zeroUSB` ID for the `projectconf_env_board` option in `projectconf`:

[env:zeroUSB] platform = atmelsam board = zeroUSB


You can override default Arduino Zero (USB Native Port) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `zeroUSB.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:zeroUSB] platform = atmelsam board = zeroUSB

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### 💾 Uploading

Bestie, the Arduino Zero (USB Native Port) can upload with these protocols, no cap:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

The default protocol is `sam-ba` 👑

You can swap the upload protocol around using the `projectconf_upload_protocol` option, like this:

[env:zeroUSB] platform = atmelsam board = zeroUSB

upload_protocol = sam-ba


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. It's giving effortless, honestly. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Okay so here's the tea ☕ — the Arduino Zero (USB Native Port) does **not** have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. No shortcuts, babe. 😭

- **Compatible Tools:** `debugging_tool_atmel-ice` — On-board: *(none)* — Default: **Yes**
- **Compatible Tools:** `debugging_tool_blackmagic` — On-board: *(none)* — Default: *(none)*
- **Compatible Tools:** `debugging_tool_jlink` — On-board: *(none)* — Default: *(none)*

---

### 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. It's literally the whole vibe. 🎀

---

# 🌸 Atmel ATSAMR21-XPRO 🌸

### 📖 Contents

- Atmel ATSAMR21-XPRO
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🛠️ Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash- based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. Iconic lineup fr fr. 👑

- **Microcontroller:** `SAMR21G18A`
- **Frequency:** `48MHz`
- **Flash:** `256KB`
- **RAM:** `32KB`
- **Vendor:** `Atmel`

---

### ⚙️ Configuration

Please use the `samr21_xpro` ID for the `projectconf_env_board` option in `projectconf`:

[env:samr21_xpro] platform = atmelsam board = samr21_xpro


You can override the default Atmel ATSAMR21-XPRO settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `samr21_xpro.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Go off, customize your little heart out 💅

[env:samr21_xpro] platform = atmelsam board = samr21_xpro

; change microcontroller board_build.mcu = samr21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

### 💾 Uploading

Atmel ATSAMR21-XPRO supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `cmsis-dap`
- `jlink`

Default protocol is `cmsis-dap` 🌈

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:samr21_xpro] platform = atmelsam board = samr21_xpro

upload_protocol = cmsis-dap


---

### 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. Zero setup, maximum slay. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Now THIS one is the moment 🫶 — Atmel ATSAMR21-XPRO **has** an on-board debug probe and **IS READY** for debugging. You don't need to use/buy an external debug probe. She's self-sufficient, periodt.

- **Compatible Tools:** `debugging_tool_atmel-ice` — On-board: *(none)* — Default: *(none)*
- **Compatible Tools:** `debugging_tool_blackmagic` — On-board: *(none)* — Default: *(none)*
- **Compatible Tools:** `debugging_tool_cmsis-dap` — On-board: **Yes** — Default: **Yes** 👑
- **Compatible Tools:** `debugging_tool_jlink` — On-board: *(none)* — Default: *(none)*

okay so we're still vibing in the framework lineup bestie, here's the rest of it, no cap:

- **`framework_mbed`** — The mbed framework 💜. The mbed SDK was literally designed to give you enough hardware abstraction to be intuitive and concise, yet still powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, so you can code straight down to the metal if you need to. And on top of RTOS, USB and Networking libraries, the mbed Developer Community has built a whole cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. iconic behavior tbh ✨

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) that supports multiple hardware architectures, is optimized for resource constrained devices, and is built with safety and security in mind. main character RTOS energy fr fr 🦋

---

# 👑 Atmel ATSAMW25-XPRO 👑

## 🎀 Contents 🎀

- Atmel ATSAMW25-XPRO
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware 🔧

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. okay periodt 💅

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Atmel`

## ⚙️ Configuration ⚙️

Please use `samd21g18a` ID for `projectconf_env_board` option in `projectconf`:

[env:samd21g18a] platform = atmelsam board = samd21g18a


You can override default Atmel ATSAMW25-XPRO settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `samd21g18a.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:samd21g18a] platform = atmelsam board = samd21g18a

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


## 🚀 Uploading 🚀

Atmel ATSAMW25-XPRO supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `cmsis-dap`
- `jlink`

Default protocol is `cmsis-dap`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:samd21g18a] platform = atmelsam board = samd21g18a

upload_protocol = cmsis-dap


## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. slay 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. not me forgetting the drivers and being confused for 40 minutes 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Atmel ATSAMW25-XPRO has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. obsessed, it's giving convenience 👑

### Compatible Tools

- **`debugging_tool_atmel-ice`** — on-board: *no*, default: *no*
- **`debugging_tool_blackmagic`** — on-board: *no*, default: *no*
- **`debugging_tool_cmsis-dap`** — on-board: **Yes**, default: **Yes** ✅
- **`debugging_tool_jlink`** — on-board: *no*, default: *no*

---

## 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects,

- *(and the framework right above wraps up with)* — …spaces or physical experiences. 💫

- **`framework_mbed`** — the mbed framework, bestie ✨ The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💅 iconic behavior, no cap.

---

### 🌸 Atmel SAMC21-XPRO 🌸

**Contents**

- Atmel SAMC21-XPRO
  - Hardware
  - Configuration
  - Uploading
  - Debugging

**Hardware**

<purple>Platform</purple> `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 👑

- <cyan>Microcontroller</cyan>: `SAMC21J18A`
- <cyan>Frequency</cyan>: `48MHz`
- <cyan>Flash</cyan>: `256KB`
- <cyan>RAM</cyan>: `32KB`
- <cyan>Vendor</cyan>: `Atmel`

**Configuration**

okay so, please use the `samc21_xpro` ID for the `projectconf_env_board` option in `projectconf` 🫶

[env:samc21_xpro] platform = atmelsam board = samc21_xpro


You can override the default Atmel SAMC21-XPRO settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `samc21_xpro.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:samc21_xpro] platform = atmelsam board = samc21_xpro

; change microcontroller board_build.mcu = samc21j18a

; change MCU frequency board_build.f_cpu = 48000000L


**Uploading**

Atmel SAMC21-XPRO supports the next uploading protocols, and yes it's giving options 👑

- `atmel-ice`
- `blackmagic`
- `cmsis-dap`
- `jlink`

Default protocol is `cmsis-dap` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:samc21_xpro] platform = atmelsam board = samc21_xpro

upload_protocol = cmsis-dap


**Debugging**

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally main character energy ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🚨

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. 🔥

Atmel SAMC21-XPRO has an on-board debug probe and **IS READY** for debugging. You don't need to use/buy an external debug probe. periodt 💖

Compatible Tools:

- **`debugging_tool_atmel-ice`** — on-board: *(blank)*, default: *(blank)*
- **`debugging_tool_blackmagic`** — on-board: *(blank)*, default: *(blank)*
- **`debugging_tool_cmsis-dap`** — on-board: <green>Yes</green>, default: <green>Yes</green> 👑
- **`debugging_tool_jlink`** — on-board: *(blank)*, default: *(blank)*

---

### 🦋 Atmel SAMD21-XPRO 🦋

**Contents**

- Atmel SAMD21-XPRO
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

**Hardware**

<purple>Platform</purple> `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 👑

- <cyan>Microcontroller</cyan>: `SAMD21J18A`
- <cyan>Frequency</cyan>: `48MHz`

- **`Flash`** — `256KB` 💾
- **`RAM`** — `32KB`
- **`Vendor`** — `Atmel`

---

## <pink>Configuration</p> 💅

Please use `samd21_xpro` ID for `projectconf_env_board` option in `projectconf`:

[env:samd21_xpro] platform = atmelsam board = samd21_xpro


You can override default <hotpink>Atmel SAMD21-XPRO</hotpink> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `samd21_xpro.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:samd21_xpro] platform = atmelsam board = samd21_xpro

; change microcontroller board_build.mcu = samd21j18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## <purple>Uploading</purple> 🚀

Atmel SAMD21-XPRO supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `cmsis-dap`
- `jlink`

Default protocol is `cmsis-dap` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:samd21_xpro] platform = atmelsam board = samd21_xpro

upload_protocol = cmsis-dap


---

## <cyan>Debugging</cyan> 🐛

`piodebug` - "1-click" solution for debugging with a zero configuration.

> **<red>WARNING:</red>** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 👀

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Atmel SAMD21-XPRO has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. <rainbow>iconic behavior tbh</rainbow> 👑

Compatible Tools · On-board · Default:

- `debugging_tool_atmel-ice`
- `debugging_tool_blackmagic`
- `debugging_tool_cmsis-dap` — On-board: `Yes`, Default: `Yes`
- `debugging_tool_jlink`

---

## <mint>Frameworks</mint> 🧚

- `framework_mbed` — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
- `framework_zephyr` — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

# <hotpink>Atmel SAML21-XPRO-B</hotpink> 🦋

## <pink>Contents</p>

- Atmel SAML21-XPRO-B
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## <lavender>Hardware</lavender> 🔧

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from `8KB` to `2MB` of Flash including a rich peripheral and feature mix.

- **`Microcontroller`** — `SAML21J18B`
- **`Frequency`** — `48MHz`
- **`Flash`** — `256KB`
- **`RAM`** — `32KB`
- **`Vendor`** — `Atmel`

│ └──────────┼──────┴────────────┘ │ │ │ │


okay bestie that was the tail of the debug table, we're back 💅

---

## 🎀 Configuration 🎀

<cyan>Please use `saml21_xpro_b` ID for `projectconf_env_board` option in `projectconf`:</cyan>

[env:saml21_xpro_b] platform = atmelsam board = saml21_xpro_b


You can override default Atmel SAML21-XPRO-B settings per build environment using <hotpink>`board_***`</hotpink> option, where `***` is a JSON object path from board manifest `saml21_xpro_b.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. (yes literally, anything in that JSON, go wild ✨)

[env:saml21_xpro_b] platform = atmelsam board = saml21_xpro_b

; change microcontroller board_build.mcu = saml21j18b

; change MCU frequency board_build.f_cpu = 48000000L


## 🚀 Uploading 🚀

Atmel SAML21-XPRO-B supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `cmsis-dap`
- `jlink`

Default protocol is `cmsis-dap` 👑

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:saml21_xpro_b] platform = atmelsam board = saml21_xpro_b

upload_protocol = cmsis-dap


## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. no cap, one click, that's the whole vibe 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

Atmel SAML21-XPRO-B has on-board debug probe and **IS READY** for debugging 🔥 You don't need to use/buy external debug probe. (saving you money, iconic behaviour fr)

- `debugging_tool_atmel-ice` — on-board: no, default: no
- `debugging_tool_blackmagic` — on-board: no, default: no
- `debugging_tool_cmsis-dap` — on-board: **Yes**, default: **Yes**
- `debugging_tool_jlink` — on-board: no, default: no

## 🧚 Frameworks 🧚

- `framework_mbed` — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

## 🌸 Briki ABC (MBC-WB) - Samd21 🌸

### 📜 Contents 📜

- Briki ABC (MBC-WB) - Samd21
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 💖 Hardware 💖

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. (a whole buffet of chips, honestly 💅)

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `meteca`

### 🎀 Configuration 🎀

<cyan>Please use `briki_abc_samd21` ID for `projectconf_env_board` option in `projectconf`:</cyan>

[env:briki_abc_samd21] platform = atmelsam board = briki_abc_samd21


You can override default Briki ABC (MBC-WB) - Samd21 settings per build environment using <hotpink>`board_***`</hotpink> option, where `***` is a JSON object path from board manifest `briki_abc_samd21.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:briki_abc_samd21] platform = atmelsam board = briki_abc_samd21

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### 🚀 Uploading 🚀

Briki ABC (MBC-WB) - Samd21 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `mbctool`
- `sam-ba`
- `stk500v2`

Default protocol is `mbctool` 👑

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:briki_abc_samd21] platform = atmelsam board = briki_abc_samd21

upload_protocol = mbctool


### 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. still iconic, still one click ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

Briki ABC (MBC-WB) - Samd21 does not have on-board debug probe and **IS NOT READY** for debugging 😭 You will need to use/buy one of external probe listed below. (sorry bestie, you gotta go shopping)

- `debugging_tool_atmel-ice` — on-board: no, default: **Yes**
- `debugging_tool_blackmagic` — on-board: no, default: no
- `debugging_tool_jlink` — on-board: no, default: no

### 🧚 Frameworks 🧚

- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🌈 Briki MBC-WB - Samd21 🌈

### 📜 Contents 📜

- Briki MBC-WB - Samd21
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🛠️ Hardware 🛠️

<pink>okay so</pink> `platform_atmelsam` <pink>is literally the moment:</pink> <cyan>Atmel | SMART</cyan> <pink>offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.</pink> <rainbow>no cap.</rainbow> 💅

<yellow>Here's the tea on the specs:</yellow> 🍵

- **Microcontroller**: `SAMD21G18A`
- **Frequency**: `48MHz`
- **Flash**: `256KB`
- **RAM**: `32KB`
- **Vendor**: `meteca`

---

## ⚙️ Configuration ⚙️

<purple>Please use</purple> `briki_mbcwb_samd21` <purple>ID for</purple> `projectconf_env_board` <purple>option in</purple> `projectconf`:

[env:briki_mbcwb_samd21] platform = atmelsam board = briki_mbcwb_samd21


<pink>You can override default</pink> <cyan>Briki MBC-WB - Samd21</cyan> <pink>settings per build environment using</pink> `board_***` <pink>option, where</pink> `***` <pink>is a JSON object path from board manifest</pink> `briki_mbcwb_samd21.json`. <pink>For example,</pink> `board_build.mcu`, `board_build.f_cpu`, <pink>etc.</pink>

[env:briki_mbcwb_samd21] platform = atmelsam board = briki_mbcwb_samd21

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🚀 Uploading 🚀

<pink>Briki MBC-WB - Samd21 supports the next uploading protocols:</pink>

- `atmel-ice`
- `blackmagic`
- `jlink`
- `mbctool`
- `sam-ba`
- `stk500v2`

<pink>Default protocol is</pink> `mbctool`

<pink>You can change upload protocol using</pink> `projectconf_upload_protocol` <pink>option:</pink>

[env:briki_mbcwb_samd21] platform = atmelsam board = briki_mbcwb_samd21

upload_protocol = mbctool


---

## 🐛 Debugging 🐛

`piodebug` <pink>- "1-click" solution for debugging with a zero configuration.</pink>

> **WARNING**: <red>You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.</red> 😭

<pink>You can switch between debugging</pink> `debugging_tools` <pink>using</pink> `projectconf_debug_tool` <pink>option in</pink> `projectconf`.

<pink>Briki MBC-WB - Samd21 does not have on-board debug probe and</pink> <red>IS NOT READY</red> <pink>for debugging. You will need to use/buy one of external probe listed below.</pink>

- `debugging_tool_atmel-ice` — On-board: *(none)*, Default: **Yes**
- `debugging_tool_blackmagic` — On-board: *(none)*, Default: *(none)*
- `debugging_tool_jlink` — On-board: *(none)*, Default: *(none)*

---

## 🧩 Frameworks 🧩

- `framework_arduino` — <pink>Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.</pink>

---

## 👑 Digistump DigiX 👑

### 📜 Contents 📜

- Digistump DigiX
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🛠️ Hardware 🛠️

<pink>okay so</pink> `platform_atmelsam` <pink>is literally the moment:</pink> <cyan>Atmel | SMART</cyan> <pink>offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.</pink> <rainbow>no cap.</rainbow> 💅

<yellow>Here's the tea on the specs:</yellow> 🍵

- **Microcontroller**: `AT91SAM3X8E`
- **Frequency**: `84MHz`
- **Flash**: `512KB`
- **RAM**: `96KB`
- **Vendor**: `Digistump`

---

## ⚙️ Configuration ⚙️

<purple>Please use</purple> `digix` <purple>ID for</purple> `projectconf_env_board` <purple>option in</purple> `projectconf`:

[env:digix] platform = atmelsam board = digix


<pink>You can override default</pink> <cyan>Digistump DigiX</cyan> <pink>settings per build environment using</pink> `board_***` <pink>option, where</pink> `***` <pink>is a JSON object path from board manifest</pink> `digix.json`. <pink>For example,</pink> `board_build.mcu`, `board_build.f_cpu`, <pink>etc.</pink>

[env:digix] platform = atmelsam board = digix

; change microcontroller board_build.mcu = at91sam3x8e

; change MCU frequency board_build.f_cpu = 84000000L


---

## 🚀 Uploading 🚀

<pink>Digistump DigiX supports the next uploading protocols:</pink>

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`
- `stlink`

<pink>Default protocol is</pink> `sam-ba`

<pink>You can change upload protocol using</pink> `projectconf_upload_protocol` <pink>option:</pink>

[env:digix] platform = atmelsam board = digix

upload_protocol = sam-ba


---

## 🐛 Debugging 🐛

`piodebug` <pink>- "1-click" solution for debugging with a zero configuration.</pink>

> **WARNING**: <red>You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.</red> 😭

<pink>You can switch between debugging</pink> `debugging_tools` <pink>using</pink> `projectconf_debug_tool` <pink>option in</pink> `projectconf`.

<pink>Digistump DigiX does not have on-board debug probe and</pink> <red>IS NOT READY</red> <pink>for debugging. You will need to use/buy one of external probe listed below.</pink>

- `debugging_tool_atmel-ice` — On-board: *(none)*, Default: **Yes**
- `debugging_tool_blackmagic` — On-board: *(none)*, Default: *(none)*
- `debugging_tool_jlink` — On-board: *(none)*, Default: *(none)*
- `debugging_tool_stlink` — On-board: *(none)*, Default: *(none)*

## ✨ Frameworks ✨ (still going, bestie, don't scroll away)

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨

---

# 🦋 LowPowerLab CurrentRanger 🦋

## 📋 Contents

- LowPowerLab CurrentRanger
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. no cap 💅

Here's the spec sheet, look at her:

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `LowPowerLab`

---

## ⚙️ Configuration

Please use the `current_ranger` ID for the `projectconf_env_board` option in projectconf, okay? It's giving very specific, very slay:

[env:current_ranger] platform = atmelsam board = current_ranger


You can override the default LowPowerLab CurrentRanger settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `current_ranger.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:current_ranger] platform = atmelsam board = current_ranger

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🐛 Debugging

`piodebug` currently does not support the LowPowerLab CurrentRanger board. 😭 that's it, that's the whole vibe, we're not debugging this one today.

---

## ✨ Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🫶

---

# 👑 MKR Vidor 4000 👑

## 📋 Contents

- MKR Vidor 4000
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. (yes, same description, she's iconic and she knows it 💅)

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Arduino`

---

## ⚙️ Configuration

Please use the `mkrvidor4000` ID for the `projectconf_env_board` option in projectconf, bestie:

[env:mkrvidor4000] platform = atmelsam board = mkrvidor4000


You can override the default MKR Vidor 4000 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mkrvidor4000.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌸

[env:mkrvidor4000] platform = atmelsam board = mkrvidor4000

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🚀 Uploading

MKR Vidor 4000 supports the next uploading protocols, so pick your fighter:

- `atmel-ice`
- `blackmagic`

- <purple>`jlink`</purple> 💜

- <purple>`sam-ba`</purple> 💜

Default protocol is <mint>`sam-ba`</mint> ✨ no surprises there bestie.

You can change upload protocol using <hotpink>`projectconf_upload_protocol`</hotpink> option in <hotpink>`projectconf`</hotpink>:

[env:mkrvidor4000] platform = atmelsam board = mkrvidor4000

upload_protocol = sam-ba


---

## 🐛 Debugging 🐛

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. 🫶 literally so easy it's giving magic.

> **WARNING:** 😭 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <lavender>`debugging_tools`</lavender> using <hotpink>`projectconf_debug_tool`</hotpink> option in <hotpink>`projectconf`</hotpink>.

MKR Vidor 4000 does **not** have on-board debug probe and **IS NOT READY for debugging** 💀. You will need to use/buy one of external probe listed below. not me having to go shopping for hardware smh 🛒

- Compatible Tools: <purple>`debugging_tool_atmel-ice`</purple> — On-board: **Yes** ✅
- Compatible Tools: <purple>`debugging_tool_blackmagic`</purple> — nothing in the On-board or Default columns 🫥
- Compatible Tools: <purple>`debugging_tool_jlink`</purple> — nothing in the On-board or Default columns 🫥

---

## 📚 Frameworks 📚

- <cyan>`framework_arduino`</cyan> — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨✨ iconic behaviour fr fr

---

# 🌸 Minitronics v2.0 🌸

## 📑 Contents 📑

- Minitronics v2.0
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware 🔧

Platform <blue>`platform_atmelsam`</blue>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 👑

- **Microcontroller** — <mint>`SAMD21J18A`</mint>
- **Frequency** — <mint>`48MHz`</mint>
- **Flash** — <mint>`256KB`</mint>
- **RAM** — <mint>`32KB`</mint>
- **Vendor** — <mint>`ReprapWorld`</mint>

---

## ⚙️ Configuration ⚙️

Please use <hotpink>`minitronics20`</hotpink> ID for <hotpink>`projectconf_env_board`</hotpink> option in <hotpink>`projectconf`</hotpink>:

[env:minitronics20] platform = atmelsam board = minitronics20


You can override default Minitronics v2.0 settings per build environment using <hotpink>`board_***`</hotpink> option, where <hotpink>`***`</hotpink> is a JSON object path from board manifest <mint>`minitronics20.json`</mint>. For example, <hotpink>`board_build.mcu`</hotpink>, <hotpink>`board_build.f_cpu`</hotpink>, etc. 💅

[env:minitronics20] platform = atmelsam board = minitronics20

; change microcontroller board_build.mcu = samd21j18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🚀 Uploading 🚀

Minitronics v2.0 supports the next uploading protocols:

- <purple>`atmel-ice`</purple> 💜
- <purple>`blackmagic`</purple> 💜
- <purple>`jlink`</purple> 💜
- <purple>`sam-ba`</purple> 💜

Default protocol is <mint>`sam-ba`</mint> ✨

You can change upload protocol using <hotpink>`projectconf_upload_protocol`</hotpink> option in <hotpink>`projectconf`</hotpink>:

[env:minitronics20] platform = atmelsam board = minitronics20

upload_protocol = sam-ba


---

## 🐛 Debugging 🐛

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. 🫶

> **WARNING:** 😭 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <lavender>`debugging_tools`</lavender> using <hotpink>`projectconf_debug_tool`</hotpink> option in <hotpink>`projectconf`</hotpink>.

Minitronics v2.0 does **not** have on-board debug probe and **IS NOT READY for debugging** 💀. You will need to use/buy one of external probe listed below.

And now, bestie, the compatible tools table — it's got an **On-board** column and a **Default** column, and here's where it starts:

- **`debugging_tool_atmel-ice`** — On-board: (blank) · Default: **Yes** ✨
- **`debugging_tool_blackmagic`** — On-board: (blank) · Default: (blank)
- **`debugging_tool_jlink`** — On-board: (blank) · Default: (blank)

---

## 🌈 Frameworks 🌈

- **`framework_arduino`** — <pink>Arduino Wiring-based Framework</pink> lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

---

## 🎀 Moteino M0 Contents 🎀

Okay bestie, here's the lil map of everything this page covers:

- **Moteino M0**
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🦋 Hardware 🦋

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash, including a rich peripheral and feature mix. 👑

Here's the spec sheet moment:

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `LowPowerLab`

---

## 💅 Configuration 💅

Please use the `moteino_zero` ID for the `projectconf_env_board` option in `projectconf`:

[env:moteino_zero] platform = atmelsam board = moteino_zero


You can override the default Moteino M0 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `moteino_zero.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:moteino_zero] platform = atmelsam board = moteino_zero

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## ✨ Uploading ✨

Moteino M0 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `cmsis-dap`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba` 💖

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:moteino_zero] platform = atmelsam board = moteino_zero

upload_protocol = sam-ba


---

## 🔥 Debugging 🔥

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic, no cap.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 😭 (yes, drivers first, bestie — do not skip this step)

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>Moteino M0 does not have on-board debug probe and **IS NOT READY** for debugging.</pink> You will need to use/buy one of the external probes listed below. 💀

- **`debugging_tool_atmel-ice`** — On-board: (blank) · Default: **Yes**
- **`debugging_tool_blackmagic`** — On-board: (blank) · Default: (blank)
- **`debugging_tool_cmsis-dap`** — On-board: (blank) · Default: (blank)
- **`debugging_tool_jlink`** — On-board: (blank) · Default: (blank)

---

## 🌈 Frameworks 🌈

- **`framework_arduino`** — <purple>Arduino Wiring-based Framework</purple> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects,

- <pink>**`framework_arduino`**</pink> — and that wraps the description up bestie: the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨✨

---

## 🌈 NANO 33 IoT 🌈

### 📋 Contents

- NANO 33 IoT
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform <purple>`platform_atmelsam`</purple>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. <mint>no cap, that's a whole buffet of ARM</mint> 🦋

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — Arduino

### ⚙️ Configuration

Please use <hotpink>`nano_33_iot`</hotpink> ID for the `projectconf_env_board` option in `projectconf`, okay? it's literally the whole vibe check:

[env:nano_33_iot] platform = atmelsam board = nano_33_iot


You can override default NANO 33 IoT settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nano_33_iot.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>the customization is unmatched fr fr</cyan> 💅

[env:nano_33_iot] platform = atmelsam board = nano_33_iot

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### 📤 Uploading

NANO 33 IoT supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <hotpink>`sam-ba`</hotpink> 🫶

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nano_33_iot] platform = atmelsam board = nano_33_iot

upload_protocol = sam-ba


### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <purple>obsessed with the zero config energy honestly</purple> ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

NANO 33 IoT does **not** have an on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of the external probes listed below. 💀

- **`debugging_tool_atmel-ice`** — On-board: *(none)* — Default: <green>Yes</green> 👑
- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*

### 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🍓

---

## 🌸 SODAQ Autonomo 🌸

### 📋 Contents

- SODAQ Autonomo
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform <purple>`platform_atmelsam`</purple>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. <mint>same iconic platform, different slay</mint> 🦋

- **Microcontroller** — `SAMD21J18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — SODAQ

### ⚙️ Configuration

Please use <hotpink>`sodaq_autonomo`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:sodaq_autonomo] platform = atmelsam board = sodaq_autonomo


You can override default SODAQ Autonomo settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sodaq_autonomo.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. 💜

[env:sodaq_autonomo] platform = atmelsam board = sodaq_autonomo

; change microcontroller board_build.mcu = samd21j18a

; change MCU frequency board_build.f_cpu = 48000000L


### 📤 Uploading

SODAQ Autonomo supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <hotpink>`sam-ba`</hotpink> 🫶

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sodaq_autonomo] platform = atmelsam board = sodaq_autonomo

upload_protocol = sam-ba


### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <purple>genuinely a gift</purple> ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

SODAQ Autonomo does **not** have an on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of the external probes listed below. 💀

- **`debugging_tool_atmel-ice`** — On-board: *(none)* — Default: <green>Yes</green> 👑
- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*

### 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🍓

---

## 🦋 SODAQ ExpLoRer 🦋

### 📋 Contents

- SODAQ ExpLoRer
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## <pink>Hardware</pink> 💖

Okay so like, the platform is `platform_atmelsam` — Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. <rainbow>Periodt.</rainbow> The way that they packed all that in? Iconic. 💅

Here's the tea on the microcontroller, bestie:

- **Microcontroller:** `SAMD21J18A` — the main character 🧠
- **Frequency:** `48MHz` — zoom zoom ⚡
- **Flash:** `256KB` — room for your code 💾
- **RAM:** `32KB` — working memory, don't overflow it 🫠
- **Vendor:** `SODAQ` — the cool peeps 👑

## <pink>Configuration</pink> ✨

Okay bestie, so you gotta use `sodaq_explorer` ID for `projectconf_env_board` option in `projectconf`. No cap. 🧚

[env:sodaq_explorer] platform = atmelsam board = sodaq_explorer


You can override default SODAQ ExpLoRer settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `sodaq_explorer.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. It's giving customizable. Lowkey obsessed. ✨

[env:sodaq_explorer] platform = atmelsam board = sodaq_explorer

; change microcontroller board_build.mcu = samd21j18a

; change MCU frequency board_build.f_cpu = 48000000L


## <pink>Uploading</pink> 🚀

SODAQ ExpLoRer supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`. Slay. 💅 fr fr.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:sodaq_explorer] platform = atmelsam board = sodaq_explorer

upload_protocol = sam-ba


## <pink>Debugging</pink> 🐛

`piodebug` - "1-click" solution for debugging with a zero configuration. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between `debugging` `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

SODAQ ExpLoRer does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 🙈 Not me crying. 😭 iykyk.

- **`debugging_tool_atmel-ice`** — On-board: *(none)*, Default: **Yes** 👑
- **`debugging_tool_blackmagic`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)*, Default: *(none)*

## <pink>Frameworks</pink> 🎀

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. Iconic. 🌈 Ate. 💅

---

# <rainbow>SODAQ ONE</rainbow> 👑

## <pink>Contents</pink> 📚

- SODAQ ONE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## <pink>Hardware</pink> 💖

Okay so like, the platform is `platform_atmelsam` — Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. <rainbow>Periodt.</rainbow> The way that they packed all that in? Iconic. 💅

Here's the tea on the microcontroller, bestie:

- **Microcontroller:** `SAMD21G18A` — the main character 🧠
- **Frequency:** `48MHz` — zoom zoom ⚡
- **Flash:** `256KB` — room for your code 💾
- **RAM:** `32KB` — working memory, don't overflow it 🫠
- **Vendor:** `SODAQ` — the cool peeps 👑

## <pink>Configuration</pink> ✨

Okay bestie, so you gotta use `sodaq_one` ID for `projectconf_env_board` option in `projectconf`. No cap. 🧚

[env:sodaq_one] platform = atmelsam board = sodaq_one


You can override default SODAQ ONE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `sodaq_one.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. It's giving customizable. Lowkey obsessed. ✨

[env:sodaq_one] platform = atmelsam board = sodaq_one

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


## <pink>Uploading</pink> 🚀

SODAQ ONE supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`. Slay. 💅 fr fr.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:sodaq_one] platform = atmelsam board = sodaq_one

upload_protocol = sam-ba


## <pink>Debugging</pink> 🐛

`piodebug` - "1-click" solution for debugging with a zero configuration. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between `debugging` `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

SODAQ ONE does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 🙈 Not me crying. 😭 iykyk.

- **`debugging_tool_atmel-ice`** — On-board: *(none)*, Default: **Yes** 👑
- **`debugging_tool_blackmagic`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)*, Default: *(none)*

so the tea on `platform_atmelsam` is *chef's kiss* 🎀 — Atmel | SMART serves up Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, and they range from a lil baby <cyan>8KB</cyan> all the way up to a chunky <cyan>2MB</cyan> of Flash, including a rich peripheral and feature mix. it's giving ✨versatile✨ bestie, fr fr. 💅

---

...products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, and they span <mint>8KB to 2MB of Flash</mint>, plus a *rich* peripheral and feature mix. Like, the whole buffet. 🍓

<mint>**Microcontroller**</mint> → `SAMD21G18A`
<mint>**Frequency**</mint> → `48MHz`
<mint>**Flash**</mint> → `256KB`
<mint>**RAM**</mint> → `32KB`
<mint>**Vendor**</mint> → `SODAQ`

---

## ✨ Configuration ✨

Okay bestie, listen: use the `sodaq_sff` ID for the `projectconf_env_board` option in `projectconf`. That's the whole assignment, fr fr:

[env:sodaq_sff] platform = atmelsam board = sodaq_sff


And here's the fun part 💅 — you can override the default <pink>SODAQ SFF</pink> settings per build environment using the `board_***` option, where `***` is a <yellow>JSON object path</yellow> from the board manifest `sodaq_sff.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. Watch this:

[env:sodaq_sff] platform = atmelsam board = sodaq_sff

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


Not me casually rewriting the MCU's whole personality in a config file 😭

---

## 🚀 Uploading 🚀

<pink>SODAQ SFF</pink> supports the next uploading protocols, periodt:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is `sam-ba`. 🫶

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sodaq_sff] platform = atmelsam board = sodaq_sff

upload_protocol = sam-ba


---

## 🐛 Debugging 🐛

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. Iconic behaviour honestly. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging` `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<purple>SODAQ SFF</purple> does **not** have an on-board debug probe and **IS NOT READY** for debugging. 🚨 You will need to use/buy one of the external probes listed below. No cap, no shortcuts here.

**Compatible Tools** 🎀

- `atmel-ice` — On-board: *(none)* — Default: `Yes`
- `blackmagic` — On-board: *(none)* — Default: *(none)*
- `jlink` — On-board: *(none)* — Default: *(none)*

---

## 🧚 Frameworks 🧚

**Name** → **Description**

- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

---

# 👑 SainSmart Due (Programming Port) 👑

## 📋 Contents 📋

- SainSmart Due (Programming Port)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💖 Hardware 💖

Platform `platform_atmelsam`: <cyan>Atmel | SMART</cyan> offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from <mint>8KB to 2MB of Flash</mint> including a rich peripheral and feature mix. Same energy, different board. 🌈

<mint>**Microcontroller**</mint> → `AT91SAM3X8E`
<mint>**Frequency**</mint> → `84MHz`
<mint>**Flash**</mint> → `512KB`
<mint>**RAM**</mint> → `96KB`
<mint>**Vendor**</mint> → `SainSmart`

---

## ✨ Configuration ✨

Please use the `sainSmartDue` ID for the `projectconf_env_board` option in `projectconf`. Write it down, bestie 📝:

[env:sainSmartDue] platform = atmelsam board = sainSmartDue


You can override default <pink>SainSmart Due (Programming Port)</pink> settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sainSmartDue.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🔥

[env:sainSmartDue]

platform = atmelsam board = sainSmartDue

; change microcontroller board_build.mcu = at91sam3x8e

; change MCU frequency board_build.f_cpu = 84000000L


---

### 🚀 Uploading

<pink>SainSmart Due (Programming Port)</pink> supports these uploading protocols, bestie:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`
- `stlink`

The default protocol is `sam-ba` ✨ (she just comes like that, no setup needed).

Wanna switch it up? You can change the upload protocol with the `projectconf_upload_protocol` option, like this:

[env:sainSmartDue] platform = atmelsam board = sainSmartDue

upload_protocol = sam-ba


---

### 🐛 Debugging

<purple>`pio debug`</purple> is that <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. Obsessed, honestly. 💅

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the `projectconf_debug_tool` option in `projectconf`. 🔁

<pink>SainSmart Due (Programming Port)</pink> does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭. You will need to use or buy one of the external probes listed below:

- **`atmel-ice`** — On-board: *(none)* — Default: **Yes**
- **`blackmagic`** — On-board: *(none)* — Default: *(none)*
- **`jlink`** — On-board: *(none)* — Default: *(none)*
- **`stlink`** — On-board: *(none)* — Default: *(none)*

---

### 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## 🌸 SainSmart Due (USB Native Port) 🌸

### 📋 Contents

- SainSmart Due (USB Native Port)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. no cap, that's the whole lineup 💖

- **Microcontroller** — `AT91SAM3X8E`
- **Frequency** — `84MHz`
- **Flash** — `512KB`
- **RAM** — `96KB`
- **Vendor** — `SainSmart`

---

### ⚙️ Configuration

Please use the `sainSmartDueUSB` ID for the `projectconf_env_board` option in `projectconf`, bestie:

[env:sainSmartDueUSB] platform = atmelsam board = sainSmartDueUSB


You can override the default <pink>SainSmart Due (USB Native Port)</pink> settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sainSmartDueUSB.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:sainSmartDueUSB] platform = atmelsam board = sainSmartDueUSB

; change microcontroller board_build.mcu = at91sam3x8e

; change MCU frequency board_build.f_cpu = 84000000L


---

### 🚀 Uploading

<pink>SainSmart Due (USB Native Port)</pink> supports these uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`
- `stlink`

The default protocol is `sam-ba` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sainSmartDueUSB] platform = atmelsam board = sainSmartDueUSB

upload_protocol = sam-ba

[env:sainSmartDueUSB] platform = atmelsam board = sainSmartDueUSB

upload_protocol = sam-ba


---

### Debugging 💅

<hotpink>`piodebug`</hotpink> — the "1-click" solution for debugging with a <rainbow>zero configuration</rainbow>. Literally just vibes and breakpoints bestie ✨

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (Not optional, not a drill, drivers are the whole personality of this step 🙈)

You can switch between debugging <purple>`debugging_tools`</purple> using <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

<yellow>SainSmart Due (USB Native Port)</yellow> does not have on-board debug probe and **IS NOT READY for debugging**. You will need to use/buy one of external probe listed below. She's giving "beautiful but needs external support" energy 🦋

- **`debugging_tool_atmel-ice`** — On-board: *(nope)* · Default: **Yes** 👑
- **`debugging_tool_blackmagic`** — On-board: *(nope)* · Default: *(nope)*
- **`debugging_tool_jlink`** — On-board: *(nope)* · Default: *(nope)*
- **`debugging_tool_stlink`** — On-board: *(nope)* · Default: *(nope)*

### Frameworks 🎀

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

---

## 🌸 Seeeduino LoRaWAN 🌸

### Contents

- Seeeduino LoRaWAN
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform <purple>`platform_atmelsam`</purple>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. (She's stacked fr fr 🔥)

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Seeed`

### Configuration

Please use <purple>`seeeduino_lorawan`</purple> ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:seeeduino_lorawan] platform = atmelsam board = seeeduino_lorawan


You can override default Seeeduino LoRaWAN settings per build environment using <purple>`board_***`</purple> option, where <purple>`***`</purple> is a JSON object path from board manifest <purple>`seeeduino_lorawan.json`</purple>. For example, <purple>`board_build.mcu`</purple>, <purple>`board_build.f_cpu`</purple>, etc. Customization era 💅

[env:seeeduino_lorawan] platform = atmelsam board = seeeduino_lorawan

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### Uploading

Seeeduino LoRaWAN supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <purple>`sam-ba`</purple>

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:seeeduino_lorawan] platform = atmelsam board = seeeduino_lorawan

upload_protocol = sam-ba


### Debugging 💅

<hotpink>`piodebug`</hotpink> — "1-click" solution for debugging with a zero configuration. Obsessed ✨

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <purple>`debugging_tools`</purple> using <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

Seeeduino LoRaWAN does not have on-board debug probe and **IS NOT READY for debugging**. You will need to use/buy one of external probe listed below. She's cute but she cannot debug solo 😭

- **`debugging_tool_atmel-ice`** — On-board: *(nope)* · Default: **Yes** 👑
- **`debugging_tool_blackmagic`** — On-board: *(nope)* · Default: *(nope)*
- **`debugging_tool_jlink`** — On-board: *(nope)* · Default: *(nope)*

### Frameworks 🎀

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

---

## 🦋 SparkFun 9DoF Razor IMU M0 🦋

### Contents

- SparkFun 9DoF Razor IMU M0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform <purple>`platform_atmelsam`</purple>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 💅

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `SparkFun`

### Configuration

Please use <purple>`sparkfun_samd21_9dof`</purple> ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:sparkfun_samd21_9dof] platform = atmelsam board = sparkfun_samd21_9dof


You can override default SparkFun 9DoF Razor IMU M0 settings per build environment using <purple>`board_***`</purple> option, where <purple>`***`</purple> is a JSON object path from board manifest <purple>`sparkfun_samd21_9dof.json`</purple>. For example, <purple>`board_build.mcu`</purple>, <purple>`board_build.f_cpu`</purple>, etc. Main character customization energy 👑

[env:sparkfun_samd21_9dof] platform = atmelsam board = sparkfun_samd21_9dof

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### Uploading

SparkFun 9DoF Razor IMU M0 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <purple>`sam-ba`</purple>

<purple>You can swap up your upload protocol with the `projectconf_upload_protocol` option, bestie:</purple>

[env:sparkfun_samd21_9dof] platform = atmelsam board = sparkfun_samd21_9dof

upload_protocol = sam-ba


---

## ✨ Debugging ✨

<hotpink>`piodebug`</hotpink> — it's the <rainbow>"1-click"</rainbow> solution for debugging with <green>zero configuration</green>. Like, literally no setup, just vibes 🧚

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>Do not skip this, I'm so serious.</red> 😭

You can switch between debugging tools (`debugging_tools`) using the `projectconf_debug_tool` option in `projectconf`.

<pink>SparkFun 9DoF Razor IMU M0</pink> does **not** have an on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of the external probes listed below 💅

- **`debugging_tool_atmel-ice`** — On-board: *(none)* — Default: **Yes** ⭐
- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*

---

## ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

---

# 🌸 SparkFun Qwiic Micro 🌸

## Contents

- SparkFun Qwiic Micro
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🦋 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller** — `SAMD21E18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `SparkFun`

---

## 🎀 Configuration

Please use <cyan>`sparkfun_qwiic_micro_samd21e`</cyan> ID for the `projectconf_env_board` option in `projectconf`:

[env:sparkfun_qwiic_micro_samd21e] platform = atmelsam board = sparkfun_qwiic_micro_samd21e


You can override the default SparkFun Qwiic Micro settings per build environment using the `board_***` option, where <purple>`***`</purple> is a JSON object path from the board manifest `sparkfun_qwiic_micro_samd21e.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:sparkfun_qwiic_micro_samd21e] platform = atmelsam board = sparkfun_qwiic_micro_samd21e

; change microcontroller board_build.mcu = samd21e18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## 💜 Uploading

SparkFun Qwiic Micro supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <mint>`sam-ba`</mint> ⭐

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sparkfun_qwiic_micro_samd21e] platform = atmelsam board = sparkfun_qwiic_micro_samd21e

upload_protocol = sam-ba


---

## ✨ Debugging ✨

<hotpink>`piodebug`</hotpink> — it's the <rainbow>"1-click"</rainbow> solution for debugging with <green>zero configuration</green>. No notes, iconic behaviour 😌

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>Install the drivers, bestie, I'm begging.</red> 🙈

You can switch between debugging tools (`debugging_tools`) using the `projectconf_debug_tool` option in `projectconf`.

<pink>SparkFun Qwiic Micro</pink> does **not** have an on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of the external probes listed below 💅

- **`debugging_tool_atmel-ice`** — On-board: *(none)* — Default: **Yes** ⭐
- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*

---

## ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

---

# 🔥 SparkFun RedBoard Turbo 🔥

## Contents

- SparkFun RedBoard Turbo
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🦋 Hardware

Platform `platform_atmelsam`: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `SparkFun`

---

## 🎀 Configuration

Please use <cyan>`sparkfun_redboard_turbo`</cyan> ID for the `projectconf_env_board` option in `projectconf`:

[env:sparkfun_redboard_turbo] platform = atmelsam board = sparkfun_redboard_turbo


You can override the default SparkFun RedBoard Turbo settings per build environment using the `board_***` option, where <purple>`***`</purple> is a JSON object path from the board manifest `sparkfun_redboard_turbo.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:sparkfun_redboard_turbo] platform = atmelsam board = sparkfun_redboard_turbo

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


---

## 💜 Uploading

SparkFun RedBoard Turbo supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <mint>`sam-ba`</mint> ⭐

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sparkfun_redboard_turbo] platform = atmelsam board = sparkfun_redboard_turbo

upload_protocol = sam-ba


---

## ✨ Debugging ✨

<hotpink>`piodebug`</hotpink> — it's the <rainbow>"1-click"</rainbow> solution for debugging with <green>zero configuration</green>.

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

okay so — you *can* switch between debugging `debugging_tools` using the <cyan>`projectconf_debug_tool`</cyan> option in <cyan>`projectconf`</cyan>. it's giving very much plug-and-play energy. ✨

and real talk: SparkFun RedBoard Turbo does **not** have an on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of the external probes listed below. 😭 no built-in probe bestie, we're going shopping.

**Compatible Tools** 💅

- **`debugging_tool_atmel-ice`** — On-board: *(none)* · Default: **Yes**
- **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*

---

## 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

# 🦋 SparkFun SAMD21 Dev Breakout 🦋

## 🌈 Contents 🌈

- SparkFun SAMD21 Dev Breakout
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🎀 Hardware 🎀

Platform <purple>`platform_atmelsam`</purple>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller:** `SAMD21G18A`
- **Frequency:** `48MHz`
- **Flash:** `256KB`
- **RAM:** `32KB`
- **Vendor:** SparkFun

## ✨ Configuration ✨

Please use <hotpink>`sparkfun_samd21_dev_usb`</hotpink> ID for the <hotpink>`projectconf_env_board`</hotpink> option in <hotpink>`projectconf`</hotpink>:

[env:sparkfun_samd21_dev_usb] platform = atmelsam board = sparkfun_samd21_dev_usb


You can override default SparkFun SAMD21 Dev Breakout settings per build environment using the <yellow>`board_***`</yellow> option, where <yellow>`***`</yellow> is a JSON object path from board manifest <yellow>`sparkfun_samd21_dev_usb.json`</yellow>. For example, <yellow>`board_build.mcu`</yellow>, <yellow>`board_build.f_cpu`</yellow>, etc. 👑

[env:sparkfun_samd21_dev_usb] platform = atmelsam board = sparkfun_samd21_dev_usb

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


## 💖 Uploading 💖

SparkFun SAMD21 Dev Breakout supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <mint>`sam-ba`</mint>. periodt. 🫶

You can change upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:sparkfun_samd21_dev_usb] platform = atmelsam board = sparkfun_samd21_dev_usb

upload_protocol = sam-ba


## 🔥 Debugging 🔥

<rainbow>`piodebug`</rainbow> — "1-click" solution for debugging with a zero configuration. it's literally one click, the way that it just *works*. 💅

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the <cyan>`projectconf_debug_tool`</cyan> option in <cyan>`projectconf`</cyan>.

SparkFun SAMD21 Dev Breakout does **not** have an on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of the external probes listed below. 😭

**Compatible Tools** 💅

- **`debugging_tool_atmel-ice`** — On-board: *(none)* · Default: **Yes**
- **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*

## 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

# 🦋 SparkFun SAMD21 Mini Breakout 🦋

## 🌈 Contents 🌈

- SparkFun SAMD21 Mini Breakout
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🎀 Hardware 🎀

Platform <purple>`platform_atmelsam`</purple>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix.

- **Microcontroller:** `SAMD21G18A`
- **Frequency:** `48MHz`
- **Flash:** `256KB`
- **RAM:** `32KB`
- **Vendor:** SparkFun

## ✨ Configuration ✨

Please use <hotpink>`sparkfun_samd21_mini_usb`</hotpink> ID for the <hotpink>`projectconf_env_board`</hotpink> option in <hotpink>`projectconf`</hotpink>:

[env:sparkfun_samd21_mini_usb] platform = atmelsam board = sparkfun_samd21_mini_usb


You can override default SparkFun SAMD21 Mini Breakout settings per build environment using the <yellow>`board_***`</yellow> option, where <yellow>`***`</yellow> is a JSON object path from board manifest <yellow>`sparkfun_samd21_mini_usb.json`</yellow>. For example, <yellow>`board_build.mcu`</yellow>, <yellow>`board_build.f_cpu`</yellow>, etc. 👑

[env:sparkfun_samd21_mini_usb] platform = atmelsam board = sparkfun_samd21_mini_usb

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


## 💖 Uploading 💖

SparkFun SAMD21 Mini Breakout supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <mint>`sam-ba`</mint>. 🫶

You can change upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:sparkfun_samd21_mini_usb] platform = atmelsam board = sparkfun_samd21_mini_usb

upload_protocol = sam-ba


## 🔥 Debugging 🔥

<rainbow>`piodebug`</rainbow> — "1-click" solution for debugging with a zero configuration.

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the <cyan>`projectconf_debug_tool`</cyan> option in <cyan>`projectconf`</cyan>.

> ⚠️ **bestie, listen up**: the **SparkFun SAMD21 Mini Breakout** does <red>**not**</red> have an on-board debug probe and is <red>**NOT READY**</red> for debugging. you will need to use/buy one of the external probes listed below. that's the vibe, no cap. 💅

Compatible tools for this board:

- <cyan>`debugging_tool_atmel-ice`</cyan> — on-board: *(nope)* · default: **Yes** 👑
- <cyan>`debugging_tool_blackmagic`</cyan> — on-board: *(nope)* · default: *(nope)*
- <cyan>`debugging_tool_jlink`</cyan> — on-board: *(nope)* · default: *(nope)*

### ✨ Frameworks ✨

- <purple>`framework_arduino`</purple> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

---

## 🦋 SparkFun SAMD21 Pro RF 🦋

### 📖 Contents

- SparkFun SAMD21 Pro RF
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform <cyan>`atmelsam`</cyan>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. (she's versatile, periodt 💜)

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — SparkFun

### ⚙️ Configuration

Please use <hotpink>`sparkfun_samd21_proRF`</hotpink> ID for <cyan>`projectconf_env_board`</cyan> option in `projectconf`:

[env:sparkfun_samd21_proRF] platform = atmelsam board = sparkfun_samd21_proRF


You can override the default SparkFun SAMD21 Pro RF settings per build environment using the <cyan>`board_***`</cyan> option, where <cyan>`***`</cyan> is a JSON object path from the board manifest <hotpink>`sparkfun_samd21_proRF.json`</hotpink>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:sparkfun_samd21_proRF] platform = atmelsam board = sparkfun_samd21_proRF

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### 🚀 Uploading

SparkFun SAMD21 Pro RF supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `sam-ba`

Default protocol is <green>`sam-ba`</green> 👑

You can change the upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:sparkfun_samd21_proRF] platform = atmelsam board = sparkfun_samd21_proRF

upload_protocol = sam-ba


### 🐛 Debugging

<hotpink>`piodebug`</hotpink> — the "1-click" solution for debugging with a zero configuration. literally iconic. 💅

> **WARNING:** 🫶 You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`.

SparkFun SAMD21 Pro RF does <red>**not**</red> have an on-board debug probe and is <red>**NOT READY**</red> for debugging. You will need to use/buy one of the external probes listed below. 😭

Compatible tools for this board:

- <cyan>`debugging_tool_atmel-ice`</cyan> — on-board: *(nope)* · default: **Yes** 👑
- <cyan>`debugging_tool_blackmagic`</cyan> — on-board: *(nope)* · default: *(nope)*
- <cyan>`debugging_tool_jlink`</cyan> — on-board: *(nope)* · default: *(nope)*

### ✨ Frameworks ✨

- <purple>`framework_arduino`</purple> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

---

## 🌈 Tuino 096 🌈

### 📖 Contents

- Tuino 096
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform <cyan>`atmelsam`</cyan>: Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 💜

- **Microcontroller** — `SAMD21G18A`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — Gimasi

### ⚙️ Configuration

Please use <hotpink>`tuinozero96`</hotpink> ID for <cyan>`projectconf_env_board`</cyan> option in `projectconf`:

[env:tuinozero96] platform = atmelsam board = tuinozero96


You can override the default Tuino 096 settings per build environment using the <cyan>`board_***`</cyan> option, where <cyan>`***`</cyan> is a JSON object path from the board manifest <hotpink>`tuinozero96.json`</hotpink>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:tuinozero96] platform = atmelsam board = tuinozero96

; change microcontroller board_build.mcu = samd21g18a

; change MCU frequency board_build.f_cpu = 48000000L


### 🚀 Uploading

Tuino 096 supports the next uploading protocols:

- `atmel-ice`
- `blackmagic`
- `jlink`
- `stk500v2`

Default protocol is <green>`stk500v2`</green> 👑

You can change the upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:tuinozero96] platform = atmelsam board = tuinozero96

upload_protocol = stk500v2


### 🐛 Debugging

<hotpink>`piodebug`</hotpink> — the "1-click" solution for debugging with a zero configuration. she ate fr fr. 🔥

> **WARNING:** 🫶 You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`.

Ok bestie, real talk: Tuino 096 does <red>**not**</red> have an on-board debug probe and it is <red>**IS NOT READY**</red> for debugging. Not "kinda mid", not "needs a firmware bump" — just not ready. You will need to use or buy one of the external probes listed below. 😭

- **`debugging_tool_atmel-ice`** — on-board: *(nope, nothing)* — default: <green>Yes</green> ✨
- **`debugging_tool_blackmagic`** — on-board: *(nope)* — default: *(none)*
- **`debugging_tool_jlink`** — on-board: *(nope)* — default: *(none)*

---

### 🌈 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework. It's the one that lets you write cross-platform software to control devices hooked up to a huge range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving maker-energy, fr fr. 🎀

---

## 💜 Espressif 32

### 🦋 AI Thinker ESP32-CAM

#### 📋 Contents

- AI Thinker ESP32-CAM
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

#### 🛠️ Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. No cap, they're kind of everywhere. 👑

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `AI Thinker`

#### ⚙️ Configuration

Please use the `esp32cam` ID for the `projectconf_env_board` option in `projectconf`:

[env:esp32cam] platform = espressif32 board = esp32cam


You can override the default AI Thinker ESP32-CAM settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `esp32cam.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Customize away, bestie 💅

[env:esp32cam] platform = espressif32 board = esp32cam

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


#### 🚀 Uploading

AI Thinker ESP32-CAM supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:esp32cam] platform = espressif32 board = esp32cam

upload_protocol = esptool


#### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed, honestly. 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Don't skip this part, bestie, it WILL bite you. 🙈

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

AI Thinker ESP32-CAM does not have an on-board debug probe and **IS NOT READY** for debugging. You will need to use or buy one of the external probes listed below.

- **`debugging_tool_esp-prog`** — on-board: *(none)* — default: <green>Yes</green>
- **`debugging_tool_iot-bus-jtag`** — on-board: *(none)* — default: *(none)*
- **`debugging_tool_jlink`** — on-board: *(none)* — default: *(none)*
- **`debugging_tool_minimodule`** — on-board: *(none)* — default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: *(none)* — default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: *(none)* — default: *(none)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: *(none)* — default: *(none)*
- **`debugging_tool_olimex-jtag-tiny`** — on-board: *(none)* — default: *(none)*
- **`debugging_tool_tumpa`** — on-board: *(none)* — default: *(none)*

#### 🌸 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Iconic behavior. 🎀
- **`framework_espidf`** — the Espressif IoT Development Framework. The official development framework for `ESP32`. Main character energy, periodt. 🔥

---

## 🌈 ALKS ESP32

### 📋 Contents

- ALKS ESP32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 🛠️

<cyan>Platform `platform_espressif32`:</cyan> bestie, Espressif Systems is a privately held fabless semiconductor company 💜 — like, they *design* the chips but don't fab them, iconic behavior. They make wireless communications and Wi-Fi chips that are literally everywhere: mobile devices, Internet of Things applications, all of it. Main character silicon, fr fr.

Here's the ALKS ESP32 glow-up sheet ✨:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `RoboticsBrno`

---

### Configuration ⚙️

Okay so listen 🫶 — please use the `alksesp32` ID for the `projectconf_env_board` option in `projectconf`:

[env:alksesp32] platform = espressif32 board = alksesp32


You can override the default ALKS ESP32 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `alksesp32.json`. For example: `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:alksesp32] platform = espressif32 board = alksesp32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### Uploading 🚀

ALKS ESP32 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:alksesp32] platform = espressif32 board = alksesp32

upload_protocol = esptool


---

### Debugging 🐛✨

`piodebug` — the "1-click" solution for debugging with a zero configuration. No cap, it's that easy.

> **WARNING:** You will need to install debug tool drivers depending on your system 😭 Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools (`debugging_tools`) using the `projectconf_debug_tool` option in `projectconf`.

ALKS ESP32 does **NOT** have an on-board debug probe and is **NOT READY** for debugging 💀 You will need to use/buy one of the external probes listed below:

- **`debugging_tool_esp-prog`** — On-board: *(none)* — Default: `Yes` ⭐
- **`debugging_tool_iot-bus-jtag`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_minimodule`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_tumpa`** — On-board: *(none)* — Default: *(none)*

---

### Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. Obsessed with the range, honestly 🌈

---

## AZ-Delivery ESP-32 Dev Kit C V4 💖

### Contents 🎀

- AZ-Delivery ESP-32 Dev Kit C V4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware 🛠️

<cyan>Platform `platform_espressif32`:</cyan> Espressif Systems is a privately held fabless semiconductor company 💜 They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Same energy as before, still slaying.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `16MB`
- **RAM** — `520KB`
- **Vendor** — `AZ-Delivery`

---

### Configuration ⚙️

Bestie, please use the `az-delivery-devkit-v4` ID for the `projectconf_env_board` option in `projectconf`:

[env:az-delivery-devkit-v4] platform = espressif32 board = az-delivery-devkit-v4


You can override default AZ-Delivery ESP-32 Dev Kit C V4 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `az-delivery-devkit-v4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:az-delivery-devkit-v4] platform = espressif32 board = az-delivery-devkit-v4

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### Uploading 🚀

AZ-Delivery ESP-32 Dev Kit C V4 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:az-delivery-devkit-v4] platform = espressif32 board = az-delivery-devkit-v4

upload_protocol = esptool


---

### Debugging 🐛✨

`piodebug` — the "1-click" solution for debugging with a zero configuration. Zero config, zero stress, we love to see it 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system 😭 Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools (`debugging_tools`) using the `projectconf_debug_tool` option in `projectconf`.

<pink>AZ-Delivery ESP-32 Dev Kit C V4</pink> does <red>not</red> have an on-board debug probe, bestie, and it is **NOT READY** for debugging 😭. You're gonna have to use/buy one of the external probes listed below:

- **`debugging_tool_esp-prog`** — on-board: <red>nope</red> · default: <green>Yes</green> ✨
- **`debugging_tool_iot-bus-jtag`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_jlink`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_minimodule`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_olimex-jtag-tiny`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_tumpa`** — on-board: <red>nope</red> · default: <red>nope</red>

---

## 🧚 Frameworks 🧚

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving *art installation energy*, fr fr 🎨✨
- **`framework_espidf`** — Espressif IoT Development Framework. The official development framework for ESP32 👑

---

# 🌈 Adafruit ESP32 Feather 🌈

## 🎀 Contents 🎀

- Adafruit ESP32 Feather
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware 🔧

Platform <cyan>`platform_espressif32`</cyan>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Silicon royalty, honestly 💅

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Adafruit`

## ⚙️ Configuration ⚙️

Please use the <mint>`featheresp32`</mint> ID for the <mint>`projectconf_env_board`</mint> option in `projectconf`:

[env:featheresp32] platform = espressif32 board = featheresp32


You can override the default Adafruit ESP32 Feather settings per build environment using the <mint>`board_***`</mint> option, where <mint>`***`</mint> is a JSON object path from the board manifest <mint>`featheresp32.json`</mint>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Mix and match, slay 💖

[env:featheresp32] platform = espressif32 board = featheresp32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🚀 Uploading 🚀

Adafruit ESP32 Feather supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is <green>`esptool`</green> ✨

You can change the upload protocol using the <mint>`projectconf_upload_protocol`</mint> option:

[env:featheresp32] platform = espressif32 board = featheresp32

upload_protocol = esptool


## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. Iconic behaviour, no setup stress 😌

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the <mint>`projectconf_debug_tool`</mint> option in `projectconf`.

Adafruit ESP32 Feather does not have an on-board debug probe and **IS NOT READY** for debugging 😭. You will need to use/buy one of the external probes listed below:

- **`debugging_tool_esp-prog`** — on-board: <red>nope</red> · default: <green>Yes</green> ✨
- **`debugging_tool_iot-bus-jtag`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_jlink`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_minimodule`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_olimex-jtag-tiny`** — on-board: <red>nope</red> · default: <red>nope</red>
- **`debugging_tool_tumpa`** — on-board: <red>nope</red> · default: <red>nope</red>

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_espidf`** — the Espressif IoT Development Framework. It's the official development framework for ESP32. 💅

---

## 🌈 April Brother ESPea32 🌈

### 📋 Contents 📋

- April Brother ESPea32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform <purple>`platform_espressif32`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. no cap, they're kinda everywhere 👑

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — April Brother

### ⚙️ Configuration ⚙️

Please use <cyan>`espea32`</cyan> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:espea32] platform = espressif32 board = espea32


You can override default April Brother ESPea32 settings per build environment using <cyan>`board_***`</cyan> option, where <cyan>`***`</cyan> is a JSON object path from board manifest <cyan>`espea32.json`</cyan>. For example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc. so much power in your hands fr fr 💖

[env:espea32] platform = espressif32 board = espea32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🚀 Uploading 🚀

April Brother ESPea32 supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is <cyan>`esptool`</cyan>.

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:espea32] platform = espressif32 board = espea32

upload_protocol = esptool


### 🐛 Debugging 🐛

> <yellow>`piodebug`</yellow> currently does not support April Brother ESPea32 board. 😭 sad girl hours, no debugging for this one yet.

### 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

## 🍓 BPI-Bit 🍓

### 📋 Contents 📋

- BPI-Bit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform <purple>`platform_espressif32`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. (yes it's the same platform blurb, they're consistent, we love that for them 💅)

- **Microcontroller** — `ESP32`
- **Frequency** — `160MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — BPI Tech

### ⚙️ Configuration ⚙️

Please use <cyan>`bpi-bit`</cyan> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:bpi-bit] platform = espressif32 board = bpi-bit


You can override default BPI-Bit settings per build environment using <cyan>`board_***`</cyan> option, where <cyan>`***`</cyan> is a JSON object path from board manifest <cyan>`bpi-bit.json`</cyan>. For example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc.

[env:bpi-bit] platform = espressif32 board = bpi-bit

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 160000000L


### 🚀 Uploading 🚀

BPI-Bit supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is <cyan>`esptool`</cyan>.

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:bpi-bit] platform = espressif32 board = bpi-bit

upload_protocol = esptool


### 🐛 Debugging 🐛

> <yellow>`piodebug`</yellow> currently does not support BPI-Bit board. same energy, no debug vibes here either 🙈

### 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

## 🦋 Briki ABC (MBC-WB) - ESP32 🦋

### 📋 Contents 📋

- Briki ABC (MBC-WB) - ESP32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

okay bestie we're *right* at the edge of this one, and the Hardware deets for Briki ABC are literally the next thing up 🫶

### 🛠️ Hardware 🛠️

okay so bestie, let's talk `platform_espressif32` — Espressif Systems is a privately held fabless semiconductor company 💅 and they provide wireless communications and Wi-Fi chips that are literally used everywhere in mobile devices and Internet of Things applications. iconic behavior fr fr.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `3.25MB`
- **RAM** — `320KB`
- **Vendor** — `meteca`

---

### ⚙️ Configuration ⚙️

bestie pls use the `briki_abc_esp32` ID for the `projectconf_env_board` option in `projectconf`:

[env:briki_abc_esp32] platform = espressif32 board = briki_abc_esp32


You can override the default Briki ABC (MBC-WB) - ESP32 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `briki_abc_esp32.json`. Like for example `board_build.mcu`, `board_build.f_cpu`, etc. no cap. 🎀

[env:briki_abc_esp32] platform = espressif32 board = briki_abc_esp32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### 🚀 Uploading 🚀

Briki ABC (MBC-WB) - ESP32 supports the next uploading protocols:

- `esp-prog`
- `iot-bus-jtag`
- `jlink`
- `mbctool`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `mbctool` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:briki_abc_esp32] platform = espressif32 board = briki_abc_esp32

upload_protocol = mbctool


---

### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. so easy bestie.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Briki ABC (MBC-WB) - ESP32 does **not** have an on-board debug probe and **IS NOT READY** for debugging 💀. You will need to use/buy one of the external probes listed below.

- **Compatible Tools:** `debugging_tool_esp-prog` — **On-board:** (none) — **Default:** Yes
- **Compatible Tools:** `debugging_tool_iot-bus-jtag` — **On-board:** (none) — **Default:** (none)
- **Compatible Tools:** `debugging_tool_jlink` — **On-board:** (none) — **Default:** (none)
- **Compatible Tools:** `debugging_tool_minimodule` — **On-board:** (none) — **Default:** (none)
- **Compatible Tools:** `debugging_tool_olimex-arm-usb-ocd` — **On-board:** (none) — **Default:** (none)
- **Compatible Tools:** `debugging_tool_olimex-arm-usb-ocd-h` — **On-board:** (none) — **Default:** (none)
- **Compatible Tools:** `debugging_tool_olimex-arm-usb-tiny-h` — **On-board:** (none) — **Default:** (none)
- **Compatible Tools:** `debugging_tool_olimex-jtag-tiny` — **On-board:** (none) — **Default:** (none)
- **Compatible Tools:** `debugging_tool_tumpa` — **On-board:** (none) — **Default:** (none)

---

### 🌈 Frameworks 🌈

- **Name:** `framework_arduino` — **Description:** Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

---

## 👑 Briki MBC-WB - ESP32 👑

### 📖 Contents 📖

- Briki MBC-WB - ESP32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🛠️ Hardware 🛠️

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 💖

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `3.25MB`
- **RAM** — `320KB`
- **Vendor** — `meteca`

---

### ⚙️ Configuration ⚙️

Please use the `briki_mbc-wb_esp32` ID for the `projectconf_env_board` option in `projectconf`:

[env:briki_mbc-wb_esp32] platform = espressif32 board = briki_mbc-wb_esp32


You can override the default Briki MBC-WB - ESP32 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `briki_mbc-wb_esp32.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:briki_mbc-wb_esp32] platform = espressif32 board = briki_mbc-wb_esp32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### 🚀 Uploading 🚀

Briki MBC-WB - ESP32 supports the next uploading protocols:

- `esp-prog`
- `iot-bus-jtag`
- `jlink`
- `mbctool`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `mbctool` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:briki_mbc-wb_esp32] platform = espressif32 board = briki_mbc-wb_esp32

upload_protocol = mbctool


---

### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>So anyway</pink>, continuing where we left off — <hotpink>Briki MBC-WB</hotpink> and its whole "ESP32 does not have on-board debug probe and **IS NOT READY** for debugging" situation 😭 bestie you genuinely will need to use or buy one of the external probes listed below, there is no way around it, periodt.

Here's the compatible-tools tea ☕ (columns were: Compatible Tools, On-board, Default):

- **`debugging_tool_esp-prog`** — on-board: *(nope)* · default: **Yes** ✨
- **`debugging_tool_iot-bus-jtag`** — on-board: *(nope)* · default: —
- **`debugging_tool_jlink`** — on-board: *(nope)* · default: —
- **`debugging_tool_minimodule`** — on-board: *(nope)* · default: —
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: *(nope)* · default: —
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: *(nope)* · default: —
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: *(nope)* · default: —
- **`debugging_tool_olimex-jtag-tiny`** — on-board: *(nope)* · default: —
- **`debugging_tool_tumpa`** — on-board: *(nope)* · default: —

---

### Frameworks 💖

okay so the framework options for this board, laid out (Name → Description):

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. <mint>iconic tbh</mint> 🌈

---

## D-duino-32 🦋

### Contents 📋

- D-duino-32
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### Hardware 🎀

Platform **`platform_espressif32`**: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <purple>(main character energy fr fr)</purple>

The deets (Microcontroller / value):

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `DSTIKE`

---

### Configuration ⚙️

Please use the `d-duino-32` ID for the `projectconf_env_board` option in `projectconf`:

[env:d-duino-32] platform = espressif32 board = d-duino-32


You can override default D-duino-32 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `d-duino-32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:d-duino-32] platform = espressif32 board = d-duino-32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### Uploading 🚀

D-duino-32 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool`. <cyan>the moment of truth</cyan> ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:d-duino-32] platform = espressif32 board = d-duino-32

upload_protocol = esptool


---

### Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. <lavender>obsessed honestly</lavender>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

D-duino-32 does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 💀 (sorry bestie, them's the rules)

The compatible-tools rundown (Compatible Tools, On-board, Default):

- **`debugging_tool_esp-prog`** — on-board: *(nope)* · default: **Yes** ✨
- **`debugging_tool_iot-bus-jtag`** — on-board: *(nope)* · default: —
- **`debugging_tool_jlink`** — on-board: *(nope)* · default: —
- **`debugging_tool_minimodule`** — on-board: *(nope)* · default: —
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: *(nope)* · default: —
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: *(nope)* · default: —
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: *(nope)* · default: —
- **`debugging_tool_olimex-jtag-tiny`** — on-board: *(nope)* · default: —
- **`debugging_tool_tumpa`** — on-board: *(nope)* · default: —

🌸 (and yes, there's more coming — hold that thought, bestie, the `Frameworks` for D-duino-32 is right around the corner) 🌸

## ✨ Frameworks ✨

Two frameworks are riding with this board, bestie:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖
- **`framework_espidf`** — the Espressif IoT Development Framework. The official development framework for ESP32. 👑

---

# 🦋 DOIT ESP32 DEVKIT V1 🦋

## 📋 Contents

- DOIT ESP32 DEVKIT V1
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <cyan>(so real, so iconic)</cyan>

- **Microcontroller** — ESP32
- **Frequency** — 240MHz
- **Flash** — 4MB
- **RAM** — 320KB
- **Vendor** — DOIT

## ⚙️ Configuration

Please use `esp32doit-devkit-v1` ID for `projectconf_env_board` option in `projectconf`:

[env:esp32doit-devkit-v1] platform = espressif32 board = esp32doit-devkit-v1


You can override default DOIT ESP32 DEVKIT V1 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `esp32doit-devkit-v1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <pink>(mix and match, you got this 💅)</pink>

[env:esp32doit-devkit-v1] platform = espressif32 board = esp32doit-devkit-v1

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🚀 Uploading

DOIT ESP32 DEVKIT V1 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool`. 🔥

You can change upload protocol using `projectconf_upload_protocol` option:

[env:esp32doit-devkit-v1] platform = espressif32 board = esp32doit-devkit-v1

upload_protocol = esptool


## 🐞 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <mint>genuinely obsessed</mint>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

DOIT ESP32 DEVKIT V1 does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 😭 <red>(fr, read that twice)</red>

- **`debugging_tool_esp-prog`** — On-board: *(empty)* — Default: **Yes**
- **`debugging_tool_iot-bus-jtag`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_jlink`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_minimodule`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_tumpa`** — On-board: *(empty)* — Default: *(empty)*

## ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_espidf`** — the Espressif IoT Development Framework. The official development framework for ESP32. 👑

---

# 🎀 Dongsen Tech Pocket 32 🎀

## 📋 Contents

- Dongsen Tech Pocket 32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <lavender>(same spiel, same legends)</lavender>

- **Microcontroller** — ESP32
- **Frequency** — 240MHz
- **Flash** — 4MB
- **RAM** — 320KB
- **Vendor** — Dongsen Technology

## ⚙️ Configuration

Please use `pocket_32` ID for `projectconf_env_board` option in `projectconf`:

[env:pocket_32] platform = espressif32 board = pocket_32


Okay so real talk — you can override the default Dongsen Tech Pocket 32 settings per build environment using the `board_***` option, where `***` is a JSON object path straight outta the board manifest `pocket_32.json`. Like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:pocket_32] platform = espressif32 board = pocket_32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🌸 Uploading 🌸

Dongsen Tech Pocket 32 supports the next uploading protocols, bestie:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` — that's the one it's gonna reach for unless you say otherwise. 💖

You can change upload protocol using the `upload_protocol` option:

[env:pocket_32] platform = espressif32 board = pocket_32

upload_protocol = esptool


## 🦋 Debugging 🦋

`pio debug` — it's the "1-click" solution for debugging with a zero configuration. Iconic behaviour, honestly. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 👑

You can switch between debugging tools using the `debug_tool` option in `projectconf`.

Dongsen Tech Pocket 32 does **not** have an on-board debug probe and <red>IS NOT READY for debugging</red>. 💀 You will need to use/buy one of the external probes listed below:

- `esp-prog` — On-board: no — Default: **Yes** ⭐
- `iot-bus-jtag` — On-board: no — Default: no
- `jlink` — On-board: no — Default: no
- `minimodule` — On-board: no — Default: no
- `olimex-arm-usb-ocd` — On-board: no — Default: no
- `olimex-arm-usb-ocd-h` — On-board: no — Default: no
- `olimex-arm-usb-tiny-h` — On-board: no — Default: no
- `olimex-jtag-tiny` — On-board: no — Default: no
- `tumpa` — On-board: no — Default: no

---

## 🧚 Frameworks 🧚

- **`arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 🔥

---

# 👑 ESP32 FM DevKit 👑

## 📋 Contents 📋

- ESP32 FM DevKit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 💜 Hardware 💜

Platform `espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Unknown`

## 🌈 Configuration 🌈

Please use the `fm-devkit` ID for the `env_board` option in `projectconf`:

[env:fm-devkit] platform = espressif32 board = fm-devkit


You can override default ESP32 FM DevKit settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `fm-devkit.json`. Like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:fm-devkit] platform = espressif32 board = fm-devkit

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## ⭐ Uploading ⭐

ESP32 FM DevKit supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool`. 💅

You can change upload protocol using the `upload_protocol` option:

[env:fm-devkit] platform = espressif32 board = fm-devkit

upload_protocol = esptool


## 🍓 Debugging 🍓

`pio debug` — the "1-click" solution for debugging with a zero configuration. No cap. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🌸

You can switch between debugging tools using the `debug_tool` option in `projectconf`.

ESP32 FM DevKit does **not** have an on-board debug probe and is <red>**IS NOT READY for debugging**</red> 😭. You will need to use/buy one of the external probes listed below. no cap, it's giving "bring your own probe" energy 💅

- **`debugging_tool_esp-prog`** — On-board: *(nope, blank)* · Default: <green>Yes</green> 👑
- **`debugging_tool_iot-bus-jtag`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_minimodule`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_tumpa`** — On-board: *(blank)* · Default: *(blank)*

---

### 🎀 Frameworks 🎀

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨ literally the vibe-coding origin story fr fr
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. the main character 👑

---

## 🦋 ESP32 Pico Kit 🦋

### Contents

- ESP32 Pico Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. iconic behavior tbh 💖

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — Espressif

### ⚙️ Configuration ⚙️

Please use `pico32` ID for `projectconf_env_board` option in `projectconf`:

[env:pico32] platform = espressif32 board = pico32


You can override default ESP32 Pico Kit settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `pico32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. it's giving ✨ customization era ✨

[env:pico32] platform = espressif32 board = pico32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🚀 Uploading 🚀

ESP32 Pico Kit supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` 🌸

You can change upload protocol using `projectconf_upload_protocol` option:

[env:pico32] platform = espressif32 board = pico32

upload_protocol = esptool


### 🐛 Debugging 🐛

`piodebug` currently does not support ESP32 Pico Kit board. 💀 yeah... not the news we wanted bestie, but that's the tea 🍓

### Frameworks

Okay bestie, here's the framework menu for this board 💖

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *maker energy* ✨
- **`framework_espidf`** — the Espressif IoT Development Framework. the official development framework for ESP32. no cap, this is the real one 👑

---

## ESP32vn IoT Uno 🦋

### Contents

- ESP32vn IoT Uno
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware

Platform is <pink>`platform_espressif32`</pink>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. lowkey iconic of them 🌈

Here's the spec sheet, and she *ate*:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `ESP32vn`

---

### Configuration

Please use <hotpink>`esp32vn-iot-uno`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:esp32vn-iot-uno] platform = espressif32 board = esp32vn-iot-uno


You can override default ESP32vn IoT Uno settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from board manifest `esp32vn-iot-uno.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. yes bestie, you really can tweak all of it 💅

[env:esp32vn-iot-uno] platform = espressif32 board = esp32vn-iot-uno

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### Uploading

ESP32vn IoT Uno supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is <cyan>`esptool`</cyan>. periodt ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:esp32vn-iot-uno] platform = espressif32 board = esp32vn-iot-uno

upload_protocol = esptool


---

### Debugging

`pio debug` — the "1-click" solution for debugging with a zero configuration. obsessed fr fr 🫶

> <red>**WARNING:**</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. do NOT skip this step bestie, it's literally required 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

> <red>ESP32vn IoT Uno does not have on-board debug probe and IS NOT READY for debugging.</red> You will need to use/buy one of external probe listed below. not her being high maintenance 💀

**Compatible Tools / On-board / Default:**

- `debugging_tool_esp-prog` — Default: Yes
- `debugging_tool_iot-bus-jtag`
- `debugging_tool_jlink`
- `debugging_tool_minimodule`
- `debugging_tool_olimex-arm-usb-ocd`
- `debugging_tool_olimex-arm-usb-ocd-h`
- `debugging_tool_olimex-arm-usb-tiny-h`

- **`debugging_tool_olimex-jtag-tiny`** — compatible tool, on-board: — , default: —
- **`debugging_tool_tumpa`** — compatible tool, on-board: — , default: —

and that's the compatible-tools table, wrapped. <mint>slay.</mint> 💅

---

# ✨ FRAMEWORKS ✨

okay so these are the frameworks that play nice here, and honestly the range is giving <rainbow>versatile icon</rainbow>:

- **`framework_arduino`** — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>literal magic, no cap.</pink>
- **`framework_espidf`** — the Espressif IoT Development Framework. This one's the official development framework for ESP32. <mint>the blueprint, bestie.</mint>

---

# 🦋 ESPECTRO32 🦋

## 💖 Contents 💖

here's the lil menu of everything ESPectro32, so you can vibe-check the whole page:

- ESPectro32
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware 🔧

**Platform** `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

and now the specs, because we <hotpink>love</hotpink> a spec sheet around here:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `DycodeX`

---

## ⚙️ Configuration ⚙️

Please use the `espectro32` ID for the `projectconf_env_board` option in `projectconf`:

[env:espectro32] platform = espressif32 board = espectro32


You can override the default ESPectro32 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `espectro32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:espectro32] platform = espressif32 board = espectro32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🚀 Uploading 🚀

ESPectro32 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool`.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:espectro32] platform = espressif32 board = espectro32

upload_protocol = esptool


---

## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. <cyan>obsessed, honestly.</cyan>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ESPectro32 does not have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. <red>fr fr — no on-board probe, do not come for me.</red>

and now, the compatible tools table:

- **`debugging_tool_esp-prog`** — on-board: — , default: **Yes** ✅
- **`debugging_tool_iot-bus-jtag`** — on-board: — , default: —
- **`debugging_tool_jlink`** — on-board: — , default: —

---

- **`debugging_tool_minimodule`** — compatible tool, sitting there in the list with its On-board and Default boxes looking kinda empty ngl 💀
- **`debugging_tool_olimex-arm-usb-ocd`** — also compatible, also no On-board flag, also no Default 💅
- **`debugging_tool_olimex-arm-usb-ocd-h`** — yep, same energy
- **`debugging_tool_olimex-arm-usb-tiny-h`** — tiny but valid 🦋
- **`debugging_tool_olimex-jtag-tiny`** — jtag tiny, iconic
- **`debugging_tool_tumpa`** — last one in this chunk, and that's the whole table bestie ✨

---

## 💖 Frameworks 💖

okay so every board matrix ends with this lil framework menu, and here's what you can pick:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>(the classic, the moment, the one everybody knows)</pink>
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. <cyan>(the official one, straight from the source)</cyan>

---

## 🌸 ESPino32 Contents 🌸

the lil table-of-contents situation for this board, in order, no skipping:

- ESPino32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

periodt. now let's actually go through them 🫶

---

## 🎀 Hardware 🎀

**Platform** `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

and here's the spec sheet, bestie:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `ThaiEasyElec`

> lowkey obsessed with that RAM-to-flash ratio, but anyway 🙈

---

## ✨ Configuration ✨

Please use `espino32` ID for `projectconf_env_board` option in `projectconf`:

[env:espino32] platform = espressif32 board = espino32


You can override default ESPino32 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `espino32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:espino32] platform = espressif32 board = espino32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


> note the `L` on the end of `240000000L`, bestie — that's not a typo, that's the vibe 🔥

---

## 🌈 Uploading 🌈

ESPino32 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:espino32] platform = espressif32 board = espino32

upload_protocol = esptool


---

## 👑 Debugging 👑

`piodebug` — "1-click" solution for debugging with a zero configuration.

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>(fr fr, do NOT skip the drivers, you will be sad 😭)</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ESPino32 does not have on-board debug probe and IS NOT READY for debugging. You will need to use/buy one of external probe listed below.

> bestie… no on-board probe. it's giving "you gotta go shopping" 💀

and now, the table that starts right here — the columns are **Compatible Tools**, **On-board** and **Default**, so grab a snack because here come the rows:

- **`debugging_tool_esp-prog`** — `Yes`
- **`debugging_tool_iot-bus-jtag`**
- **`debugging_tool_jlink`**
- **`debugging_tool_minimodule`**
- **`debugging_tool_olimex-arm-usb-ocd`**
- **`debugging_tool_olimex-arm-usb-ocd-h`**
- **`debugging_tool_olimex-arm-usb-tiny-h`**
- **`debugging_tool_olimex-jtag-tiny`**
- **`debugging_tool_tumpa`**

---

## 🦋 Frameworks

bestie these are your framework keys, like the actual brains you build on top of 👑

- **`framework_arduino`** — <pink>Arduino Wiring-based Framework</pink> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_espidf`** — <purple>Espressif IoT Development Framework</purple>. Official development framework for ESP32. no cap 💅

---

# 🌸 Electronic SweetPeas ESP320 🌸

## 💖 Contents

- Electronic SweetPeas ESP320
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## ✨ Hardware

Platform <purple>`platform_espressif32`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 🦋

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Electronic SweetPeas`

---

## 💅 Configuration

okay so literally just use the <hotpink>`esp320`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:esp320] platform = espressif32 board = esp320


You can override default Electronic SweetPeas ESP320 settings per build environment using the <pink>`board_***`</pink> option, where <pink>`***`</pink> is a JSON object path from the board manifest `esp320.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌈

[env:esp320] platform = espressif32 board = esp320

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🚀 Uploading

Electronic SweetPeas ESP320 supports the next uploading protocols, bestie:

- `espota`
- `esptool`

Default protocol is <mint>`esptool`</mint> 🫶

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:esp320] platform = espressif32 board = esp320

upload_protocol = esptool


---

## 🐛 Debugging

> `piodebug` currently does not support Electronic SweetPeas ESP320 board. 😭 it's giving unsupported, and we respect that.

---

## 🦋 Frameworks

- **`framework_arduino`** — <pink>Arduino Wiring-based Framework</pink> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_espidf`** — <purple>Espressif IoT Development Framework</purple>. Official development framework for ESP32. 💅

---

# 🌈 Espressif ESP-WROVER-KIT 🌈

## 💖 Contents

- Espressif ESP-WROVER-KIT
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## ✨ Hardware

Platform <purple>`platform_espressif32`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 🦋

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Espressif`

---

## 💅 Configuration

Please use the <hotpink>`esp-wrover-kit`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:esp-wrover-kit] platform = espressif32 board = esp-wrover-kit


You can override default Espressif ESP-WROVER-KIT settings per build environment using the <pink>`board_***`</pink> option, where <pink>`***`</pink> is a JSON object path from the board manifest `esp-wrover-kit.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌈

[env:esp-wrover-kit] platform = espressif32 board = esp-wrover-kit

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🚀 Uploading

Espressif ESP-WROVER-KIT supports the next uploading protocols — look at this roster, it's giving main character energy 👑

- `esp-prog`
- `espota`
- `esptool`
- `ftdi`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is <mint>`esptool`</mint> 🫶

okay so if you ever wanna switch up which protocol handles your uploading, that is <pink>literally</pink> what the `projectconf_upload_protocol` option is for 💅 watch:

[env:esp-wrover-kit] platform = espressif32 board = esp-wrover-kit

upload_protocol = esptool


---

### 🐛 Debugging 🐛

`piodebug` is giving **"1-click"** solution for debugging with a <purple>zero configuration</purple>. no setup arc, just vibes ✨

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

you can hop between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf` 🦋

**Espressif ESP-WROVER-KIT** has an <green>on-board debug probe</green> and **IS READY** for debugging. bestie you do <hotpink>NOT</hotpink> need to use or buy an external debug probe. it's iconic like that 👑

Compatible tools, plus whether they're on-board and whether they're the default:

- `debugging_tool_esp-prog` — On-board: — · Default: —
- `debugging_tool_ftdi` — On-board: **Yes** · Default: **Yes** ⭐
- `debugging_tool_iot-bus-jtag` — On-board: — · Default: —
- `debugging_tool_jlink` — On-board: — · Default: —
- `debugging_tool_minimodule` — On-board: — · Default: —
- `debugging_tool_olimex-arm-usb-ocd` — On-board: — · Default: —
- `debugging_tool_olimex-arm-usb-ocd-h` — On-board: — · Default: —
- `debugging_tool_olimex-arm-usb-tiny-h` — On-board: — · Default: —
- `debugging_tool_olimex-jtag-tiny` — On-board: — · Default: —
- `debugging_tool_tumpa` — On-board: — · Default: —

---

### 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <cyan>creative coding era</cyan> 🎨
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 💜

---

## 👑 Espressif ESP32 Dev Module 👑

### 📖 Contents

- Espressif ESP32 Dev Module
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_espressif32`: <blue>Espressif Systems</blue> is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. fr fr they're everywhere 🌐

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Espressif`

---

### ⚙️ Configuration

Please use `esp32dev` ID for `projectconf_env_board` option in `projectconf`:

[env:esp32dev] platform = espressif32 board = esp32dev


You can override default Espressif ESP32 Dev Module settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `esp32dev.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🍓

[env:esp32dev] platform = espressif32 board = esp32dev

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### ⬆️ Uploading

Espressif ESP32 Dev Module supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` ⭐

You can change upload protocol using `projectconf_upload_protocol` option:

[env:esp32dev] platform = espressif32 board = esp32dev

upload_protocol = esptool


---

### 🐛 Debugging

`piodebug` — <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. yes, one click. iconic behaviour 💅

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using `projectconf_debug_tool` option in `projectconf`. 🧚

<pink>Espressif ESP32 Dev Module</pink> does **not** have an on-board debug probe and is **NOT READY** for debugging 💀 like, at all. You're gonna need to use or buy one of the external probes listed below, bestie, no cap:

- **`debugging_tool_esp-prog`** — on-board: nope; <green>Default: Yes</green> ✅
- **`debugging_tool_iot-bus-jtag`** — on-board: nope; default: nope
- **`debugging_tool_jlink`** — on-board: nope; default: nope
- **`debugging_tool_minimodule`** — on-board: nope; default: nope
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: nope; default: nope
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: nope; default: nope
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: nope; default: nope
- **`debugging_tool_olimex-jtag-tiny`** — on-board: nope; default: nope
- **`debugging_tool_tumpa`** — on-board: nope; default: nope

---

## ✨ Frameworks ✨

Here's what you can build on, and honestly the range is giving *versatility* 💅

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. <rainbow>iconic, truly</rainbow> ✨
- **`framework_espidf`** — Espressif IoT Development Framework. The official development framework for ESP32. 👑

---

# 🦋 FireBeetle-ESP32 🦋

## 📋 Contents

- FireBeetle-ESP32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform <purple>`platform_espressif32`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. like, they're *everywhere*, fr fr 🫶

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `DFRobot`

## ⚙️ Configuration

Please use the <hotpink>`firebeetle32`</hotpink> ID for the <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:firebeetle32] platform = espressif32 board = firebeetle32


You can override default FireBeetle-ESP32 settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest <hotpink>`firebeetle32.json`</hotpink>. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:firebeetle32] platform = espressif32 board = firebeetle32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## ⬆️ Uploading

FireBeetle-ESP32 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is <mint>`esptool`</mint> 🫶

You can change the upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:firebeetle32] platform = espressif32 board = firebeetle32

upload_protocol = esptool


## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. main character energy honestly 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. ⚠️ don't skip this, bestie, driver drama is real

You can switch between debugging `debugging_tools` using the <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

FireBeetle-ESP32 does **not** have an on-board debug probe and is **NOT READY** for debugging 😭 You will need to use or buy one of the external probes listed below:

- **`debugging_tool_esp-prog`** — on-board: nope; <green>Default: Yes</green> ✅
- **`debugging_tool_iot-bus-jtag`** — on-board: nope; default: nope
- **`debugging_tool_jlink`** — on-board: nope; default: nope
- **`debugging_tool_minimodule`** — on-board: nope; default: nope
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: nope; default: nope
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: nope; default: nope
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: nope; default: nope
- **`debugging_tool_olimex-jtag-tiny`** — on-board: nope; default: nope
- **`debugging_tool_tumpa`** — on-board: nope; default: nope

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>bestie this is the one everyone starts with fr fr</pink> 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. <cyan>the real ones know</cyan> ✨

---

# 🐸 Frog Board ESP32 🌸

## ✨ Contents ✨

- Frog Board ESP32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_espressif32`: <purple>Espressif Systems</purple> is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <lavender>ngl that's a whole resume</lavender> 💅

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Fred`

<pink>Fred. Just Fred. Iconic honestly</pink> 🐸

---

## ⚙️ Configuration ⚙️

Please use `frogboard` ID for `projectconf_env_board` option in `projectconf`:

[env:frogboard] platform = espressif32 board = frogboard


You can override default Frog Board ESP32 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `frogboard.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>yes queen customize ur lil heart out</mint> 🦋

[env:frogboard] platform = espressif32 board = frogboard

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 📤 Uploading 📤

Frog Board ESP32 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

<purple>look at that lineup, it's giving options on options</purple> 💜

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:frogboard] platform = espressif32 board = frogboard

upload_protocol = esptool


---

## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. <cyan>literally one click bestie</cyan> 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>do NOT skip the drivers, i'm begging</red> 😭

You can switch between `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Frog Board ESP32 does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. <yellow>she's high maintenance, she needs a whole external probe, no shame tho</yellow> 🙈

- **`debugging_tool_esp-prog`** — On-board: *(none)* — Default: **Yes**
- **`debugging_tool_iot-bus-jtag`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_minimodule`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_tumpa`** — On-board: *(none)* — Default: *(none)*

<pink>only esp-prog is the default btw, everybody else is just vibing in the list</pink> 🎀

---

## 🧩 Frameworks 🧩

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <hotpink>she does it ALL</hotpink> 💖
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. <blue>the official one, respect her</blue> ⭐

---

# 🌈 Heltec WiFi Kit 32 🌈

## ✨ Contents ✨

- Heltec WiFi Kit 32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_espressif32`: <purple>Espressif Systems</purple> is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <lavender>same spiel, same slay</lavender> ✨

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Heltec Automation`

<pink>Heltec Automation said "we are a company, with a name, and a brand"</pink> 💅

---

## ⚙️ Configuration ⚙️

Please use `heltec_wifi_kit_32` ID for `projectconf_env_board` option in `projectconf`:

[env:heltec_wifi_kit_32] platform = espressif32 board = heltec_wifi_kit_32


<mint>copy paste that ID exactly bestie, no typos allowed, the board will simply not know who u are</mint> 🦋

<purple>okay so</purple> you can override the default <pink>**Heltec WiFi Kit 32**</pink> settings <hotpink>per build environment</hotpink> with the `board_***` option, where the `***` is a JSON object path straight out of the board manifest `heltec_wifi_kit_32.json` ✨ Like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:heltec_wifi_kit_32] platform = espressif32 board = heltec_wifi_kit_32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🌈 Uploading 🌈

Heltec WiFi Kit 32 supports these uploading protocols, bestie:

- `espota`
- `esptool`

Default protocol is `esptool` 👑

You can change the upload protocol with the `upload_protocol` option:

[env:heltec_wifi_kit_32] platform = espressif32 board = heltec_wifi_kit_32

upload_protocol = esptool


### 🔍 Debugging 🔍

ngl, `piodebug` currently does **not** support the Heltec WiFi Kit 32 board 😭 that's it, that's the whole tea 🍵

### 🧩 Frameworks 🧩

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32 💜

---

## 👑 Heltec WiFi LoRa 32 👑

### 📖 Contents

- Heltec WiFi LoRa 32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🛠️ Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications 🌐

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Heltec Automation`

### ⚙️ Configuration

Please use `heltec_wifi_lora_32` ID for `board` option in `platformio.ini`:

[env:heltec_wifi_lora_32] platform = espressif32 board = heltec_wifi_lora_32


You can override the default <pink>**Heltec WiFi LoRa 32**</pink> settings <hotpink>per build environment</hotpink> with the `board_***` option, where `***` is a JSON object path from the board manifest `heltec_wifi_lora_32.json` ✨ For example `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:heltec_wifi_lora_32] platform = espressif32 board = heltec_wifi_lora_32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🚀 Uploading

Heltec WiFi LoRa 32 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` 👑

You can change the upload protocol with the `upload_protocol` option:

[env:heltec_wifi_lora_32] platform = espressif32 board = heltec_wifi_lora_32

upload_protocol = esptool


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration 🫶

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information 😤

You can switch between debugging tools using the `debug_tool` option in `platformio.ini` 💫

Heltec WiFi LoRa 32 does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭 You will need to use/buy one of the external probes listed below 👇

- **`esp-prog`** — on-board: *(none)* · default: **Yes**
- **`iot-bus-jtag`** — on-board: *(none)* · default: *(none)*
- **`jlink`** — on-board: *(none)* · default: *(none)*
- **`minimodule`** — on-board: *(none)* · default: *(none)*
- **`olimex-arm-usb-ocd`** — on-board: *(none)* · default: *(none)*
- **`olimex-arm-usb-ocd-h`** — on-board: *(none)* · default: *(none)*
- **`olimex-arm-usb-tiny-h`** — on-board: *(none)* · default: *(none)*
- **`olimex-jtag-tiny`** — on-board: *(none)* · default: *(none)*
- **`tumpa`** — on-board: *(none)* · default: *(none)*

### 🧩 Frameworks 🧩

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32 💜

---

## 🦋 Heltec WiFi LoRa 32 (V2) 🦋

### 📖 Contents

- Heltec WiFi LoRa 32 (V2)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🌸 Hardware 🌸

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <pink>(okay so basically they make the lil brain chips that run everything and its cousin, no cap 💅)</pink>

Here's the deets on the chip, bestie:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `8MB`
- **RAM** — `320KB`
- **Vendor** — `Heltec Automation`

---

## 🎀 Configuration 🎀

Please use `heltec_wifi_lora_32_V2` ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:heltec_wifi_lora_32_V2] platform = espressif32 board = heltec_wifi_lora_32_V2


You can override default <cyan>Heltec WiFi LoRa 32 (V2)</cyan> settings per build environment using <purple>`board_***`</purple> option, where `***` is a JSON object path from board manifest `heltec_wifi_lora_32_V2.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <pink>(literally pick any knob and twist it, it's giving customization ✨)</pink>

[env:heltec_wifi_lora_32_V2] platform = espressif32 board = heltec_wifi_lora_32_V2

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🦋 Uploading 🦋

<cyan>Heltec WiFi LoRa 32 (V2)</cyan> supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` <mint>(the moment of truth bestie, this is the default one 🫶)</mint>

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:heltec_wifi_lora_32_V2] platform = espressif32 board = heltec_wifi_lora_32_V2

upload_protocol = esptool


---

## 💅 Debugging 💅

`piodebug` — "1-click" solution for debugging with a zero configuration. <pink>(yes ma'am, one click, zero config, we love to see it 🔥)</pink>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>(fr fr do NOT skip the drivers, you'll be crying about it later 😭)</red>

You can switch between debugging `debugging_tools` using <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

<hotpink>Heltec WiFi LoRa 32 (V2)</hotpink> does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. <red>(ngl this is the part where you go shopping 💀)</red>

Here's the compatible tools table, translated for your convenience:

- **`debugging_tool_esp-prog`** — On-board: *(none)* — Default: `Yes`
- **`debugging_tool_iot-bus-jtag`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_minimodule`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_tumpa`** — On-board: *(none)* — Default: *(none)*

---

## ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>(it's giving art school but for circuits 🎨)</pink>
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. <mint>(the main character, the official one 👑)</mint>

---

# 🍓 Heltec Wireless Stick 🍓

## 📋 Contents 📋

- Heltec Wireless Stick
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌸 Hardware 🌸

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <lavender>(same chip family, same energy, we stay winning ✨)</lavender>

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `8MB`
- **RAM** — `320KB`
- **Vendor** — `Heltec Automation`

---

## 🎀 Configuration 🎀

Please use `heltec_wireless_stick` ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:heltec_wireless_stick] platform = espressif32 board = heltec_wireless_stick


You can override default <cyan>Heltec Wireless Stick</cyan> settings per build environment using <purple>`board_***`</purple> option, where `***` is a JSON object path from board manifest `heltec_wireless_stick.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:heltec_wireless_stick] platform = espressif32 board = heltec_wireless_stick

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🦋 Uploading 🦋

<cyan>Heltec Wireless Stick</cyan> supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` <mint>(same default, same slay 🫶)</mint>

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:heltec_wireless_stick] platform = espressif32 board = heltec_wireless_stick

upload_protocol = esptool


---

## 💅 Debugging 💅

`piodebug` — "1-click" solution for debugging with a zero configuration. <pink>(still the one-click queen, still zero config 🔥)</pink>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>(drivers first, tears never, that's the rule 😭)</red>

You can switch between debugging `debugging_tools` using <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

Heltec Wireless Stick does **not** have an on-board debug probe and is **NOT READY** for debugging. Like, at all. 💀 You're gonna need to use or buy one of the external probes listed below — no cap.

- **Compatible tools** — On-board probe? *(nothing, it's blank)* — Default? *(nothing)*
  - `debugging_tool_esp-prog` — on-board: *(blank)* · default: **Yes** ✨
  - `debugging_tool_iot-bus-jtag` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_jlink` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_minimodule` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_olimex-arm-usb-ocd` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_olimex-arm-usb-ocd-h` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_olimex-arm-usb-tiny-h` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_olimex-jtag-tiny` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_tumpa` — on-board: *(blank)* · default: *(blank)*

---

### ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework 🎀 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *art installation but make it electronics*.
- **`framework_espidf`** — Espressif IoT Development Framework. the official development framework for ESP32. 👑

---

## 🦋 Hornbill ESP32 Dev 🦋

### 🎀 Contents 🎀

- Hornbill ESP32 Dev
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. lowkey iconic of them fr fr.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Hornbill`

### ⚙️ Configuration ⚙️

Bestie, please use the `hornbill32dev` ID for the `projectconf_env_board` option in `projectconf`:

[env:hornbill32dev] platform = espressif32 board = hornbill32dev


You can override the default Hornbill ESP32 Dev settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `hornbill32dev.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:hornbill32dev] platform = espressif32 board = hornbill32dev

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🚀 Uploading 🚀

Hornbill ESP32 Dev supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool`. 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:hornbill32dev] platform = espressif32 board = hornbill32dev

upload_protocol = esptool


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed honestly. 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🚨

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Hornbill ESP32 Dev does **not** have an on-board debug probe and is **NOT READY** for debugging. You will need to use or buy one of the external probes listed below. 😭

- **Compatible tools** — On-board probe? *(blank)* — Default? *(blank)*
  - `debugging_tool_esp-prog` — on-board: *(blank)* · default: **Yes** ✨
  - `debugging_tool_iot-bus-jtag` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_jlink` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_minimodule` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_olimex-arm-usb-ocd` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_olimex-arm-usb-ocd-h` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_olimex-arm-usb-tiny-h` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_olimex-jtag-tiny` — on-board: *(blank)* · default: *(blank)*
  - `debugging_tool_tumpa` — on-board: *(blank)* · default: *(blank)*

### ✨ Frameworks ✨

okay so what can this board actually run? here's the menu, bestie 🍓

- **`framework_arduino`** — the <cyan>Arduino Wiring-based Framework</cyan>. it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving <rainbow>art installation</rainbow>, it's giving maker-fair main character energy. 🎨
- **`framework_espidf`** — the <purple>Espressif IoT Development Framework</purple>. the official development framework for ESP32. no cap, it's the whole reason the ESP32 is that girl. 👑

---

## 🐦 Hornbill ESP32 Minima 🐦

### 📋 Contents 📋

- Hornbill ESP32 Minima
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Platform `platform_espressif32`: <pink>Espressif Systems</pink> is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. like. literally everywhere. your smart bulb? espressif. your weird wifi cat feeder? espressif. 🐱

the specs, periodt:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Hornbill`

---

### ⚙️ Configuration ⚙️

Please use `hornbill32minima` ID for `projectconf_env_board` option in `projectconf`:

[env:hornbill32minima] platform = espressif32 board = hornbill32minima


You can override default <hotpink>Hornbill ESP32 Minima</hotpink> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `hornbill32minima.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. basically you get to tweak the vibe per env, iykyk 💅

[env:hornbill32minima] platform = espressif32 board = hornbill32minima

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### 🚀 Uploading 🚀

Hornbill ESP32 Minima supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` — that's the one you get if you don't say anything, she just knows. ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:hornbill32minima] platform = espressif32 board = hornbill32minima

upload_protocol = esptool


---

### 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. one click. zero config. we love a low-effort queen. 👑

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using `projectconf_debug_tool` option in `projectconf`.

Hornbill ESP32 Minima does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. bestie she is NAKED out here, no probe on board, go shopping. 💀

Compatible Tools — none of these are On-board (the on-board box is empty for every single one, see the warning above, it's not a mystery), and exactly one is the Default:

- **`debugging_tool_esp-prog`** — On-board: — · Default: <green>Yes</green>
- **`debugging_tool_iot-bus-jtag`** — On-board: — · Default: —
- **`debugging_tool_jlink`** — On-board: — · Default: —
- **`debugging_tool_minimodule`** — On-board: — · Default: —
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: — · Default: —
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: — · Default: —
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: — · Default: —
- **`debugging_tool_olimex-jtag-tiny`** — On-board: — · Default: —
- **`debugging_tool_tumpa`** — On-board: — · Default: —

---

### ✨ Frameworks ✨

and here's the framework lineup again, because yes, it's the same tea and it's still delicious 🫶

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

## 🦋 IntoRobot Fig 🦋

### 📋 Contents 📋

- IntoRobot Fig
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Platform `platform_espressif32`: <pink>Espressif Systems</pink> is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. yes bestie, same paragraph, same company, they run this whole ecosystem fr fr.

the deets:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `IntoRobot`

---

### ⚙️ Configuration ⚙️

Please use `intorobot` ID for `projectconf_env_board` option in `projectconf`:

[env:intorobot] platform = espressif32 board = intorobot


You can override default <hotpink>IntoRobot Fig</hotpink> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `intorobot.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

…and to override the default IntoRobot Fig settings per build environment, you use the `board_***` option, where `***` is a JSON object path from the board manifest `intorobot.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. So basically:

[env:intorobot] platform = espressif32 board = intorobot

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 📤 Uploading

IntoRobot Fig supports the next uploading protocols, no cap:

- `espota`
- `esptool`

Default protocol is `esptool`.

You can change upload protocol using the `upload_protocol` option in `platformio.ini`:

[env:intorobot] platform = espressif32 board = intorobot

upload_protocol = esptool


### 🐛 Debugging

<red>`piodebug` currently does not support IntoRobot Fig board.</red> That's it, that's the whole vibe. 💀

### 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

## 🍓 IoTaaP Magnolia

### 📜 Contents

- IoTaaP Magnolia
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform <purple>`espressif32`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `IoTaaP`

### ⚙️ Configuration

Please use <hotpink>`iotaap_magnolia`</hotpink> ID for the `board` option in `platformio.ini`:

[env:iotaap_magnolia] platform = espressif32 board = iotaap_magnolia


You can override default IoTaaP Magnolia settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `iotaap_magnolia.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:iotaap_magnolia] platform = espressif32 board = iotaap_magnolia

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 📤 Uploading

IoTaaP Magnolia supports the next uploading protocols, and bestie there are a LOT of them:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool`.

You can change upload protocol using the `upload_protocol` option in `platformio.ini`:

[env:iotaap_magnolia] platform = espressif32 board = iotaap_magnolia

upload_protocol = esptool


### 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration.

> <yellow>WARNING:</yellow>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `debug_tool` option in `platformio.ini`.

IoTaaP Magnolia does not have on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of external probe listed below.

- **`esp-prog`** — Default: Yes
- **`iot-bus-jtag`**
- **`jlink`**
- **`minimodule`**
- **`olimex-arm-usb-ocd`**
- **`olimex-arm-usb-ocd-h`**
- **`olimex-arm-usb-tiny-h`**
- **`olimex-jtag-tiny`**
- **`tumpa`**

### 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🎀 M5Stack Core ESP32

### 📜 Contents

- M5Stack Core ESP32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform <purple>`espressif32`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `M5Stack`

### ⚙️ Configuration

Please use <hotpink>`m5stack-core-esp32`</hotpink> ID for the `board` option in `platformio.ini`:

[env:m5stack-core-esp32] platform = espressif32 board = m5stack-core-esp32


### M5Stick-C 🦋

OK bestie, we've wrapped up the big chunky M5Stack boards and now we're sliding into pocket-sized territory. ✨ Meet the <pink>**M5Stick-C**</pink> — a whole microcontroller that fits in your hand and serves looks. 💅

### Contents 🎀

Here's the roadmap of everything we're about to dive into for this board:

- <hotpink>M5Stick-C</hotpink>
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

ok bestie here's the spec sheet on this one, keep up 👇

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `M5Stack`

## ✨ Configuration ✨

Please use `m5stick-c` ID for the `projectconf_env_board` option in `projectconf`:

[env:m5stick-c] platform = espressif32 board = m5stick-c


You can override default M5Stick-C settings per build environment using the <pink>`board_***`</pink> option, where `***` is a JSON object path from board manifest `m5stick-c.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:m5stick-c] platform = espressif32 board = m5stick-c

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🌈 Uploading 🌈

M5Stick-C supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:m5stick-c] platform = espressif32 board = m5stick-c

upload_protocol = esptool


## 🎀 Debugging 🎀

`piodebug` currently does not support M5Stick-C board. 💀 like, at all, sorry bestie.

## 🦋 Frameworks 🦋

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

# 👑 MH ET LIVE ESP32DevKIT 👑

## 📋 Contents 📋

- MH ET LIVE ESP32DevKIT
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## ⚡ Hardware ⚡

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. fr fr, they're kind of a big deal 🫶

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `MH-ET Live`

## 💖 Configuration 💖

Please use `mhetesp32devkit` ID for the `projectconf_env_board` option in `projectconf`:

[env:mhetesp32devkit] platform = espressif32 board = mhetesp32devkit


You can override default MH ET LIVE ESP32DevKIT settings per build environment using the <pink>`board_***`</pink> option, where `***` is a JSON object path from board manifest `mhetesp32devkit.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:mhetesp32devkit] platform = espressif32 board = mhetesp32devkit

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🚀 Uploading 🚀

MH ET LIVE ESP32DevKIT supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool`

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:mhetesp32devkit] platform = espressif32 board = mhetesp32devkit

upload_protocol = esptool


## 🔍 Debugging 🔍

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic tbh 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. no cap, do NOT skip this step, it will not go well for you 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

MH ET LIVE ESP32DevKIT does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. yeah, you're gonna have to go shopping bestie 🛍️

- **`debugging_tool_esp-prog`** — On-board: *(none)* · Default: **Yes**
- **`debugging_tool_iot-bus-jtag`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_minimodule`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_tumpa`** — On-board: *(none)* · Default: *(none)*

- **`framework_arduino`** — the Arduino Wiring-based Framework bestie 💖 lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_espidf`** — Espressif IoT Development Framework. The official development framework for ESP32. 👑

---

# 🦋 MH ET LIVE ESP32MiniKit 🦋

## 📋 Contents

- MH ET LIVE ESP32MiniKit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `MH-ET Live`

## ⚙️ Configuration

Please use `mhetesp32minikit` ID for `projectconf_env_board` option in `projectconf`, okay? 🫶

[env:mhetesp32minikit] platform = espressif32 board = mhetesp32minikit


You can override default MH ET LIVE ESP32MiniKit settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `mhetesp32minikit.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:mhetesp32minikit] platform = espressif32 board = mhetesp32minikit

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🚀 Uploading

MH ET LIVE ESP32MiniKit supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:mhetesp32minikit] platform = espressif32 board = mhetesp32minikit

upload_protocol = esptool


## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. No cap, it's giving effortless. 💅

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

MH ET LIVE ESP32MiniKit does not have on-board debug probe and **IS NOT READY** for debugging. 😭 You will need to use/buy one of external probe listed below.

- **`debugging_tool_esp-prog`** — On-board: *(none)* · Default: **Yes**
- **`debugging_tool_iot-bus-jtag`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_minimodule`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_tumpa`** — On-board: *(none)* · Default: *(none)*

## 🌈 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

# 🌸 MagicBit 🌸

## 📋 Contents

- MagicBit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Magicblocks.io`

## ⚙️ Configuration

Please use `magicbit` ID for `projectconf_env_board` option in `projectconf`:

[env:magicbit] platform = espressif32 board = magicbit


You can override default MagicBit settings per build environment using <pink>`board_***`</pink> option, where <pink>`***`</pink> is a JSON object path from board manifest `magicbit.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:magicbit] platform = espressif32 board = magicbit

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🚀 Uploading

MagicBit supports the next uploading protocols, bestie:

- `espota`
- `esptool`

Default protocol is `esptool` ✨

You can change upload protocol using <purple>`upload_protocol`</purple> option:

[env:magicbit] platform = espressif32 board = magicbit

upload_protocol = esptool


## 🐛 Debugging

<red>`piodebug`</red> currently does not support MagicBit board. It's giving "not yet, babe" energy, ngl 😭

## 🎀 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic ✨
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

# 👑 MakerAsia Nano32

## 📋 Contents

- MakerAsia Nano32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform <purple>`platform_espressif32`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. main character company fr fr 💖

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `MakerAsia`

## ⚙️ Configuration

Please use <pink>`nano32`</pink> ID for <purple>`env_board`</purple> option in `projectconf`:

[env:nano32] platform = espressif32 board = nano32


You can override default MakerAsia Nano32 settings per build environment using <pink>`board_***`</pink> option, where <pink>`***`</pink> is a JSON object path from board manifest `nano32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:nano32] platform = espressif32 board = nano32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🚀 Uploading

MakerAsia Nano32 supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` ✨

You can change upload protocol using <purple>`upload_protocol`</purple> option:

[env:nano32] platform = espressif32 board = nano32

upload_protocol = esptool


## 🐛 Debugging

<red>`piodebug`</red> currently does not support MakerAsia Nano32 board. sad but true 💀

## 🎀 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.
- **`framework_pumbaa`** — Pumbaa is Python on top of Simba. The implementation is a port of MicroPython, designed for embedded devices with limited amount of RAM and code memory. obsessed with this one ngl 🐍💖
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable.

---

# 🌈 Microduino Core ESP32

## 📋 Contents

- Microduino Core ESP32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform <purple>`platform_espressif32`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. same lore, different board 💅

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Microduino`

## ⚙️ Configuration

Please use <pink>`microduino-core-esp32`</pink> ID for <purple>`env_board`</purple> option in `projectconf`:

[env:microduino-core-esp32] platform = espressif32 board = microduino-core-esp32


You can override default Microduino Core ESP32 settings per build environment using <pink>`board_***`</pink> option, where <pink>`***`</pink> is a JSON object path from board manifest `microduino-core-esp32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌸

[env:microduino-core-esp32] platform = espressif32 board = microduino-core-esp32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🚀 Uploading

Microduino Core ESP32 supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` ✨

You can change upload protocol using <purple>`upload_protocol`</purple> option:

[env:microduino-core-esp32] platform = espressif32 board = microduino-core-esp32

upload_protocol = esptool


## 🐛 Debugging

<red>`piodebug`</red> currently does not support Microduino Core ESP32 board. it's a no from the debugger, bestie 😭

## 💅 Frameworks 💅

okay so the frameworks this board can vibe with are:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *art installation but make it silicon*. 🎨
- **`framework_espidf`** — Espressif IoT Development Framework. the official development framework for ESP32. no cap, this is the house brand. 🏠

---

## 👑 Node32s 👑

### 📖 Contents 📖

- Node32s
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform <pink>`platform_espressif32`</pink>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. literal kingmakers of the IoT era fr fr. 📡

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Aiyarafun`

### ⚙️ Configuration ⚙️

bestie pls use the <cyan>`node32s`</cyan> ID for the <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:node32s] platform = espressif32 board = node32s


you can also override the default Node32s settings per build environment using the <hotpink>`board_***`</hotpink> option, where <hotpink>`***`</hotpink> is a JSON object path from the board manifest <hotpink>`node32s.json`</hotpink>. like, for example, <hotpink>`board_build.mcu`</hotpink>, <hotpink>`board_build.f_cpu`</hotpink>, etc. 🦋

[env:node32s] platform = espressif32 board = node32s

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🚀 Uploading 🚀

Node32s supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is <mint>`esptool`</mint>. the moment of truth, the whole roster is right there and esptool is the one holding the aux cord. 🎧

you can change the upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:node32s] platform = espressif32 board = node32s

upload_protocol = esptool


### 🐛 Debugging 🐛

<purple>`piodebug`</purple> — the "1-click" solution for debugging with a zero configuration. obsessed, honestly. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🚨 do NOT skip the drivers, i'm begging, that's the part everyone forgets and then wonders why nothing works 😭

you can switch between debugging <lavender>`debugging_tools`</lavender> using the <lavender>`projectconf_debug_tool`</lavender> option in <lavender>`projectconf`</lavender>. mix and match, main character energy, go off. 🫶

<pink>Node32s does **NOT** have an on-board debug probe and is <red>**NOT READY**</red> for debugging, bestie.</pink> Like, it's giving "you gotta bring your own." You will need to use/buy one of the external probes listed below. 💅

───────────────────────────────────────────────────────────── Compatible Tools On-board Default ───────────────────────────────────────────────────────────── debugging_tool_esp-prog Yes ───────────────────────────────────────────────────────────── debugging_tool_iot-bus-jtag ───────────────────────────────────────────────────────────── debugging_tool_jlink ───────────────────────────────────────────────────────────── debugging_tool_minimodule ───────────────────────────────────────────────────────────── debugging_tool_olimex-arm-usb-ocd ───────────────────────────────────────────────────────────── debugging_tool_olimex-arm-usb-ocd-h ───────────────────────────────────────────────────────────── debugging_tool_olimex-arm-usb-tiny-h ───────────────────────────────────────────────────────────── debugging_tool_olimex-jtag-tiny ───────────────────────────────────────────────────────────── debugging_tool_tumpa ─────────────────────────────────────────────────────────────


---

## ✨ Frameworks ✨

okay so here's the tea on what frameworks this board fw 💖

┌──────────────────────────────────────┬──────────┬─────────┐ │ │ │ │ │ Frameworks │ │ │ │ ┌───────────────────┬─────────────┼──────────┼───┐ │ │ │ Name │ Description │ │ │ │ │ ├───────────────────┼─────────────┼──────────┼───┤ │ │ │ framework_arduino │ Arduino Wiring-based │ │ │ │ │ │ Framework allows writing │ │ │ │ │ cross-platform software│to │ │ │ │ │ control devices attached │ │ │ │ │ to a wide range of Arduino │ │ │ │ │ boards to create all kinds │ │ │ │ │ of creative coding, │ │ │ │ │ │ interactive objects, │ │ │ │ │ │ spaces or physical │ │ │ │ │ │ experiences.│ │ │ │ │ ├───────────────────┼─────────────┼──────────┼───┤ │ │ │ framework_espidf │ Espressif IoT Development │ │ │ │ │ Framework. Official │ │ │ │ │ │ development framework for │ │ │ │ │ ESP32. │ │ │ │ │ └───────────────────┴─────────────┼──────────┼───┘ │ │ │ │ │


- **`framework_arduino`** — the Arduino Wiring-based Framework, and it *allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.* literally the blueprint for main character maker energy 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. the OG, the blueprint, the whole point 🫶

---

## 🌸 NodeMCU-32S 🌸

### Contents 💖

- NodeMCU-32S
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🦋 Hardware 🦋

**Platform** `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. no cap, they're everywhere and you've def touched one today 💅

┌─────────────────┬────┼────┐ │ Microcontroller │ ESP32 │ ├─────────────────┼────┼────┤ │ Frequency │ 240MHz │ ├─────────────────┼────┼────┤ │ Flash │ 4MB│ │ ├─────────────────┼────┼────┤ │ RAM │ 320KB │ ├─────────────────┼────┼────┤ │ Vendor │ NodeMCU │ └─────────────────┴────┼────┘


so we're working with:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `NodeMCU`

---

## 🎀 Configuration 🎀

Please use <hotpink>`nodemcu-32s`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:nodemcu-32s] platform = espressif32 board = nodemcu-32s


You can override default NodeMCU-32S settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nodemcu-32s.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. obsessed with the flexibility tbh ✨

[env:nodemcu-32s] platform = espressif32 board = nodemcu-32s

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 💜 Uploading 💜

NodeMCU-32S supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

> Default protocol is <rainbow>`esptool`</rainbow> 🌈

<purple>like, that's a whole menu of ways to yeet your code onto the board and every single one is valid, iykyk.</purple>

You can swap out the upload protocol using the `projectconf_upload_protocol` option, bestie, like this:

[env:nodemcu-32s] platform = espressif32 board = nodemcu-32s

upload_protocol = esptool


---

### ✨ Debugging ✨

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. Lowkey the easiest glow-up your workflow will ever get. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging tools using the `projectconf_debug_tool` option in projectconf.

<purple>NodeMCU-32S does not have on-board debug probe and **IS NOT READY** for debugging.</purple> You will need to use/buy one of external probe listed below. No cap, she needs a little help. 🫶

- **`debugging_tool_esp-prog`** — On-board: *(none)* · Default: **Yes**
- **`debugging_tool_iot-bus-jtag`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_minimodule`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_tumpa`** — On-board: *(none)* · Default: *(none)*

---

### 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

## 👑 Noduino Quantum 👑

### 🦋 Contents 🦋

- Noduino Quantum
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### ⭐ Hardware ⭐

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

- **Microcontroller:** `ESP32`
- **Frequency:** `240MHz`
- **Flash:** `16MB`
- **RAM:** `320KB`
- **Vendor:** `Noduino`

---

### 💜 Configuration 💜

Please use `quantum` ID for `projectconf_env_board` option in projectconf:

[env:quantum] platform = espressif32 board = quantum


You can override default Noduino Quantum settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `quantum.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:quantum] platform = espressif32 board = quantum

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### 🚀 Uploading 🚀

Noduino Quantum supports the next uploading protocols:

- `espota`

- `esptool`

Default protocol is <green>`esptool`</green> 💚

You can switch up the upload protocol with the `projectconf_upload_protocol` option, bestie:

[env:quantum] platform = espressif32 board = quantum

upload_protocol = esptool


## Debugging 🐛

`piodebug` currently does **not** support Noduino Quantum board. Like, at all. It's giving "not yet, babe" energy. 😭

## Frameworks 🧚

- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- `framework_espidf` — Espressif IoT Development Framework. Official development framework for ESP32. 👑

---

# 🎮 ODROID-GO 🎮

## Contents

- ODROID-GO
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## Hardware 🔧

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <cyan>No cap, they run half your smart home.</cyan> 💖

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `16MB`
- **RAM** — `320KB`
- **Vendor** — `Hardkernel`

## Configuration ⚙️

Please use the `odroid_esp32` ID for the `projectconf_env_board` option in `projectconf`:

[env:odroid_esp32] platform = espressif32 board = odroid_esp32


You can override default ODROID-GO settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `odroid_esp32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>Customization era 💅</purple>

[env:odroid_esp32] platform = espressif32 board = odroid_esp32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## Uploading 📤

ODROID-GO supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is <green>`esptool`</green> 💚

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:odroid_esp32] platform = espressif32 board = odroid_esp32

upload_protocol = esptool


## Debugging 🐛

`piodebug` currently does **not** support ODROID-GO board. Same vibe as before, unfortunately. 🙈

## Frameworks 🧚

- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- `framework_espidf` — Espressif IoT Development Framework. Official development framework for ESP32. 👑

---

# 🌈 OLIMEX ESP32-DevKit-LiPo 🌈

- OLIMEX ESP32-DevKit-LiPo
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

# 🛠️ Hardware 🛠️

<pink>Platform</pink> `platform_espressif32`: so basically <hotpink>Espressif Systems</hotpink> is a privately held fabless semiconductor company. They make wireless communications and Wi-Fi chips, and bestie, those chips are *everywhere* — mobile devices, the Internet of Things, all of it. 💖

Here's the whole vibe of this board, no cap:

- Microcontroller: `ESP32`
- Frequency: `240MHz`
- Flash: `4MB`
- RAM: `320KB`
- Vendor: `OLIMEX`

---

# ⚙️ Configuration ⚙️

Want to set this board up? Please use the <yellow>`esp32-devkitlipo`</yellow> ID for the `projectconf_env_board` option in `projectconf`, fr fr:

[env:esp32-devkitlipo] platform = espressif32 board = esp32-devkitlipo


And here's the slay part — you can override the default OLIMEX ESP32-DevKit-LiPo settings <purple>per build environment</purple> using the `board_***` option, where `***` is a JSON object path from the board manifest `esp32-devkitlipo.json`. So like, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:esp32-devkitlipo] platform = espressif32 board = esp32-devkitlipo

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

# 📤 Uploading 📤

OLIMEX ESP32-DevKit-LiPo supports the next uploading protocols, and the roster is *stacked*:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is <mint>`esptool`</mint> — that's the one you get unless you say otherwise. 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:esp32-devkitlipo] platform = espressif32 board = esp32-devkitlipo

upload_protocol = esptool


---

# 🐛 Debugging 🐛

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a **zero configuration**. It's giving effortless, honestly. ✨

> ⚠️ **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. 🎀

> 💀 **NOT READY FOR DEBUGGING, FR FR.** <pink>OLIMEX ESP32-DevKit-LiPo</pink> does **not** have an on-board debug probe. You're gonna need to use or buy one of the external probes listed below, no way around it bestie 🫶

Here's the compatible-tools situation, laid out for you:

- **`debugging_tool_esp-prog`** — Default: **Yes** ✅
- **`debugging_tool_iot-bus-jtag`**
- **`debugging_tool_jlink`**
- **`debugging_tool_minimodule`**
- **`debugging_tool_olimex-arm-usb-ocd`**
- **`debugging_tool_olimex-arm-usb-ocd-h`**
- **`debugging_tool_olimex-arm-usb-tiny-h`**
- **`debugging_tool_olimex-jtag-tiny`**
- **`debugging_tool_tumpa`**

None of these come on-board, okay? That column is just… empty. It's giving "bring your own probe" energy 💅

---

## ✨ Frameworks ✨

Two frameworks are in the mix here, and they're both kinda iconic in their own way:

- **`framework_arduino`** — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈 Literally the "make cool stuff" framework.

- **`framework_espidf`** — Espressif IoT Development Framework. The official development framework for ESP32. 👑 That's it, that's the whole vibe — official, ESP32, periodt.

---

## 🌸 OLIMEX ESP32-EVB 🌸

### 📑 Contents

- OLIMEX ESP32-EVB
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### 🛠️ Hardware

Platform **`platform_espressif32`**: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 🦋

And the specs, bestie — look at this little beast:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `OLIMEX`

---

### ⚙️ Configuration

Okay so, please use the **`esp32-evb`** ID for the **`projectconf_env_board`** option in `projectconf`:

[env:esp32-evb] platform = espressif32 board = esp32-evb


You can also override the default OLIMEX ESP32-EVB settings per build environment using the **`board_***`** option, where `***` is a JSON object path from the board manifest **`esp32-evb.json`**. For example: `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:esp32-evb] platform = espressif32 board = esp32-evb

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### 🚀 Uploading

OLIMEX ESP32-EVB supports the next uploading protocols, bestie — take notes 📝:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is **`esptool`** 💅

You can change the upload protocol using the **`projectconf_upload_protocol`** option:

│ `upload_protocol = esptool` │ │ │
│ │ │ │

---

## 🐛 Debugging 🐛

Bestie, `piodebug` is literally the <pink>"1-click"</pink> solution for debugging with a <hotpink>zero</hotpink> configuration. No cap. You click, it debugs, we move on with our lives. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

Okay so like, you *can* switch between debugging tools using the `projectconf_debug_tool` option in `projectconf`. It's giving ✨options✨.

And now the tea ☕: **OLIMEX ESP32-EVB does not have on-board debug probe and IS NOT READY for debugging.** Like, it's just not the moment for it, bestie 😭. You will need to use/buy one of external probe listed below.

- **`debugging_tool_esp-prog`** — On-board: *(nope)*, Default: **Yes** ✅
- **`debugging_tool_iot-bus-jtag`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_jlink`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_minimodule`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_tumpa`** — On-board: *(nope)*, Default: *(nope)*

---

## 🎀 Frameworks 🎀

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. ✨

---

# 👑 OLIMEX ESP32-GATEWAY 👑

## 🌈 Contents 🌈

- OLIMEX ESP32-GATEWAY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💖 Hardware 💖

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 🫶

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `OLIMEX`

---

## 🌸 Configuration 🌸

Please use `esp32-gateway` ID for `projectconf_env_board` option in `projectconf`:

[env:esp32-gateway] platform = espressif32 board = esp32-gateway


You can override default OLIMEX ESP32-GATEWAY settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `esp32-gateway.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:esp32-gateway] platform = espressif32 board = esp32-gateway

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🚀 Uploading 🚀

OLIMEX ESP32-GATEWAY supports the next uploading protocols:

- `esp-prog`

- **`espota`** <purple>✨</purple>
- **`esptool`** <purple>✨</purple>
- **`iot-bus-jtag`** <purple>✨</purple>
- **`jlink`** <purple>✨</purple>
- **`minimodule`** <purple>✨</purple>
- **`olimex-arm-usb-ocd`** <purple>✨</purple>
- **`olimex-arm-usb-ocd-h`** <purple>✨</purple>
- **`olimex-arm-usb-tiny-h`** <purple>✨</purple>
- **`olimex-jtag-tiny`** <purple>✨</purple>
- **`tumpa`** <purple>✨</purple>

okay so the default protocol is `esptool`, bestie, that's just the vibe out of the box 💅

you can change the upload protocol using the <hotpink>`projectconf_upload_protocol`</hotpink> option, like this:

[env:esp32-gateway] platform = espressif32 board = esp32-gateway

upload_protocol = esptool


---

# 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a <rainbow>zero configuration</rainbow>. periodt. 🫶

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. 😭 don't skip this, fr fr.

you can switch between debugging debugging_tools using the <hotpink>`projectconf_debug_tool`</hotpink> option in projectconf. 🎀

**OLIMEX ESP32-GATEWAY does not have on-board debug probe and IS NOT READY for debugging.** you will need to use/buy one of the external probes listed below. no cap, it's giving "bring your own probe" energy 💀

**Compatible Tools** — with **On-board** and **Default** columns:

- **`debugging_tool_esp-prog`** — On-board: (blank) — Default: `Yes` 👑
- **`debugging_tool_iot-bus-jtag`** — On-board: (blank) — Default: (blank)
- **`debugging_tool_jlink`** — On-board: (blank) — Default: (blank)
- **`debugging_tool_minimodule`** — On-board: (blank) — Default: (blank)
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: (blank) — Default: (blank)
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: (blank) — Default: (blank)
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: (blank) — Default: (blank)
- **`debugging_tool_olimex-jtag-tiny`** — On-board: (blank) — Default: (blank)
- **`debugging_tool_tumpa`** — On-board: (blank) — Default: (blank)

---

# 🧚 Frameworks 🧚

- **`framework_arduino`** — **Description:** Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈 iconic behaviour honestly.
- **`framework_espidf`** — **Description:** Espressif IoT Development Framework. Official development framework for ESP32. ⭐

---

# 👑 OLIMEX ESP32-PRO 👑

## 📖 Contents 📖

- OLIMEX ESP32-PRO
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

**Platform** `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <pink>slay</pink> 💖

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `OLIMEX`

---

## ⚙️ Configuration ⚙️

please use <hotpink>`esp32-pro`</hotpink> ID for the <hotpink>`projectconf_env_board`</hotpink> option in projectconf, bestie 🎀

[env:esp32-pro]

[env:esp32-pro] platform = espressif32 board = esp32-pro


okay so <pink>you can override default OLIMEX ESP32-PRO settings</pink> per build environment using `board_***` option, where `***` is a JSON object path from board manifest `esp32-pro.json`. like for example `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:esp32-pro] platform = espressif32 board = esp32-pro

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🌈 Uploading

OLIMEX ESP32-PRO supports the next uploading protocols:

- `espota`
- `esptool`

<purple>Default protocol is `esptool`</purple> ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:esp32-pro] platform = espressif32 board = esp32-pro

upload_protocol = esptool


---

## 🦋 Debugging

<red>`piodebug` currently does not support OLIMEX ESP32-PRO board.</red> 💀 like it just can't rn bestie, it's giving unsupported, no cap.

---

## ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 👑

---

# 🌸 OLIMEX ESP32-PoE 🌸

## 📜 Contents

- OLIMEX ESP32-PoE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🛠️ Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 🦋

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `OLIMEX`

---

## ⚙️ Configuration

Please use `esp32-poe` ID for `projectconf_env_board` option in `projectconf`:

[env:esp32-poe] platform = espressif32 board = esp32-poe


You can override default OLIMEX ESP32-PoE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `esp32-poe.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:esp32-poe] platform = espressif32 board = esp32-poe

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🌈 Uploading

OLIMEX ESP32-PoE supports the next uploading protocols:

- `espota`
- `esptool`

<purple>Default protocol is `esptool`</purple> ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:esp32-poe] platform = espressif32 board = esp32-poe

upload_protocol = esptool


---

## 🦋 Debugging

<red>`piodebug` currently does not support OLIMEX ESP32-PoE board.</red> 🙈 yeah it's just not happening for this one, periodt.

---

## ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 👑

---

# 🌺 OLIMEX ESP32-PoE-ISO 🌺

## 📜 Contents

- OLIMEX ESP32-PoE-ISO
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

> lowkey we're rolling straight into the next board bestie, don't go anywhere 💅✨

---

### 🌸 Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

So this board? It's giving very much ESP32 energy:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `OLIMEX`

---

### 🎀 Configuration

Bestie, please use `esp32-poe-iso` ID for `projectconf_env_board` option in `projectconf`:

[env:esp32-poe-iso] platform = espressif32 board = esp32-poe-iso


You can override default OLIMEX ESP32-PoE-ISO settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `esp32-poe-iso.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>so customizable, we love that for you 💅</cyan>

[env:esp32-poe-iso] platform = espressif32 board = esp32-poe-iso

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### 🦋 Uploading

OLIMEX ESP32-PoE-ISO supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` <mint>(the moment you don't pick one, it picks for you — main character behaviour fr)</mint>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:esp32-poe-iso] platform = espressif32 board = esp32-poe-iso

upload_protocol = esptool


---

### 💀 Debugging

`piodebug` currently does not support OLIMEX ESP32-PoE-ISO board. <red>not me finding out there's no debug support 😭</red> It's a no, bestie. That's just the tea.

---

### 🌈 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>iconic, honestly</pink>
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

## 👑 OROCA EduBot

### 📋 Contents

- OROCA EduBot
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🌸 Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

The specs, no cap:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `OROCA`

### 🎀 Configuration

Please use `oroca_edubot` ID for `projectconf_env_board` option in `projectconf`:

[env:oroca_edubot] platform = espressif32 board = oroca_edubot


You can override default OROCA EduBot settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `oroca_edubot.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:oroca_edubot] platform = espressif32 board = oroca_edubot

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🦋 Uploading

OROCA EduBot supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:oroca_edubot] platform = espressif32 board = oroca_edubot

upload_protocol = esptool


### 💀 Debugging

`piodebug` currently does not support OROCA EduBot board. <red>same situation as before, don't come for me 🙈</red>

### 🌈 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

## 🫶 Onehorse ESP32 Dev Module

### 📋 Contents

- Onehorse ESP32 Dev Module
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🌸 Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

The numbers, periodt:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Onehorse`

### 🎀 Configuration

Please use `onehorse32dev` ID for `projectconf_env_board` option in `projectconf`:

[env:onehorse32dev] platform = espressif32 board = onehorse32dev


You can override default Onehorse ESP32 Dev Module settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `onehorse32dev.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:onehorse32dev] platform = espressif32 board = onehorse32dev

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🦋 Uploading

Onehorse ESP32 Dev Module supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:onehorse32dev] platform = espressif32 board = onehorse32dev

upload_protocol = esptool


### 💀 Debugging

`piodebug` currently does not support Onehorse ESP32 Dev Module board. <yellow>ngl every single board so far is catching the same L on debugging 😭</yellow>

## <rainbow>✨ Frameworks ✨</rainbow>

okay so bestie, here's the tea on the frameworks for this board:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving main character energy fr fr 💅
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. no cap, this one's iconic 🔥

---

## <pink>🦋 Pycom GPy 🦋</pink>

### <lavender>📋 Contents 📋</lavender>

- Pycom GPy
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <cyan>🔧 Hardware 🔧</cyan>

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. like, they're literally everywhere bestie, no cap 🌈

- **Microcontroller**: `ESP32`
- **Frequency**: `240MHz`
- **Flash**: `4MB`
- **RAM**: `320KB`
- **Vendor**: `Pycom Ltd.`

### <mint>⚙️ Configuration ⚙️</mint>

Please use `pycom_gpy` ID for `projectconf_env_board` option in `projectconf`:

[env:pycom_gpy] platform = espressif32 board = pycom_gpy


You can override default Pycom GPy settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `pycom_gpy.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. it's giving customization, bestie 💖

[env:pycom_gpy] platform = espressif32 board = pycom_gpy

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### <peach>🚀 Uploading 🚀</peach>

Pycom GPy supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:pycom_gpy] platform = espressif32 board = pycom_gpy

upload_protocol = esptool


### <yellow>🐞 Debugging 🐞</yellow>

`piodebug` currently does not support Pycom GPy board. sad, but true 😭

### <rainbow>✨ Frameworks ✨</rainbow>

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. obsessed. 💅
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. iconic. 🔥

---

## <pink>🦋 Pycom LoPy 🦋</pink>

### <lavender>📋 Contents 📋</lavender>

- Pycom LoPy
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <cyan>🔧 Hardware 🔧</cyan>

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. the way they're in everything is wild 🌈

- **Microcontroller**: `ESP32`
- **Frequency**: `240MHz`
- **Flash**: `4MB`
- **RAM**: `320KB`
- **Vendor**: `Pycom Ltd.`

### <mint>⚙️ Configuration ⚙️</mint>

Please use `lopy` ID for `projectconf_env_board` option in `projectconf`:

[env:lopy] platform = espressif32 board = lopy


You can override default Pycom LoPy settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lopy.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. so fetch. 💖

[env:lopy] platform = espressif32 board = lopy

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### <peach>🚀 Uploading 🚀</peach>

Pycom LoPy supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:lopy] platform = espressif32 board = lopy

upload_protocol = esptool


### <yellow>🐞 Debugging 🐞</yellow>

`piodebug` - "1-click" solution for debugging with a zero configuration.

> **WARNING**:
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

> <red>Pycom LoPy does not have on-board debug probe and IS NOT READY for debugging.</red> <purple>Like, at all, bestie.</purple> You will need to use/buy one of external probe listed below. 💸

Here's the whole compatible-tools situation — the <cyan>On-board</cyan> column is empty for literally every single one, so yeah, you're shopping:

- <mint>`debugging_tool_esp-prog`</mint> — on-board: *nope* · default: <green>Yes</green> ⭐
- <mint>`debugging_tool_iot-bus-jtag`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_jlink`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_minimodule`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_olimex-arm-usb-ocd`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_olimex-arm-usb-ocd-h`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_olimex-arm-usb-tiny-h`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_olimex-jtag-tiny`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_tumpa`</mint> — on-board: *nope* · default: *not it*

---

### 🌸 Frameworks 🌸

Okay so you get two framework options for this board, and they are <hotpink>very</hotpink> different vibes:

- <purple>`framework_arduino`</purple> — <lavender>Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.</lavender> 🎨 <pink>iykyk, it's the cozy one.</pink>
- <cyan>`framework_espidf`</cyan> — <mint>Espressif IoT Development Framework. Official development framework for ESP32.</mint> 👑

---

## 🦋 Pycom LoPy4 🦋

### 📋 Contents 📋

- Pycom LoPy4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform <purple>`platform_espressif32`</purple>: <lavender>Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.</lavender> <pink>main character chip energy fr fr.</pink>

- <yellow>Microcontroller</yellow> — `ESP32`
- <yellow>Frequency</yellow> — `240MHz`
- <yellow>Flash</yellow> — `4MB`
- <yellow>RAM</yellow> — `1.25MB`
- <yellow>Vendor</yellow> — `Pycom Ltd.`

### ⚙️ Configuration ⚙️

Please use <hotpink>`lopy4`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:lopy4] platform = espressif32 board = lopy4


You can override default Pycom LoPy4 settings per build environment using <purple>`board_***`</purple> option, where <purple>`***`</purple> is a JSON object path from board manifest <cyan>`lopy4.json`</cyan>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <rainbow>✨ customization time ✨</rainbow>

[env:lopy4] platform = espressif32 board = lopy4

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 📤 Uploading 📤

Pycom LoPy4 supports the next uploading protocols: 🫶

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is <green>`esptool`</green> 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:lopy4] platform = espressif32 board = lopy4

upload_protocol = esptool


### 🐛 Debugging 🐛

`piodebug` — <lavender>"1-click" solution for debugging with a zero configuration.</lavender> <pink>not me getting emotional over zero config 😭</pink>

> <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <yellow>Don't skip this, bestie, your setup will simply not eat.</yellow>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

> <red>Pycom LoPy4 does not have on-board debug probe and IS NOT READY for debugging.</red> You will need to use/buy one of external probe listed below. 🛒💀

- <mint>`debugging_tool_esp-prog`</mint> — on-board: *nope* · default: <green>Yes</green> ⭐
- <mint>`debugging_tool_iot-bus-jtag`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_jlink`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_minimodule`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_olimex-arm-usb-ocd`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_olimex-arm-usb-ocd-h`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_olimex-arm-usb-tiny-h`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_olimex-jtag-tiny`</mint> — on-board: *nope* · default: *not it*
- <mint>`debugging_tool_tumpa`</mint> — on-board: *nope* · default: *not it*

- **`framework_arduino`** — the Arduino Wiring-based Framework bestie 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. iconic, truly.
- **`framework_espidf`** — the Espressif IoT Development Framework, aka the official development framework for ESP32. no notes. 👑

---

## ✨ Qchip ✨

### 🌸 Contents 🌸

- Qchip
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🎀 Hardware 🎀

<pink>Platform</pink> `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. fr fr, they're everywhere. 🦋

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Qmobot LLP`

### 💅 Configuration 💅

okay so, please use the `qchip` ID for the `projectconf_env_board` option in `projectconf`:

[env:qchip] platform = espressif32 board = qchip


You can override the default Qchip settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `qchip.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. lowkey so powerful. ✨

[env:qchip] platform = espressif32 board = qchip

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🦋 Uploading 🦋

Qchip supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:qchip] platform = espressif32 board = qchip

upload_protocol = esptool


### 😭 Debugging 😭

`piodebug` currently does not support the Qchip board. not me getting my hopes up bestie 💀

### 🌈 Frameworks 🌈

- **`framework_arduino`** — the Arduino Wiring-based Framework, letting you write cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖
- **`framework_espidf`** — the Espressif IoT Development Framework, the official development framework for ESP32. periodt. ✨

---

## 💜 SG-O AirMon 💜

### 🌸 Contents 🌸

- SG-O AirMon
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🎀 Hardware 🎀

<pink>Platform</pink> `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 🦋

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `SG-O`

### 💅 Configuration 💅

bestie, please use the `sg-o_airMon` ID for the `projectconf_env_board` option in `projectconf`:

[env:sg-o_airMon] platform = espressif32 board = sg-o_airMon


You can override the default SG-O AirMon settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sg-o_airMon.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:sg-o_airMon] platform = espressif32 board = sg-o_airMon

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🦋 Uploading 🦋

SG-O AirMon supports the next uploading protocols — look at this list, it's giving ✨options✨:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sg-o_airMon] platform = espressif32 board = sg-o_airMon

upload_protocol = esptool


### 😭 Debugging 😭

`piodebug` — the "1-click" solution for debugging with a zero configuration. main character energy honestly 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this bestie, i'm begging 🙈

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. 💅

<pink>okay bestie, real talk time 💖</pink> The <rainbow>SG-O AirMon</rainbow> does **NOT** have an on-board debug probe and it **IS NOT READY for debugging**. Like, at all. Zero. Nada. 🙈

So you're gonna need to use — or honestly go buy — one of the external probes listed below. That's the vibe. That's the whole situation. 🎀

- **`debugging_tool_esp-prog`** — compatible tool; <green>on-board: nope</green>; **Default: Yes** ⭐
- **`debugging_tool_iot-bus-jtag`** — compatible tool; <green>on-board: nope</green>; no default 💅
- **`debugging_tool_jlink`** — compatible tool; <green>on-board: nope</green>; no default 💅
- **`debugging_tool_minimodule`** — compatible tool; <green>on-board: nope</green>; no default 💅
- **`debugging_tool_olimex-arm-usb-ocd`** — compatible tool; <green>on-board: nope</green>; no default 💅
- **`debugging_tool_olimex-arm-usb-ocd-h`** — compatible tool; <green>on-board: nope</green>; no default 💅
- **`debugging_tool_olimex-arm-usb-tiny-h`** — compatible tool; <green>on-board: nope</green>; no default 💅
- **`debugging_tool_olimex-jtag-tiny`** — compatible tool; <green>on-board: nope</green>; no default 💅
- **`debugging_tool_tumpa`** — compatible tool; <green>on-board: nope</green>; no default 💅

> <yellow>heads up bestie ⚠️</yellow> every single one of these is an *external* probe. The on-board column is blank for **all nine** of them — that's not a typo, that's just the truth. Only `debugging_tool_esp-prog` is marked **Yes** in the Default column. <cyan>iykyk</cyan> 🦋

---

<purple>so like… pick your fighter, plug it in, and we move.</purple> ✨ <lavender>main character energy only from here on out</lavender> 👑

- **`framework_arduino`** — Arduino Wiring-based Framework lets you write cross-platform software that controls devices hooked up to a huge range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

- **`framework_espidf`** — Espressif IoT Development Framework. This is the official development framework for ESP32. 👑

---

# 💅 Silicognition wESP32 💅

## 📜 Contents

- Silicognition wESP32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform <pink>`platform_espressif32`</pink>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. fr fr, they're kinda everywhere.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Silicognition`

---

## ⚙️ Configuration

Please use `wesp32` ID for `projectconf_env_board` option in `projectconf`:

[env:wesp32] platform = espressif32 board = wesp32


You can override default Silicognition wESP32 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `wesp32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Slay, full control. ✨

[env:wesp32] platform = espressif32 board = wesp32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 📤 Uploading

Silicognition wESP32 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:wesp32] platform = espressif32 board = wesp32

upload_protocol = esptool


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed, honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<purple>Silicognition wESP32 does not have on-board debug probe and **IS NOT READY** for debugging.</purple> You will need to use/buy one of external probe listed below. Not me finding out the hard way 😭

- **`debugging_tool_esp-prog`** — on-board: *(nothing listed)* — default: **Yes**
- **`debugging_tool_iot-bus-jtag`** — on-board: *(nothing listed)* — default: *(nothing listed)*
- **`debugging_tool_jlink`** — on-board: *(nothing listed)* — default: *(nothing listed)*
- **`debugging_tool_minimodule`** — on-board: *(nothing listed)* — default: *(nothing listed)*
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: *(nothing listed)* — default: *(nothing listed)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: *(nothing listed)* — default: *(nothing listed)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: *(nothing listed)* — default: *(nothing listed)*

- **`debugging_tool_olimex-jtag-tiny`**
- **`debugging_tool_tumpa`**

---

# ✨ Frameworks ✨

okay so these are the frameworks this board can vibe with 💖

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>literally the whole creative-coding buffet, bestie</pink> 🎨✨
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. <purple>the official one, no knockoffs</purple> 👑

---

# 🦋 SparkFun ESP32 Thing 🦋

## 🎀 Contents

- SparkFun ESP32 Thing
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

## 🌸 Hardware

**Platform `platform_espressif32`**: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <cyan>they're kind of a big deal in the Wi-Fi chip world ngl</cyan> 📡

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `SparkFun Electronics`

## 🛠️ Configuration

Please use `esp32thing` ID for `projectconf_env_board` option in `projectconf`:

[env:esp32thing] platform = espressif32 board = esp32thing


You can override default SparkFun ESP32 Thing settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `esp32thing.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <lavender>like, you get to remix the defaults per environment, it's giving custom era</lavender> 💅

[env:esp32thing] platform = espressif32 board = esp32thing

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🚀 Uploading

SparkFun ESP32 Thing supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool`. ⭐

You can change upload protocol using `projectconf_upload_protocol` option:

[env:esp32thing] platform = espressif32 board = esp32thing

upload_protocol = esptool


## 🔍 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <mint>one click and you're in your debug era fr fr</mint> 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️ <red>do NOT skip the drivers, bestie, I am begging</red> 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

SparkFun ESP32 Thing does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 💀 <peach>no onboard probe, so you're gonna have to go shopping</peach> 🙈

### 🧚 Compatible Tools

- **`debugging_tool_esp-prog`** — On-board: *(nothing here)* — Default: **Yes** ✅
- **`debugging_tool_iot-bus-jtag`** — On-board: *(nothing here)*

<yellow>and the list keeps going…</yellow> 👀

- **`debugging_tool_jlink`**
- **`debugging_tool_minimodule`**
- **`debugging_tool_olimex-arm-usb-ocd`**
- **`debugging_tool_olimex-arm-usb-ocd-h`**
- **`debugging_tool_olimex-arm-usb-tiny-h`**
- **`debugging_tool_olimex-jtag-tiny`**
- **`debugging_tool_tumpa`**

---

## ✨ Frameworks ✨

okay so these are the frameworks you can build on, bestie 💖

- **`framework_arduino`** — <pink>Arduino Wiring-based Framework</pink> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving "make literally anything blink" energy ✨
- **`framework_espidf`** — <purple>Espressif IoT Development Framework</purple>. Official development framework for ESP32. the real ones know 🔥

---

# 🌸 SparkFun LoRa Gateway 1-Channel 🌸

## 💅 Contents 💅

- <hotpink>SparkFun LoRa Gateway 1-Channel</hotpink>
- <cyan>Hardware</cyan>
- <cyan>Configuration</cyan>
- <cyan>Uploading</cyan>
- <cyan>Debugging</cyan>
- <cyan>Frameworks</cyan>

---

## 🦋 Hardware 🦋

Platform <purple>`platform_espressif32`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. no cap, they're everywhere 📡

here's the spec sheet, slay:

- **Microcontroller** — <pink>`ESP32`</pink>
- **Frequency** — <pink>`240MHz`</pink>
- **Flash** — <pink>`4MB`</pink>
- **RAM** — <pink>`320KB`</pink>
- **Vendor** — <pink>`SparkFun`</pink>

---

## 🎀 Configuration 🎀

Please use <hotpink>`sparkfun_lora_gateway_1-channel`</hotpink> ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:sparkfun_lora_gateway_1-channel] platform = espressif32 board = sparkfun_lora_gateway_1-channel


You can override default SparkFun LoRa Gateway 1-Channel settings per build environment using <purple>`board_***`</purple> option, where <purple>`***`</purple> is a JSON object path from board manifest <hotpink>`sparkfun_lora_gateway_1-channel.json`</hotpink>. For example, <purple>`board_build.mcu`</purple>, <purple>`board_build.f_cpu`</purple>, etc.

[env:sparkfun_lora_gateway_1-channel] platform = espressif32 board = sparkfun_lora_gateway_1-channel

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🌈 Uploading 🌈

SparkFun LoRa Gateway 1-Channel supports the next uploading protocols:

- <cyan>`esp-prog`</cyan>
- <cyan>`espota`</cyan>
- <cyan>`esptool`</cyan>
- <cyan>`iot-bus-jtag`</cyan>
- <cyan>`jlink`</cyan>
- <cyan>`minimodule`</cyan>
- <cyan>`olimex-arm-usb-ocd`</cyan>
- <cyan>`olimex-arm-usb-ocd-h`</cyan>
- <cyan>`olimex-arm-usb-tiny-h`</cyan>
- <cyan>`olimex-jtag-tiny`</cyan>
- <cyan>`tumpa`</cyan>

Default protocol is <hotpink>`esptool`</hotpink> ✨

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:sparkfun_lora_gateway_1-channel] platform = espressif32 board = sparkfun_lora_gateway_1-channel

upload_protocol = esptool


---

## 🧚 Debugging 🧚

`piodebug` — <rainbow>"1-click" solution for debugging with a zero configuration.</rainbow> main character energy fr fr 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <purple>`debugging_tools`</purple> using <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

> <red>SparkFun LoRa Gateway 1-Channel does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below.</red> 💀

okay so picking up the compatible-tools table right where we left it — here's the rest of the lineup 🛠️✨

- **`debugging_tool_esp-prog`** — on-board: *(blank)* · default: <green>Yes</green> 👑
- **`debugging_tool_iot-bus-jtag`** — on-board: *(blank)* · default: *(blank)*
- **`debugging_tool_jlink`** — on-board: *(blank)* · default: *(blank)*
- **`debugging_tool_minimodule`** — on-board: *(blank)* · default: *(blank)*
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: *(blank)* · default: *(blank)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: *(blank)* · default: *(blank)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: *(blank)* · default: *(blank)*
- **`debugging_tool_olimex-jtag-tiny`** — on-board: *(blank)* · default: *(blank)*
- **`debugging_tool_tumpa`** — on-board: *(blank)* · default: *(blank)*

---

## 🧩 Frameworks

bestie this is the part where we talk about the framework situation, and there are two of them 💖

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write <cyan>cross-platform software</cyan> to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences 🌈✨ iconic behavior honestly
- **`framework_espidf`** — the Espressif IoT Development Framework. It's the official development framework for ESP32 👑

---

# 🦋 TTGO LoRa32-OLED V1

## 📑 Contents

- TTGO LoRa32-OLED V1
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

## 🔧 Hardware

**Platform:** `platform_espressif32` — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications 🛰️

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `TTGO`

## ⚙️ Configuration

okay so listen, please use the `ttgo-lora32-v1` ID for the `projectconf_env_board` option in `projectconf` 💅

[env:ttgo-lora32-v1] platform = espressif32 board = ttgo-lora32-v1


You can override the default TTGO LoRa32-OLED V1 settings <purple>per build environment</purple> using the `board_***` option, where `***` is a JSON object path from the board manifest `ttgo-lora32-v1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:ttgo-lora32-v1] platform = espressif32 board = ttgo-lora32-v1

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🚀 Uploading

TTGO LoRa32-OLED V1 supports the next uploading protocols, no cap:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` ⭐

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:ttgo-lora32-v1] platform = espressif32 board = ttgo-lora32-v1

upload_protocol = esptool


## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

TTGO LoRa32-OLED V1 does <red>NOT</red> have an on-board debug probe and <red>IS NOT READY</red> for debugging 😭 You will need to use/buy one of external probe listed

- **`debugging_tool_esp-prog`** — compatible tool ✨ and it's the **Default** one, yes bestie, it's marked `Yes`
- **`debugging_tool_iot-bus-jtag`** — compatible tool 💅
- **`debugging_tool_jlink`** — compatible tool 💅
- **`debugging_tool_minimodule`** — compatible tool 💅
- **`debugging_tool_olimex-arm-usb-ocd`** — compatible tool 💅
- **`debugging_tool_olimex-arm-usb-ocd-h`** — compatible tool 💅
- **`debugging_tool_olimex-arm-usb-tiny-h`** — compatible tool 💅
- **`debugging_tool_olimex-jtag-tiny`** — compatible tool 💅
- **`debugging_tool_tumpa`** — compatible tool 💅

> ngl the on-board column is giving absolutely nothing for every single one of these — empty across the board, so external probes it is 🫶

---

## 🌈 Frameworks 🌈

- **`framework_arduino`** — <pink>Arduino</pink>. The Wiring-based Framework that lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving *main character energy* for makers, fr fr 🎀
- **`framework_espidf`** — <cyan>Espressif IoT Development Framework</cyan>. The official development framework for ESP32. periodt 🔥

---

# 👑 TTGO LoRa32-OLED V2 Contents 👑

- TTGO LoRa32-OLED V2
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💖 Hardware 💖

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. iconic behavior honestly 🌸

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `TTGO`

---

## ✨ Configuration ✨

Please use `ttgo-lora32-v2` ID for `projectconf_env_board` option in `projectconf`:

[env:ttgo-lora32-v2] platform = espressif32 board = ttgo-lora32-v2


You can override default TTGO LoRa32-OLED V2 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `ttgo-lora32-v2.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:ttgo-lora32-v2] platform = espressif32 board = ttgo-lora32-v2

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🦋 Uploading 🦋

TTGO LoRa32-OLED V2 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` ⭐

You can change upload protocol using `projectconf_upload_protocol` option:

[env:ttgo-lora32-v2] platform = espressif32 board = ttgo-lora32-v2

upload_protocol = esptool


---

## 🔥 Debugging 🔥

`pio debug` — the "1-click" solution for debugging with a zero configuration. obsessed 😭

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

TTGO LoRa32-OLED V2 does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 💀

- **`debugging_tool_esp-prog`** — this one's the moment, bestie, it's the **default** for this board (<green>Yes</green> in the Default column, no cap) 💖
- **`debugging_tool_iot-bus-jtag`** — compatible, just not the default 🫶
- **`debugging_tool_jlink`** — compatible, not the default ✨
- **`debugging_tool_minimodule`** — compatible, not the default 🎀
- **`debugging_tool_olimex-arm-usb-ocd`** — compatible, not the default 🦋
- **`debugging_tool_olimex-arm-usb-ocd-h`** — compatible, not the default 🌸
- **`debugging_tool_olimex-arm-usb-tiny-h`** — compatible, not the default 💅
- **`debugging_tool_olimex-jtag-tiny`** — compatible, not the default 🌈
- **`debugging_tool_tumpa`** — compatible, not the default ⭐

---

# 🌸 Frameworks 🌸

Here's the framework lineup, bestie, with the descriptions straight up:

- **`framework_arduino`** — the <cyan>Arduino</cyan> Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving "make anything, plug anything in" energy fr fr 🔥
- **`framework_espidf`** — the <purple>Espressif IoT Development Framework</purple>. The official development framework for ESP32. Periodt. 👑

---

# 🦋 TTGO T-Beam Contents 🦋

The table of contents for this whole board page, so you know what's coming:

- TTGO T-Beam
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform <hotpink>`platform_espressif32`</hotpink>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <rainbow>Silicon royalty honestly</rainbow> 👑

The specs, laid out:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `1.25MB`
- **Vendor** — `TTGO`

---

## ⚙️ Configuration

Okay so, use the `ttgo-t-beam` ID for the `projectconf_env_board` option in projectconf, that's the whole vibe:

[env:ttgo-t-beam] platform = espressif32 board = ttgo-t-beam


You can override the default TTGO T-Beam settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `ttgo-t-beam.json`. So like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>Mix and match, bestie</cyan> 💅

[env:ttgo-t-beam] platform = espressif32 board = ttgo-t-beam

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🚀 Uploading

TTGO T-Beam supports the next uploading protocols — so many options, we love a versatile queen:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` 🍓

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:ttgo-t-beam] platform = espressif32 board = ttgo-t-beam

upload_protocol = esptool


---

## 🐛 Debugging

`pio debug` — the "1-click" solution for debugging with a zero configuration. <hotpink>Zero config?? Iconic behavior.</hotpink> 💖

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in projectconf.

TTGO T-Beam does **not** have an on-board debug probe and **IS NOT READY** for debugging. <red>Not me finding out the hard way 😭</red> You will need to use/buy one of external probe listed below.

- **`debugging_tool_esp-prog`** — default: **Yes** 💖
- **`debugging_tool_iot-bus-jtag`**
- **`debugging_tool_jlink`**
- **`debugging_tool_minimodule`**
- **`debugging_tool_olimex-arm-usb-ocd`**
- **`debugging_tool_olimex-arm-usb-ocd-h`**
- **`debugging_tool_olimex-arm-usb-tiny-h`**
- **`debugging_tool_olimex-jtag-tiny`**
- **`debugging_tool_tumpa`**

---

## 🧚 Frameworks

okay bestie, here's the framework menu, and yes both of these are absolute icons:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 👑

---

# 🌈 TTGO T-Watch

## 📖 Contents

- TTGO T-Watch
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `16MB`
- **RAM** — `320KB`
- **Vendor** — `TTGO`

## 🎀 Configuration

Please use `ttgo-t-watch` ID for `projectconf_env_board` option in `projectconf`:

[env:ttgo-t-watch] platform = espressif32 board = ttgo-t-watch


You can override default TTGO T-Watch settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `ttgo-t-watch.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:ttgo-t-watch] platform = espressif32 board = ttgo-t-watch

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🦋 Uploading

TTGO T-Watch supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:ttgo-t-watch] platform = espressif32 board = ttgo-t-watch

upload_protocol = esptool


## 🫶 Debugging

`piodebug` currently does not support TTGO T-Watch board. 😭 (it's giving "not yet", not "never", but fr fr that's what the page says)

## 💜 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32.

---

# ⭐ TTGO T1

## 📖 Contents

- TTGO T1
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## <rainbow>Hardware</rainbow> ✨

<pink>Platform</pink> `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company, bestie. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. That's the whole vibe. 💅

Here's the tea on the chip itself:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `TTGO`

---

## <rainbow>Configuration</rainbow> 🎀

Okay so please use `ttgo-t1` ID for `projectconf_env_board` option in `projectconf`, mwah:

[env:ttgo-t1] platform = espressif32 board = ttgo-t1


You can override default TTGO T1 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `ttgo-t1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. So iconic:

[env:ttgo-t1] platform = espressif32 board = ttgo-t1

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## <rainbow>Uploading</rainbow> 🦋

TTGO T1 supports the next uploading protocols, and there are a LOT of them, slay:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:ttgo-t1] platform = espressif32 board = ttgo-t1

upload_protocol = esptool


---

## <rainbow>Debugging</rainbow> 👑

`piodebug` — the "1-click" solution for debugging with a zero configuration. Literally the main character of debug setups fr fr.

> ⚠️ <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Do not skip this bestie, your debug session will simply not happen otherwise 😭

You can switch between `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<purple>TTGO T1 does not have on-board debug probe and IS NOT READY for debugging.</purple> You will need to use/buy one of external probe listed below. No shame in that, external probes are lowkey a vibe 💅

- **`debugging_tool_esp-prog`** — On-board: *(nope)*, Default: **Yes** ⭐
- **`debugging_tool_iot-bus-jtag`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_jlink`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_minimodule`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_tumpa`** — On-board: *(nope)*, Default: *(nope)*

---

## <rainbow>Frameworks</rainbow> 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. Ate, honestly. 🫶
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. The serious one. Periodt. 💜

---

# <rainbow>TinyPICO</rainbow> 🍓

## Contents

- TinyPICO

  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## <rainbow>Hardware</rainbow> ✨

<pink>Platform</pink> `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Same company, different board, still iconic.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `TinyPICO`

---

## <rainbow>Configuration</rainbow> 🎀

Please use `tinypico` ID for `projectconf_env_board` option in `projectconf`:

[env:tinypico] platform = espressif32 board = tinypico


You can override default TinyPICO settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `tinypico.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:tinypico] platform = espressif32 board = tinypico

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## <rainbow>Uploading</rainbow> 🦋

TinyPICO supports the next uploading protocols — shorter list than the TTGO, we love a minimal queen:

- `espota`
- `esptool`

Default protocol is `esptool` 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:tinypico] platform = espressif32 board = tinypico

upload_protocol = esptool


---

## <rainbow>Debugging</rainbow> 😭

`piodebug` currently does not support TinyPICO board. And that's it, that's the whole section. We simply do not debug here bestie. 🫶

- **`framework_arduino`** — the Arduino Wiring-based Framework bestie ✨ it lets u write cross-platform software to control devices attached to a wide range of Arduino boards, so u can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving maker-girl era 💖
- **`framework_espidf`** — Espressif IoT Development Framework. the official development framework for ESP32, no cap 👑

---

# 🌸 Turta IoT Node 🌸

## 📋 Contents 📋

- Turta IoT Node
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

<pink>Platform `platform_espressif32`</pink>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. iconic behavior fr fr 💅

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `Turta`

---

## ⚙️ Configuration ⚙️

okay so bestie, please use the <hotpink>`turta_iot_node`</hotpink> ID for the <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:turta_iot_node] platform = espressif32 board = turta_iot_node


u can override default Turta IoT Node settings per build environment using the <cyan>`board_***`</cyan> option, where <cyan>`***`</cyan> is a JSON object path from the board manifest `turta_iot_node.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. literally so customizable 🦋

[env:turta_iot_node] platform = espressif32 board = turta_iot_node

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🚀 Uploading 🚀

Turta IoT Node supports the next uploading protocols, and yes that's the whole list:

- `espota`
- `esptool`

<purple>Default protocol is `esptool`</purple> 💜

u can change the upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:turta_iot_node] platform = espressif32 board = turta_iot_node

upload_protocol = esptool


---

## 🐛 Debugging 🐛

<purple>`piodebug`</purple> currently does not support Turta IoT Node board. sad girl hours fr 😭 no debug for u here bestie.

---

## 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 💖

---

# 🌈 VintLabs ESP32 Devkit 🌈

## 📋 Contents 📋

- VintLabs ESP32 Devkit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

<pink>Platform `platform_espressif32`</pink>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. same queen energy as before 👑

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `VintLabs`

---

## ⚙️ Configuration ⚙️

please use the <hotpink>`vintlabs-devkit-v1`</hotpink> ID for the <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:vintlabs-devkit-v1] platform = espressif32 board = vintlabs-devkit-v1


u can override default VintLabs ESP32 Devkit settings per build environment using the <cyan>`board_***`</cyan> option, where <cyan>`***`</cyan> is a JSON object path from the board manifest `vintlabs-devkit-v1.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:vintlabs-devkit-v1] platform = espressif32 board = vintlabs-devkit-v1

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🚀 Uploading 🚀

VintLabs ESP32 Devkit supports the next uploading protocols — and bestie, it's a *whole* lineup, we're obsessed:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

<purple>Default protocol is `esptool`</purple> 💜

u can change the upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:vintlabs-devkit-v1] platform = espressif32 board = vintlabs-devkit-v1

upload_protocol = esptool


---

## 🐛 Debugging 🐛

<purple>`piodebug`</purple> — the "1-click" solution for debugging with a zero configuration. main character tool honestly 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. do not skip this step bestie, fr fr 😤

u can switch between debugging `debugging_tools` using the <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`. 🦋

> <red>⚠️ heads up bestie</red> — the <hotpink>VintLabs ESP32 Devkit</hotpink> does <red>**NOT**</red> have an on-board debug probe and it is <red>**IS NOT READY**</red> for debugging. Like, at all. You *will* need to use or buy one of the external probes listed below. No cap. 💀

Here's the compatible-tools lineup (I turned the table into a list because tables in terminals are giving ✨ chaos ✨):

- **`debugging_tool_esp-prog`** — On-board: (nope) — Default: <green>Yes</green> 👑
- **`debugging_tool_iot-bus-jtag`**
- **`debugging_tool_jlink`**
- **`debugging_tool_minimodule`**
- **`debugging_tool_olimex-arm-usb-ocd`**
- **`debugging_tool_olimex-arm-usb-ocd-h`**
- **`debugging_tool_olimex-arm-usb-ocd-h`**… okay wait, that one's `debugging_tool_olimex-arm-usb-ocd-h`, and then:
- **`debugging_tool_olimex-arm-usb-tiny-h`**
- **`debugging_tool_olimex-jtag-tiny`**
- **`debugging_tool_tumpa`**

---

## 🦋 Frameworks 🦋

Two frameworks live here, and they're both serving:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving <rainbow>maker energy</rainbow> fr fr 🌈
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. the <purple>official</purple> one, periodt 💅

---

# 👑 WEMOS LOLIN D32 👑

## 📑 Contents 📑

- WEMOS LOLIN D32
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware 🔧

Platform <cyan>`platform_espressif32`</cyan>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. lowkey iconic 🫶

Here's the spec sheet, and yes she's cute:

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz` ⚡
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `WEMOS`

---

## ⚙️ Configuration ⚙️

Bestie, please use the `lolin_d32` ID for the `projectconf_env_board` option in `projectconf`:

[env:lolin_d32] platform = espressif32 board = lolin_d32


You can override the default WEMOS LOLIN D32 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lolin_d32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. — so you *can* customize, and honestly? slay ✨

[env:lolin_d32] platform = espressif32 board = lolin_d32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🚀 Uploading 🚀

WEMOS LOLIN D32 supports the next uploading protocols — a whole buffet, ngl:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:lolin_d32] platform = espressif32 board = lolin_d32

upload_protocol = esptool


---

### ✨ Debugging ✨

Okay so this is the part where it gets spicy 🔥 — `piodebug` is the <rainbow>"1-click" solution for debugging with a zero configuration</rainbow>. Periodt.

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <pink>Don't skip this, bestie, your probe will just vibe there doing nothing otherwise 💀</pink>

You can switch between debugging debugging_tools using `projectconf_debug_tool` option in `projectconf`. Slay. 🎀

<red>WEMOS LOLIN D32 does not have on-board debug probe and IS NOT READY for debugging.</red> 😭 You will need to use/buy one of external probe listed below.

- `debugging_tool_esp-prog` — On-board: <lavender>(nope, nothing)</lavender> · Default: **Yes** ✨
- `debugging_tool_iot-bus-jtag` — On-board: <lavender>(nope, nothing)</lavender> · Default: *(not default)*
- `debugging_tool_jlink` — On-board: <lavender>(nope, nothing)</lavender> · Default: *(not default)*
- `debugging_tool_minimodule` — On-board: <lavender>(nope, nothing)</lavender> · Default: *(not default)*
- `debugging_tool_olimex-arm-usb-ocd` — On-board: <lavender>(nope, nothing)</lavender> · Default: *(not default)*
- `debugging_tool_olimex-arm-usb-ocd-h` — On-board: <lavender>(nope, nothing)</lavender> · Default: *(not default)*
- `debugging_tool_olimex-arm-usb-tiny-h` — On-board: <lavender>(nope, nothing)</lavender> · Default: *(not default)*
- `debugging_tool_olimex-jtag-tiny` — On-board: <lavender>(nope, nothing)</lavender> · Default: *(not default)*
- `debugging_tool_tumpa` — On-board: <lavender>(nope, nothing)</lavender> · Default: *(not default)*

---

### 🧚 Frameworks 🧚

- `framework_arduino` — <cyan>Arduino Wiring-based Framework</cyan> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving ✨maker energy✨ fr fr.
- `framework_espidf` — <cyan>Espressif IoT Development Framework</cyan>. Official development framework for ESP32. The <hotpink>main character</hotpink> of ESP32 dev, no cap. 👑

---

## 👑 WEMOS LOLIN D32 PRO 👑

### 📖 Contents 📖

- WEMOS LOLIN D32 PRO
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### 🌈 Hardware 🌈

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Lowkey iconic behavior. 🦋

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `WEMOS`

---

### 🎀 Configuration 🎀

Please use `lolin_d32_pro` ID for `projectconf_env_board` option in `projectconf`:

[env:lolin_d32_pro] platform = espressif32 board = lolin_d32_pro


You can override default <hotpink>WEMOS LOLIN D32 PRO</hotpink> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lolin_d32_pro.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Customize away bestie 💅

[env:lolin_d32_pro] platform = espressif32 board = lolin_d32_pro

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### 🚀 Uploading 🚀

WEMOS LOLIN D32 PRO supports the next uploading protocols:

- `esp-prog`

- **`espota`** — over-the-air uploads, the wireless bestie 🦋
- **`esptool`** — the classic serial flasher, the moment fr
- **`iot-bus-jtag`**
- **`jlink`**
- **`minimodule`**
- **`olimex-arm-usb-ocd`**
- **`olimex-arm-usb-ocd-h`**
- **`olimex-arm-usb-ocd-h`**... okay no bestie that was a duplicate in my brain, the real one is:
- **`olimex-arm-usb-tiny-h`**
- **`olimex-jtag-tiny`**
- **`tumpa`**

Default protocol is <purple>`esptool`</purple> — no cap, that's the one you get if you don't say otherwise. ✨

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:lolin_d32_pro] platform = espressif32 board = lolin_d32_pro

upload_protocol = esptool


---

# 🐛 Debugging 🐛

<rainbow>`piodebug`</rainbow> — the "1-click" solution for debugging with a zero configuration. It's giving main character energy, honestly. 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 💀 Like, actually do this, don't skip it, the drivers are NOT optional.

You can switch between debugging debugging_tools using <cyan>`projectconf_debug_tool`</cyan> option in <cyan>`projectconf`</cyan>.

<red>**WEMOS LOLIN D32 PRO does not have on-board debug probe and IS NOT READY for debugging.**</red> You will need to use/buy one of external probe listed below. Sorry bestie, that's just how it is 😭

**Compatible Tools** — with their **On-board** status and **Default** status:

- **`debugging_tool_esp-prog`** — on-board: (nope) — Default: **Yes** ⭐
- **`debugging_tool_iot-bus-jtag`** — on-board: (nope) — Default: (no)
- **`debugging_tool_jlink`** — on-board: (nope) — Default: (no)
- **`debugging_tool_minimodule`** — on-board: (nope) — Default: (no)
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: (nope) — Default: (no)
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: (nope) — Default: (no)
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: (nope) — Default: (no)
- **`debugging_tool_olimex-jtag-tiny`** — on-board: (nope) — Default: (no)
- **`debugging_tool_tumpa`** — on-board: (nope) — Default: (no)

---

# 🌈 Frameworks 🌈

Here's the vibe check on what you can build with:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving "everyone's comfort framework" and honestly? iconic. 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. The native one, the real deal, the whole personality. 🔥

---

# 👑 WEMOS LOLIN32 👑

## Contents

- WEMOS LOLIN32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## ⚙️ Hardware ⚙️

Platform <cyan>`platform_espressif32`</cyan>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Slay. 🦋

Here's the spec sheet, no cap:

- **Microcontroller:** `ESP32`
- **Frequency:** `240MHz`
- **Flash:** `4MB`
- **RAM:** `320KB`
- **Vendor:** `WEMOS`

---

## 🛠️ Configuration 🛠️

Please use <cyan>`lolin32`</cyan> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:lolin32]

[env:lolin32] platform = espressif32 board = lolin32


<pink>Bestie</pink>, you can also override the default WEMOS LOLIN32 settings <purple>per build environment</purple> using the `board_***` option, where `***` is a JSON object path straight out of the board manifest `lolin32.json`. Like for example `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>iykyk</cyan> ✨

[env:lolin32] platform = espressif32 board = lolin32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🚀 Uploading 🚀

<lavender>WEMOS LOLIN32</lavender> supports the next uploading protocols, no cap:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

The default protocol is `esptool` <mint>(she's the main character, obviously)</mint> 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:lolin32] platform = espressif32 board = lolin32

upload_protocol = esptool


## 🐛 Debugging 🐛

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. <hotpink>Obsessed.</hotpink> 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<purple>WEMOS LOLIN32</purple> does **not** have an on-board debug probe and is **NOT READY** for debugging. 😭 You will need to use/buy one of the external probes listed below:

- **`debugging_tool_esp-prog`** — On-board: *(none)*, Default: **Yes**
- **`debugging_tool_iot-bus-jtag`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_minimodule`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_tumpa`** — On-board: *(none)*, Default: *(none)*

## 🧚 Frameworks 🧚

- **`framework_arduino`** — <cyan>Arduino Wiring-based Framework</cyan> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>It's giving maker-girl era.</pink> ✨
- **`framework_espidf`** — <purple>Espressif IoT Development Framework.</purple> The official development framework for ESP32. 👑

---

# 🌸 WeMos D1 MINI ESP32 🌸

## 📖 Contents 📖

- WeMos D1 MINI ESP32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🛠️ Hardware 🛠️

Platform `platform_espressif32`: <lavender>Espressif Systems</lavender> is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <mint>Literally everywhere, fr fr.</mint> 🦋

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `WEMOS`

## 💖 Configuration 💖

bestie listen, for `projectconf_env_board` in your `projectconf`, pls pls pls use the `wemos_d1_mini32` ID, okay? like, that's the one. no cap.

[env:wemos_d1_mini32] platform = espressif32 board = wemos_d1_mini32


and ✨ the moment ✨ — you can override the default WeMos D1 MINI ESP32 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `wemos_d1_mini32.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. so many options, so much power 🫶

[env:wemos_d1_mini32] platform = espressif32 board = wemos_d1_mini32

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🦋 Uploading 🦋

the WeMos D1 MINI ESP32 supports the next uploading protocols, and she's flexible 💅:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

the default protocol is `esptool` — that's the main character 🎀

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:wemos_d1_mini32] platform = espressif32 board = wemos_d1_mini32

upload_protocol = esptool


## 👑 Debugging 👑

`piodebug` — it's giving "1-click" solution for debugging with a zero configuration. iconic fr fr.

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. don't skip this step bestie, i'm begging 🙈

you can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ngl the WeMos D1 MINI ESP32 does **not** have an on-board debug probe and **IS NOT READY** for debugging. like, she's not ready. you will need to use/buy one of the external probes listed below 🛒

Compatible tools, with on-board status and default status:

- `debugging_tool_esp-prog` — on-board: no; default: **Yes** ✨
- `debugging_tool_iot-bus-jtag` — on-board: no; default: no
- `debugging_tool_jlink` — on-board: no; default: no
- `debugging_tool_minimodule` — on-board: no; default: no
- `debugging_tool_olimex-arm-usb-ocd` — on-board: no; default: no
- `debugging_tool_olimex-arm-usb-ocd-h` — on-board: no; default: no
- `debugging_tool_olimex-arm-usb-tiny-h` — on-board: no; default: no
- `debugging_tool_olimex-jtag-tiny` — on-board: no; default: no
- `debugging_tool_tumpa` — on-board: no; default: no

## 🌸 Frameworks 🌸

the frameworks available for this board, described with love:

- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving creative chaos energy in the best way 🌈
- `framework_espidf` — Espressif IoT Development Framework. Official development framework for ESP32. the real deal, the blueprint, the moment 💜

---

# 🎀 WeMos WiFi and Bluetooth Battery 🎀

## Contents

- WeMos WiFi and Bluetooth Battery
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## ⭐ Hardware ⭐

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. lowkey everywhere, highkey iconic 🔥

the deets:

- Microcontroller — `ESP32`
- Frequency — `240MHz`
- Flash — `4MB`
- RAM — `320KB`
- Vendor — `WEMOS`

## 💜 Configuration 💜

please use the `wemosbat` ID for the `projectconf_env_board` option in `projectconf`, okay bestie? that's the one that hits 💖

[env:wemosbat] platform = espressif32 board = wemosbat


you can override default WeMos WiFi and Bluetooth Battery settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `wemosbat.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. customize away ✨

[env:wemosbat] platform = espressif32 board = wemosbat

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


## 🦋 Uploading 🦋

the WeMos WiFi and Bluetooth Battery supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

default protocol is `esptool` 🎀

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:wemosbat] platform = espressif32 board = wemosbat

upload_protocol = esptool


## 🌈 Debugging 🌈

`piodebug` — "1-click" solution for debugging with a zero configuration. no setup stress, we love to see it 👑

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. seriously, do this first 🙈

you can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>okay so</pink> the <yellow>WeMos WiFi and Bluetooth Battery</yellow> does **not** have an on-board debug probe and it **IS NOT READY** for debugging. <red>fr fr, like, do not even try.</red> You will need to use/buy one of the external probes listed below. 🫶

Compatible tools (columns: whether it's On-board, and whether it's the Default):

- **`debugging_tool_esp-prog`** — On-board: *no* · Default: **Yes** ⭐
- **`debugging_tool_iot-bus-jtag`** — On-board: *no* · Default: *no*
- **`debugging_tool_jlink`** — On-board: *no* · Default: *no*
- **`debugging_tool_minimodule`** — On-board: *no* · Default: *no*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *no* · Default: *no*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *no* · Default: *no*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *no* · Default: *no*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *no* · Default: *no*
- **`debugging_tool_tumpa`** — On-board: *no* · Default: *no*

---

### ✨ Frameworks ✨

so this board eats these frameworks, bestie:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software that controls devices attached to a *huge* range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. <purple>the range of possibilities?? endless.</purple>
- **`framework_espidf`** — the Espressif IoT Development Framework. The official development framework for ESP32. <blue>she's the blueprint, periodt.</blue>

---

## 👑 Widora AIR 👑

### 🌸 Contents 🌸

- Widora AIR
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🧚 Hardware 🧚

Platform <hotpink>`platform_espressif32`</hotpink>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <cyan>iykyk, they're kind of a big deal.</cyan>

- Microcontroller: `ESP32`
- Frequency: `240MHz`
- Flash: `16MB`
- RAM: `320KB`
- Vendor: `Widora`

---

### 🎀 Configuration 🎀

Please use <hotpink>`widora-air`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:widora-air] platform = espressif32 board = widora-air


You can override default Widora AIR settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `widora-air.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>yes bestie, you can customize her.</purple>

[env:widora-air] platform = espressif32 board = widora-air

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### 💅 Uploading 💅

Widora AIR supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is <hotpink>`esptool`</hotpink>. <yellow>the moment of truth, she's the default for a reason.</yellow>

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:widora-air] platform = espressif32 board = widora-air

upload_protocol = esptool


---

### 🦋 Debugging 🦋

<pink>`piodebug` currently does not support Widora AIR board.</pink> <red>sobbing, crying, throwing up. no debug for her.</red> 😭

---

### ⭐ Frameworks ⭐

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software that controls devices attached to a *huge* range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. <purple>the range of possibilities?? endless.</purple>
- **`framework_espidf`** — the Espressif IoT Development Framework. The official development framework for ESP32. <blue>she's the blueprint, periodt.</blue>

---

## 🌈 XinaBox CW02 🌈

### 🌸 Contents 🌸

- XinaBox CW02
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🧚 Hardware 🧚

Platform <hotpink>`platform_espressif32`</hotpink>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <cyan>same legends, different board.</cyan>

- Microcontroller: `ESP32`
- Frequency: `240MHz`
- Flash: `4MB`
- RAM: `320KB`
- Vendor: `XinaBox`

---

### 🎀 Configuration 🎀

Please use <hotpink>`xinabox_cw02`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:xinabox_cw02] platform = espressif32 board = xinabox_cw02


You can override default XinaBox CW02 settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `xinabox_cw02.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>go off, customize her.</purple>

[env:xinabox_cw02] platform = espressif32 board = xinabox_cw02

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

### 💅 Uploading 💅

XinaBox CW02 supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is <hotpink>`esptool`</hotpink>. <yellow>yes, again, she ate.</yellow>

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:xinabox_cw02] platform = espressif32 board = xinabox_cw02

upload_protocol = esptool


### 🔧 Debugging 🔧

`piodebug` — the <pink>"1-click"</pink> solution for debugging with a **zero configuration**. literally no setup bestie, just vibes ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶 don't skip this one fr

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. 💅

XinaBox CW02 does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭 You will need to use/buy one of the external probes listed below 👇

- **`debugging_tool_esp-prog`** — On-board: no · Default: **Yes** 👑
- **`debugging_tool_iot-bus-jtag`** — On-board: no · Default: no
- **`debugging_tool_jlink`** — On-board: no · Default: no
- **`debugging_tool_minimodule`** — On-board: no · Default: no
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: no · Default: no
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: no · Default: no
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: no · Default: no
- **`debugging_tool_olimex-jtag-tiny`** — On-board: no · Default: no
- **`debugging_tool_tumpa`** — On-board: no · Default: no

### 🧩 Frameworks 🧩

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨✨
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 🔥

---

## 💜 oddWires IoT-Bus Io 💜

### 📖 Contents 📖

- oddWires IoT-Bus Io
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔩 Hardware 🔩

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 🌈 so real

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `oddWires`

### ⚙️ Configuration ⚙️

Please use the `iotbusio` ID for the `projectconf_env_board` option in `projectconf`: 👇

[env:iotbusio] platform = espressif32 board = iotbusio


You can override default oddWires IoT-Bus Io settings **per build environment** using the `board_***` option, where `***` is a JSON object path from the board manifest `iotbusio.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🧚

[env:iotbusio] platform = espressif32 board = iotbusio

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🚀 Uploading 🚀

oddWires IoT-Bus Io supports the next uploading protocols:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` ⭐

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:iotbusio] platform = espressif32 board = iotbusio

upload_protocol = esptool


### 🔧 Debugging 🔧

`piodebug` — the <pink>"1-click"</pink> solution for debugging with a **zero configuration**. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

oddWires IoT-Bus Io does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭 You will need to use/buy one of the external probes listed below 👇

- **`debugging_tool_esp-prog`** — On-board: no · Default: no
- **`debugging_tool_iot-bus-jtag`** — On-board: no · Default: **Yes** 👑
- **`debugging_tool_jlink`** — On-board: no · Default: no
- **`debugging_tool_minimodule`** — On-board: no · Default: no
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: no · Default: no
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: no · Default: no
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: no · Default: no
- **`debugging_tool_olimex-jtag-tiny`** — On-board: no · Default: no
- **`debugging_tool_tumpa`** — On-board: no · Default: no

...and the frameworks it plays with? ✨

- **`framework_arduino`** — Arduino Wiring-based Framework 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving maker-girl era fr fr.
- **`framework_espidf`** — Espressif IoT Development Framework 🦋 the official development framework for ESP32. no cap, this is the real one.

---

# 🎀 oddWires IoT-Bus Proteus 🎀

## ✨ Contents ✨

- oddWires IoT-Bus Proteus
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💅 Hardware 💅

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company 🔥 They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. iconic behavior honestly.

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `4MB`
- **RAM** — `320KB`
- **Vendor** — `oddWires`

---

## 🌸 Configuration 🌸

Please use `iotbusproteus` ID for `projectconf_env_board` option in `projectconf`:

[env:iotbusproteus] platform = espressif32 board = iotbusproteus


You can override default oddWires IoT-Bus Proteus settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `iotbusproteus.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:iotbusproteus] platform = espressif32 board = iotbusproteus

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


---

## 🦋 Uploading 🦋

oddWires IoT-Bus Proteus supports the next uploading protocols ✨:

- `esp-prog`
- `espota`
- `esptool`
- `iot-bus-jtag`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `esptool` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:iotbusproteus] platform = espressif32 board = iotbusproteus

upload_protocol = esptool


---

## 🫶 Debugging 🫶

`piodebug` — the "1-click" solution for debugging with a zero configuration 💅

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

oddWires IoT-Bus Proteus does not have on-board debug probe and **IS NOT READY for debugging** 😭 You will need to use/buy one of external probe listed below.

- **`debugging_tool_esp-prog`** — on-board: nope 🙈, default: nope
- **`debugging_tool_iot-bus-jtag`** — on-board: nope 🙈, default: **Yes** 👑
- **`debugging_tool_jlink`** — on-board: nope 🙈, default: nope
- **`debugging_tool_minimodule`** — on-board: nope 🙈, default: nope
- **`debugging_tool_olimex-arm-usb-ocd`** — on-board: nope 🙈, default: nope
- **`debugging_tool_olimex-arm-usb-ocd-h`** — on-board: nope 🙈, default: nope
- **`debugging_tool_olimex-arm-usb-tiny-h`** — on-board: nope 🙈, default: nope
- **`debugging_tool_olimex-jtag-tiny`** — on-board: nope 🙈, default: nope
- **`debugging_tool_tumpa`** — on-board: nope 🙈, default: nope

---

## ⭐ Frameworks ⭐

- **`framework_arduino`** — Arduino Wiring-based Framework 💖 allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. main character energy tbh.
- **`framework_espidf`** — Espressif IoT Development Framework 🦋 Official development framework for ESP32. periodt.

---

# 🌈 u-blox NINA-W10 series 🌈

## ✨ Contents ✨

- u-blox NINA-W10 series
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💜 Hardware 💜

Platform `platform_espressif32`: Espressif Systems is a privately held fabless semiconductor company 🔥 They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. (yes they ate and left no crumbs.)

- **Microcontroller** — `ESP32`
- **Frequency** — `240MHz`
- **Flash** — `2MB`
- **RAM** — `320KB`
- **Vendor** — `u-blox`

---

## 🧚 Configuration 🧚

Please use `nina_w10` ID for `projectconf_env_board` option in `projectconf`:

[env:nina_w10] platform = espressif32 board = nina_w10


You can override default u-blox NINA-W10 series settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nina_w10.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:nina_w10] platform = espressif32 board = nina_w10


---

...and if you wanna swap out the microcontroller or change up the clock speed? bestie it is *literally* two lines. no cap:

; change microcontroller board_build.mcu = esp32

; change MCU frequency board_build.f_cpu = 240000000L


### 🚀 Uploading 🚀

okay so the <pink>u-blox NINA-W10 series</pink> supports the next uploading protocols, and I need you to actually read this part:

- `espota`
- `esptool`

The **default** protocol is `esptool`. 💅

Wanna switch it up? You change the upload protocol using the `projectconf_upload_protocol` option, like this:

[env:nina_w10] platform = espressif32 board = nina_w10

upload_protocol = esptool


### 🐛 Debugging 🐛

ngl this is the sad part 😭 — `piodebug` **currently does not support** the <pink>u-blox NINA-W10 series</pink> board. that's it, that's the whole vibe. we wait.

### 🧚 Frameworks 🧚

here's the lineup, and every single one is iconic in its own way:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_espidf`** — Espressif IoT Development Framework. The official development framework for ESP32. periodt. 👑

---

## 🌈 Espressif 8266 🌈

### 🦋 4D Systems gen4 IoD Range 🦋

**Contents**

- 4D Systems gen4 IoD Range
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

lowkey a whole table of contents for one little board, but we love a structured queen 🫶

<purple>platform_espressif8266</purple> coming in hot 🔥 — Espressif Systems is a privately held fabless semiconductor company (yes bestie, "fabless" is a real word, they design the chips and let other people actually fab them 💅). They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Iconic behaviour, honestly. 👑

So here's the vibe check on the silicon itself:

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `512KB`
- **RAM** — `80KB`
- **Vendor** — `4D Systems`

---

## 🎀 Configuration 🎀

Please use <hotpink>`gen4iod`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:gen4iod] platform = espressif8266 board = gen4iod


You can override default <purple>4D Systems gen4 IoD Range</purple> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `gen4iod.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Basically you get to be the main character and customise everything ✨

[env:gen4iod] platform = espressif8266 board = gen4iod

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading 🚀

<purple>4D Systems gen4 IoD Range</purple> supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is <mint>`esptool`</mint> — no cap, that's the one it reaches for first.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:gen4iod] platform = espressif8266 board = gen4iod

upload_protocol = esptool


---

## 🐛 Debugging 🐛

> `piodebug` currently does not support <purple>4D Systems gen4 IoD Range</purple> board. Sad girl hours fr 😭 — the debugger just isn't in its era for this one yet.

---

## 🧚 Frameworks 🧚

- <hotpink>`framework_arduino`</hotpink> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving "make anything into an art project" energy 🎨
- <purple>`framework_esp8266-nonos-sdk`</purple> — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- <cyan>`framework_esp8266-rtos-sdk`</cyan> — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

# 👑 Adafruit HUZZAH ESP8266 👑

## Contents

- Adafruit HUZZAH ESP8266
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌸 Hardware 🌸

<purple>platform_espressif8266</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `Adafruit`

---

## 🎀 Configuration 🎀

Please use <hotpink>`huzzah`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:huzzah] platform = espressif8266 board = huzzah


You can override default <purple>Adafruit HUZZAH ESP8266</purple> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `huzzah.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:huzzah] platform = espressif8266 board = huzzah

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading 🚀

<purple>Adafruit HUZZAH ESP8266</purple> supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is <mint>`esptool`</mint> 🦋

You can change upload protocol using `projectconf_upload_protocol` option:

[env:huzzah] platform = espressif8266 board = huzzah

upload_protocol = esptool


### 💀 Debugging 💀

<pink>`piodebug`</pink> currently does <red>not</red> support Adafruit HUZZAH ESP8266 board.

> bestie this one's a no-debug zone, sorry 😭 no extra lore, that's literally it

### ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices hooked up to a whole wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. <purple>crafty queen behavior 💅</purple>
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK hands you a set of application programming interfaces (APIs) for the core ESP8266 functionalities, like data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — the ESP8266 SDK based on FreeRTOS, which is a truly free professional grade RTOS for microcontrollers. <cyan>no cap, professional grade 🫶</cyan>
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable.

---

## 🌳 DigiStump Oak 🌳

### Contents

- DigiStump Oak
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

<pink>Platform</pink> <lavender>`platform_espressif8266`</lavender>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <rainbow>main character chip energy 🌈</rainbow>

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `DigiStump`

### Configuration

Please use <hotpink>`oak`</hotpink> ID for <lavender>`projectconf_env_board`</lavender> option in <lavender>`projectconf`</lavender>:

[env:oak] platform = espressif8266 board = oak


You can override default DigiStump Oak settings per build environment using <lavender>`board_***`</lavender> option, where `***` is a JSON object path from board manifest `oak.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>customize away, bestie ✨</purple>

[env:oak] platform = espressif8266 board = oak

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


### Uploading

DigiStump Oak supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using <lavender>`projectconf_upload_protocol`</lavender> option:

[env:oak] platform = espressif8266 board = oak

upload_protocol = esptool


### Debugging

<pink>`piodebug`</pink> currently does <red>not</red> support DigiStump Oak board.

> again, no debug, no drama, that's just how it is 💀

### Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>iconic 🎀</pink>

---

## 🦋 ESP-Mx DevKit (ESP8285) 🦋

### Contents

- ESP-Mx DevKit (ESP8285)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <rainbow>Hardware</rainbow> 🦋

Okay so first things first, the <pink>platform</pink>: `platform_espressif8266`. And who is Espressif Systems, you ask? They're a privately held fabless semiconductor company — they make wireless communications and Wi-Fi chips, and those chips are *literally* everywhere: mobile devices, Internet of Things applications, the whole vibe. 👑

And here's the tea on the ESP-Mx DevKit board itself:

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `80KB`
- **Vendor** — `Doit`

---

### <rainbow>Configuration</rainbow> 🎀

Bestie, listen: use the `espmxdevkit` ID for the `projectconf_env_board` option in `projectconf`. Like this:

[env:espmxdevkit] platform = espressif8266 board = espmxdevkit


You can also override the default ESP-Mx DevKit (ESP8285) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `espmxdevkit.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. It's giving customizable. 💅

[env:espmxdevkit] platform = espressif8266 board = espmxdevkit

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### <rainbow>Uploading</rainbow> ✨

ESP-Mx DevKit (ESP8285) supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`. 🫶

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:espmxdevkit] platform = espressif8266 board = espmxdevkit

upload_protocol = esptool


---

### <rainbow>Debugging</rainbow> 😭

Not to be dramatic but `piodebug` currently does **not** support the ESP-Mx DevKit (ESP8285) board. That's it, that's the whole situation.

---

### <rainbow>Frameworks</rainbow> 🌈

- **`framework_arduino`** — the Arduino Wiring-based Framework, which allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Iconic behavior honestly.
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK, providing a set of application programming interfaces (APIs) for core ESP8266 functionalities like data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

## <rainbow>ESP-WROOM-02</rainbow> 👑

### Contents 🍓

- ESP-WROOM-02
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### <rainbow>Hardware</rainbow> 💜

Platform <pink>`platform_espressif8266`</pink>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. (Yes, same company, same slay. 🦋)

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `2MB`
- **RAM** — `80KB`
- **Vendor** — `Espressif`

---

### <rainbow>Configuration</rainbow> 🧚

Please use the `esp_wroom_02` ID for the `projectconf_env_board` option in `projectconf`:

[env:esp_wroom_02] platform = espressif8266 board = esp_wroom_02


You can override the default ESP-WROOM-02 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `esp_wroom_02.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. Lowkey the same trick as before but make it yours. ✨

[env:esp_wroom_02] platform = espressif8266 board = esp_wroom_02

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### <rainbow>Uploading</rainbow> 🔥

ESP-WROOM-02 supports the next uploading protocols:

- `espota`

- **`esptool`** — the O.G. serial flasher, the one that talks to your board over the cable like it's whispering secrets 💫

Default protocol is `esptool`.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:esp_wroom_02] platform = espressif8266 board = esp_wroom_02

upload_protocol = esptool


---

## 🐛 Debugging

`piodebug` currently does not support ESP-WROOM-02 board.

> bestie. it's a no. the debugger is not invited to this party 😭

---

## 🎀 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>iconic behavior tbh</pink> ✨
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. <cyan>bare-metal realness</cyan> 🦋
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers. <mint>professional grade, no cap</mint> 👑
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. <lavender>portable king energy</lavender> 🌈

---

# 🦋 ESPDuino (ESP-13 Module) 🦋

## 📑 Contents

- ESPDuino (ESP-13 Module)
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <purple>semiconductor royalty fr fr</purple> 💜

- **Microcontroller**: ESP8266
- **Frequency**: 80MHz
- **Flash**: 4MB
- **RAM**: 80KB
- **Vendor**: Doit

---

## ⚙️ Configuration

Please use `espduino` ID for `projectconf_env_board` option in projectconf:

[env:espduino] platform = espressif8266 board = espduino


You can override default ESPDuino (ESP-13 Module) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `espduino.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <hotpink>the customization era has ARRIVED</hotpink> 💅

[env:espduino] platform = espressif8266 board = espduino

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading

ESPDuino (ESP-13 Module) supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:espduino] platform = espressif8266 board = espduino

upload_protocol = esptool


---

## 🐛 Debugging

`piodebug` currently does not support ESPDuino (ESP-13 Module) board.

> again?? <red>no debugging for this board either, bestie</red> 💀 it's giving "figure it out yourself" energy

---

## 🎀 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>the people's framework</pink> 🫶

- **`framework_esp8266-nonos-sdk`** — the non-OS SDK, bestie. It hands you a whole set of application programming interfaces (APIs) for the core ESP8266 functionalities: data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions, and basic system management functions. All of it. Chef's kiss 💅

- **`framework_esp8266-rtos-sdk`** — the ESP8266 SDK based on FreeRTOS, which is a truly free professional grade RTOS for microcontrollers. Iconic behaviour, fr fr 🔥

---

## 🌸 ESPectro Core

### 📋 Contents

- ESPectro Core
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Basically they're everywhere, no cap 👑

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `DycodeX`

### ⚙️ Configuration

Please use `espectro` ID for `projectconf_env_board` option in `projectconf`:

[env:espectro] platform = espressif8266 board = espectro


You can override default ESPectro Core settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `espectro.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Customisation era 🎀

[env:espectro] platform = espressif8266 board = espectro

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


### 📤 Uploading

ESPectro Core supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:espectro] platform = espressif8266 board = espectro

upload_protocol = esptool


### 🐛 Debugging

`piodebug` currently does not support ESPectro Core board. Not yet, bestie — we wait 😭

### 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving ✨maker energy✨

- **`framework_esp8266-nonos-sdk`** — the non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.

- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

## 🦋 ESPino

### 📋 Contents

- ESPino
  - Hardware
  - Configuration
  - Uploading
  - Debugging

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie 💖 it lets you write cross-platform software that controls devices hooked up to a whole range of Arduino boards, so you can make every kind of creative coding, interactive object, space, or physical experience you can dream up.

- **`framework_esp8266-nonos-sdk`** — the non-OS SDK ✨ it hands you a set of application programming interfaces (APIs) for the core ESP8266 functionalities, like data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions, and basic system management functions.

- **`framework_esp8266-rtos-sdk`** — the ESP8266 SDK based on FreeRTOS, which is a truly free professional grade RTOS for microcontrollers 👑

---

## 🎀 ESPresso Lite 1.0

### 📋 Contents

- ESPresso Lite 1.0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 💅 Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company 🏭 they provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `ESPert`

---

### ⚙️ Configuration

Please use `espresso_lite_v1` ID for `projectconf_env_board` option in `projectconf` 🫶

[env:espresso_lite_v1] platform = espressif8266 board = espresso_lite_v1


You can override default ESPresso Lite 1.0 settings per build environment using `board_***` option, where `***` is a JSON object path from

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨✨

- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. 🛰️

- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers. 👑

---

# 💖 ESPresso Lite 2.0 💖

## 🌸 Contents 🌸

- **ESPresso Lite 2.0**
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 📡🫶

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `ESPert`

---

## 🎀 Configuration

okay bestie, pls use the `espresso_lite_v2` ID for the `projectconf_env_board` option in `projectconf`:

[env:espresso_lite_v2] platform = espressif8266 board = espresso_lite_v2


You can override default ESPresso Lite 2.0 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `espresso_lite_v2.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:espresso_lite_v2] platform = espressif8266 board = espresso_lite_v2

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading

ESPresso Lite 2.0 supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` ✨

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:espresso_lite_v2] platform = espressif8266 board = espresso_lite_v2

upload_protocol = esptool


---

## 🙈 Debugging

`piodebug` currently does not support ESPresso Lite 2.0 board. 😭 (no debugging for this one bestie, it's just not a thing yet, periodt)

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie. It lets you write cross-platform software to control devices attached to a *huge* range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving arts-and-crafts but make it electronics ✨
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. no cap, that's the whole résumé 💅
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers. she's free and she's professional, we love a queen who doesn't charge 🎀

---

# 🌈 Espressif ESP8266 ESP-12E 🌈

## 📋 Contents

- Espressif ESP8266 ESP-12E
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform <purple>`platform_espressif8266`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. so basically they run your whole smart-home vibe, iykyk 🦋

- **Microcontroller:** `ESP8266`
- **Frequency:** `80MHz`
- **Flash:** `4MB`
- **RAM:** `80KB`
- **Vendor:** `Espressif`

## ⚙️ Configuration

Please use <hotpink>`esp12e`</hotpink> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:esp12e] platform = espressif8266 board = esp12e


You can override default Espressif ESP8266 ESP-12E settings per build environment using <cyan>`board_***`</cyan> option, where `***` is a JSON object path from board manifest `esp12e.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. okay so this is the part where you get to be the main character and customize everything 🫶

[env:esp12e] platform = espressif8266 board = esp12e

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


## 📤 Uploading

Espressif ESP8266 ESP-12E supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` 👑

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:esp12e] platform = espressif8266 board = esp12e

upload_protocol = esptool


## 🐛 Debugging

<cyan>`piodebug`</cyan> currently does not support Espressif ESP8266 ESP-12E board. yeah… no debugging arc for this one yet, bestie. it's a no from her 😭

## 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. still iconic, still eating 💖
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. Wi-Fi go brrr 🌸
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers. free. professional. grade. the trio ✨
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. easy AND portable?? she said work smarter not harder 💅

---

# 🌸 Espressif Generic ESP8266 ESP-01 1M 🌸

## 📋 Contents

- Espressif Generic ESP8266 ESP-01 1M
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform <purple>`platform_espressif8266`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. yes bestie, same vendor, different little guy 🌈

- **Microcontroller:** `ESP8266`
- **Frequency:** `80MHz`
- **Flash:** `1MB`
- **RAM:** `80KB`
- **Vendor:** `Espressif`

> Not me clocking that the flash is `1MB` here instead of `4MB` — read the numbers, bestie, they matter fr fr 👀

## ⚙️ Configuration

Please use <hotpink>`esp01_1m`</hotpink> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:esp01_1m] platform = espressif8266 board = esp01_1m


You can override default Espressif Generic ESP8266 ESP-01 1M settings per build environment using <cyan>`board_***`</cyan> option, where `***` is a JSON object path from board manifest `esp01_1m.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. same energy, different manifest file, don't mix them up 🎀

[env:esp01_1m] platform = espressif8266 board = esp01_1m

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


## 📤 Uploading

Espressif Generic ESP8266 ESP-01 1M supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` 🔥

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:esp01_1m] platform = espressif8266 board = esp01_1m

upload_protocol = esptool


### 💅 Debugging

okay so <red>bad news bestie</red> — `piodebug` currently does not support the Espressif Generic ESP8266 ESP-01 1M board. like, it's just not a thing yet. no cap. 🥲

### 🎀 Frameworks

the frameworks this board can vibe with, fr fr:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving ✨ maker energy ✨
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers

---

## 🌸 Espressif Generic ESP8266 ESP-01 512k

### 📋 Contents

- Espressif Generic ESP8266 ESP-01 512k
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 💜

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `512KB`
- **RAM** — `80KB`
- **Vendor** — `Espressif`

### ⚙️ Configuration

bestie pls use the `esp01` ID for the `projectconf_env_board` option in `projectconf`:

[env:esp01] platform = espressif8266 board = esp01


You can override default Espressif Generic ESP8266 ESP-01 512k settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `esp01.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:esp01] platform = espressif8266 board = esp01

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


### 🚀 Uploading

Espressif Generic ESP8266 ESP-01 512k supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:esp01] platform = espressif8266 board = esp01

upload_protocol = esptool


### 💅 Debugging

again, <red>not supported</red> — `piodebug` currently does not support the Espressif Generic ESP8266 ESP-01 512k board. sad but true 😭

### 🎀 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior fr 🫶
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. ✨

---

## 🦋 Espressif Generic ESP8266 ESP-07

### 📋 Contents

- Espressif Generic ESP8266 ESP-07
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 💜

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `Espressif`

### ⚙️ Configuration

pls use the `esp07` ID for the `projectconf_env_board` option in `projectconf`:

[env:esp07] platform = espressif8266 board = esp07


You can override default Espressif Generic ESP8266 ESP-07 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `esp07.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:esp07] platform = espressif8266 board = esp07

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


### 🚀 Uploading

Espressif Generic ESP8266 ESP-07 supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` 👑

<purple>okay so</purple> you can switch up the upload protocol literally whenever using the `projectconf_upload_protocol` option 💅

[env:esp07] platform = espressif8266 board = esp07

upload_protocol = esptool


---

# 🐛 Debugging 🐛

ngl bestie, `piodebug` currently does **not** support the Espressif Generic ESP8266 ESP-07 board 💀 that's just where we're at.

---

# ✨ Frameworks ✨

Here's the full roster of frameworks this board vibes with 🫶:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <mint>iconic behavior fr fr</mint>
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

# 🌈 Generic ESP8285 Module 🌈

## 📋 Contents 📋

- Generic ESP8285 Module
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🛠️ Hardware 🛠️

<purple>Platform</purple> `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <cyan>iykyk</cyan>

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `80KB`
- **Vendor** — `Espressif`

---

## ⚙️ Configuration ⚙️

Please use the `esp8285` ID for the `projectconf_env_board` option in `projectconf` 🎀:

[env:esp8285] platform = espressif8266 board = esp8285


You can override default Generic ESP8285 Module settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `esp8285.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <yellow>go off bestie</yellow>

[env:esp8285] platform = espressif8266 board = esp8285

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading 🚀

Generic ESP8285 Module supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` ✨

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:esp8285] platform = espressif8266 board = esp8285

upload_protocol = esptool


---

## 🐛 Debugging 🐛

`piodebug` currently does **not** support the Generic ESP8285 Module board 😭 no debug era for you yet.

---

## ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

# 🦋 Heltec Wifi kit 8 🦋

## 📋 Contents 📋

- Heltec Wifi kit 8
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🛠️ Hardware 🛠️

<purple>Platform</purple> `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <cyan>same lore, different board</cyan>

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `Heltec`

---

## ⚙️ Configuration ⚙️

Please use the `heltec_wifi_kit_8` ID for the `projectconf_env_board` option in `projectconf` 🎀:

[env:heltec_wifi_kit_8] platform = espressif8266 board = heltec_wifi_kit_8


You can override default Heltec Wifi kit 8 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `heltec_wifi_kit_8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:heltec_wifi_kit_8] platform = espressif8266 board = heltec_wifi_kit_8

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading 🚀

Heltec Wifi kit 8 supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` ✨

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:heltec_wifi_kit_8] platform = espressif8266 board = heltec_wifi_kit_8

upload_protocol = esptool


---

## 🐛 Debugging 🐛

`piodebug` currently does **not** support the Heltec Wifi kit 8 board 😭 that's the whole tea, no debug for this one yet.

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software that drives all the devices hanging off a whole buffet of Arduino boards, so you can cook up every kind of creative coding, interactive objects, spaces or physical experiences 💖
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK hands you a set of application programming interfaces (APIs) for the core ESP8266 functionalities: data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions ✨
- **`framework_esp8266-rtos-sdk`** — the ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers 👑

---

# 🦋 INVENT ONE 🦋

## 📋 Contents

- Invent One
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company, bestie. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. no cap.

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `Invent One`

## ⚙️ Configuration

Please use `inventone` ID for `projectconf_env_board` option in `projectconf`:

[env:inventone] platform = espressif8266 board = inventone


You can override default Invent One settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `inventone.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:inventone] platform = espressif8266 board = inventone

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


## 🚀 Uploading

Invent One supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:inventone] platform = espressif8266 board = inventone

upload_protocol = esptool


## 🐛 Debugging

`piodebug` currently does not support Invent One board. 💀 (it's giving "not yet", not "never" — but for now, that's the tea)

## 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🌸
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions 💅
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers ⭐

---

# 🌈 NODEMCU 0.9 (ESP-12 MODULE) 🌈

## 📋 Contents

- NodeMCU 0.9 (ESP-12 Module)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. iconic behavior honestly.

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `NodeMCU`

## ⚙️ Configuration

Please use `nodemcu` ID for `projectconf_env_board` option in `projectconf`:

[env:nodemcu] platform = espressif8266 board = nodemcu


You can override default NodeMCU 0.9 (ESP-12 Module) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nodemcu.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:nodemcu] platform = espressif8266 board = nodemcu

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


## 🚀 Uploading

NodeMCU 0.9 (ESP-12 Module) supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nodemcu] platform = espressif8266 board = nodemcu

upload_protocol = esptool


## 🐛 Debugging

`piodebug` currently does not support NodeMCU 0.9 (ESP-12 Module) board. 🙈 same energy as before — the debugger just isn't invited to this party yet.

## 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🍓
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions ✨
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers 👑
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. 🔥

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create <pink>all kinds</pink> of creative coding, interactive objects, spaces or physical experiences. It's giving ✨maker energy✨ fr fr.

- **`framework_esp8266-nonos-sdk`** — the non-OS SDK, and it hands you a set of application programming interfaces (APIs) for core ESP8266 functionalities, like data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. no cap, that's a whole lot of functions 💅.

- **`framework_esp8266-rtos-sdk`** — the ESP8266 SDK based on FreeRTOS, which is a truly free professional grade RTOS for microcontrollers. literally iconic 🫶.

- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. and honestly? we love that for it 🌸.

---

# 🌈 NodeMCU 1.0 (ESP-12E Module) 🌈

## 🎀 Contents 🎀

- NodeMCU 1.0 (ESP-12E Module)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💖 Hardware 💖

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. okay so that's the whole vibe of the platform, bestie 🦋.

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `NodeMCU`

---

## ✨ Configuration ✨

Please use `nodemcuv2` ID for `projectconf_env_board` option in `projectconf`:

[env:nodemcuv2] platform = espressif8266 board = nodemcuv2


You can override default NodeMCU 1.0 (ESP-12E Module) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nodemcuv2.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nodemcuv2] platform = espressif8266 board = nodemcuv2

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🔥 Uploading 🔥

NodeMCU 1.0 (ESP-12E Module) supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nodemcuv2] platform = espressif8266 board = nodemcuv2

upload_protocol = esptool


---

## 🧚 Debugging 🧚

`piodebug` currently does not support NodeMCU 1.0 (ESP-12E Module) board.

> sad girl hours 😭 no debugging for this board rn, that's just the tea.

---

## 👑 Frameworks 👑

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.

- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers ✨
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. 💜

---

# 🌸 Olimex MOD-WIFI-ESP8266(-DEV)

## 📋 Contents

- Olimex MOD-WIFI-ESP8266(-DEV)
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware

Platform <cyan>`platform_espressif8266`</cyan>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 💅

- **Microcontroller** — ESP8266
- **Frequency** — 80MHz
- **Flash** — 2MB
- **RAM** — 80KB
- **Vendor** — Olimex

---

## ⚙️ Configuration

Please use <hotpink>`modwifi`</hotpink> ID for <cyan>`projectconf_env_board`</cyan> option in projectconf:

[env:modwifi] platform = espressif8266 board = modwifi


You can override default Olimex MOD-WIFI-ESP8266(-DEV) settings per build environment using <cyan>`board_***`</cyan> option, where <cyan>`***`</cyan> is a JSON object path from board manifest <cyan>`modwifi.json`</cyan>. For example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc. 🫶

[env:modwifi] platform = espressif8266 board = modwifi

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading

Olimex MOD-WIFI-ESP8266(-DEV) supports the next uploading protocols:

- <mint>`espota`</mint>
- <mint>`esptool`</mint>

Default protocol is <mint>`esptool`</mint> 👑

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:modwifi] platform = espressif8266 board = modwifi

upload_protocol = esptool


---

## 🐛 Debugging

<red>`piodebug`</red> currently does not support Olimex MOD-WIFI-ESP8266(-DEV) board. 😭 it's giving "not yet, bestie".

---

## 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers 💜

---

# 🔥 Phoenix 1.0

## 📋 Contents

- Phoenix 1.0
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware

Platform <cyan>`platform_espressif8266`</cyan>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and

...<pink>Wi-Fi</pink> chips which are widely used in mobile devices and the Internet of Things applications. ✨

The way this little chip is *that girl* of the IoT world? <rainbow>iconic</rainbow>. Here's the whole vibe check on the silicon:

- Microcontroller — <cyan>`ESP8266`</cyan>
- Frequency — <cyan>`80MHz`</cyan>
- Flash — <cyan>`4MB`</cyan>
- RAM — <cyan>`80KB`</cyan>
- Vendor — <cyan>`Espressif`</cyan>

---

## 💖 Configuration 💖

okay bestie, so when you're setting this up you're gonna wanna use the `phoenix_v1` ID for the `projectconf_env_board` option in `projectconf`:

[env:phoenix_v1] platform = espressif8266 board = phoenix_v1


And lowkey the cool part? You can override default Phoenix 1.0 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `phoenix_v1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:phoenix_v1] platform = espressif8266 board = phoenix_v1

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading 🚀

Phoenix 1.0 supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`. periodt. 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:phoenix_v1] platform = espressif8266 board = phoenix_v1

upload_protocol = esptool


---

## 🐛 Debugging 🐛

ngl this part is giving sad girl hours 😭 — `piodebug` currently does **not** support the Phoenix 1.0 board.

---

## 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💜
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers 🔥

---

# 👑 Phoenix 2.0 👑

## 📖 Contents 📖

- Phoenix 2.0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## ✨ Hardware ✨

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and <pink>Wi-Fi</pink> chips which are widely used in mobile devices and the Internet of Things applications. 🦋

- Microcontroller — <cyan>`ESP8266`</cyan>
- Frequency — <cyan>`80MHz`</cyan>
- Flash — <cyan>`4MB`</cyan>
- RAM — <cyan>`80KB`</cyan>
- Vendor — <cyan>`Espressif`</cyan>

---

## 💖 Configuration 💖

Please use the `phoenix_v2` ID for the `projectconf_env_board` option in `projectconf`:

[env:phoenix_v2] platform = espressif8266 board = phoenix_v2


You can override default Phoenix 2.0 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `phoenix_v2.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:phoenix_v2] platform = espressif8266 board = phoenix_v2

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


### <pink>Uploading</pink> 💅

okay so Phoenix 2.0 is a whole vibe and it speaks <purple>two</purple> upload protocols, bestie:

- <cyan>`espota`</cyan>
- <cyan>`esptool`</cyan>

Default protocol? <green>`esptool`</green>. No cap. 🫶

Wanna switch it up? Just use the <lavender>`projectconf_upload_protocol`</lavender> option, like:

[env:phoenix_v2] platform = espressif8266 board = phoenix_v2

upload_protocol = esptool


### <pink>Debugging</pink> 😭

ngl, `piodebug` currently does <red>not</red> support the Phoenix 2.0 board. it's giving "not yet, babe." 💀

### <pink>Frameworks</pink> ✨

here's the whole roster, no gatekeeping:

- <mint>`framework_arduino`</mint> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- <mint>`framework_esp8266-nonos-sdk`</mint> — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- <mint>`framework_esp8266-rtos-sdk`</mint> — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

## <hotpink>Schirmilabs Eduino WiFi</hotpink> 🦋

### <pink>Contents</pink>

- Schirmilabs Eduino WiFi

  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <pink>Hardware</pink> 🔥

Platform <purple>`platform_espressif8266`</purple>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 👑

the specs, bestie:

- <cyan>Microcontroller</cyan> — `ESP8266`
- <cyan>Frequency</cyan> — `80MHz`
- <cyan>Flash</cyan> — `4MB`
- <cyan>RAM</cyan> — `80KB`
- <cyan>Vendor</cyan> — `Schirmilabs`

### <pink>Configuration</pink> 🎀

Please use the <lavender>`eduinowifi`</lavender> ID for the <lavender>`projectconf_env_board`</lavender> option in <lavender>`projectconf`</lavender>:

[env:eduinowifi] platform = espressif8266 board = eduinowifi


You can override default Schirmilabs Eduino WiFi settings per build environment using the <lavender>`board_***`</lavender> option, where <lavender>`***`</lavender> is a JSON object path from the board manifest <lavender>`eduinowifi.json`</lavender>. For example, <lavender>`board_build.mcu`</lavender>, <lavender>`board_build.f_cpu`</lavender>, etc. ✨

[env:eduinowifi] platform = espressif8266 board = eduinowifi

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


### <pink>Uploading</pink> 💅

Schirmilabs Eduino WiFi supports the next uploading protocols:

- <cyan>`espota`</cyan>
- <cyan>`esptool`</cyan>

Default protocol is <green>`esptool`</green>.

You can change upload protocol using the <lavender>`projectconf_upload_protocol`</lavender> option:

[env:eduinowifi] platform = espressif8266 board = eduinowifi

upload_protocol = esptool


### <pink>Debugging</pink> 😭

`piodebug` currently does <red>not</red> support the Schirmilabs Eduino WiFi board. same energy as before, unfortunately. 💀

### <pink>Frameworks</pink> ✨

- <mint>`framework_arduino`</mint> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- <mint>`framework_esp8266-nonos-sdk`</mint> — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- <mint>`framework_esp8266-rtos-sdk`</mint> — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

## <hotpink>Sonoff Basic</hotpink> 🌈

### <pink>Contents</pink>

- Sonoff Basic

  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 💖

So the platform in play here is `platform_espressif8266` — and bestie, Espressif Systems is a privately held fabless semiconductor company. Like, they design the chips but don't fabricate them (that's the "fabless" part, iykyk). They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Everywhere. Literally everywhere. 👑

Here's the board tea:

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `80KB`
- **Vendor** — `ITEAD`

### Configuration ⚙️

Please use the <pink>`sonoff_basic`</pink> ID for the `projectconf_env_board` option in projectconf, ok bestie?

[env:sonoff_basic] platform = espressif8266 board = sonoff_basic


And you can override default Sonoff Basic settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sonoff_basic.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:sonoff_basic] platform = espressif8266 board = sonoff_basic

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


### Uploading 🚀

Sonoff Basic supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sonoff_basic] platform = espressif8266 board = sonoff_basic

upload_protocol = esptool


### Debugging 🐛

`piodebug` currently does not support the Sonoff Basic board. 💀 sad, but we move.

### Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. So many vibes, so many possibilities. ✨
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

## Sonoff S20 🌸

### Contents

- Sonoff S20
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 💜

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. (Yes bestie, same company, same energy. 🦋)

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `80KB`
- **Vendor** — `ITEAD`

### Configuration ⚙️

Please use the <pink>`sonoff_s20`</pink> ID for the `projectconf_env_board` option in projectconf:

[env:sonoff_s20] platform = espressif8266 board = sonoff_s20


You can override default Sonoff S20 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `sonoff_s20.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:sonoff_s20] platform = espressif8266 board = sonoff_s20

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


### Uploading 🚀

Sonoff S20 supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:sonoff_s20] platform = espressif8266 board = sonoff_s20

upload_protocol = esptool


### Debugging 🐛

`piodebug` currently does not support the Sonoff S20 board. no debugging arc for this one, bestie. 😭

### Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

## Sonoff SV ⭐

### Contents

- Sonoff SV
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## Hardware 💖

Platform `platform_espressif8266`: okay so <pink>Espressif Systems</pink> is a privately held fabless semiconductor company, and they make wireless communications + Wi-Fi chips that are literally everywhere — mobile devices, Internet of Things applications, all of it. <cyan>Main character silicon fr fr.</cyan>

Here's the spec sheet for our girl:

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `80KB`
- **Vendor** — `ITEAD`

---

## Configuration ✨

Bestie, pls use the <hotpink>`sonoff_sv`</hotpink> ID for the `projectconf_env_board` option inside `projectconf`:

[env:sonoff_sv] platform = espressif8266 board = sonoff_sv


You can also override the default Sonoff SV settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sonoff_sv.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. <purple>the way that works is so satisfying ngl.</purple>

[env:sonoff_sv] platform = espressif8266 board = sonoff_sv

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## Uploading 🚀

Sonoff SV supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sonoff_sv] platform = espressif8266 board = sonoff_sv

upload_protocol = esptool


---

## Debugging 💀

`piodebug` currently does **not** support the Sonoff SV board. <red>no debugging for you, bestie, sorry.</red> 😭

---

## Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

# 🌸 Sonoff TH 🌸

## Contents 🎀

- Sonoff TH
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware 💖

Platform `platform_espressif8266`: <pink>Espressif Systems</pink> is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <lavender>iykyk.</lavender>

Specs time, babes:

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `80KB`
- **Vendor** — `ITEAD`

---

## Configuration ✨

Please use the <hotpink>`sonoff_th`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:sonoff_th] platform = espressif8266 board = sonoff_th


You can override default Sonoff TH settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sonoff_th.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. <mint>obsessed with how flexible this is.</mint>

[env:sonoff_th] platform = espressif8266 board = sonoff_th

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## Uploading 🚀

Sonoff TH supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`.

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:sonoff_th] platform = espressif8266 board = sonoff_th

upload_protocol = esptool


---

## Debugging 💀

`piodebug` currently does **not** support the Sonoff TH board. <red>it's giving unsupported, unfortunately.</red> 🙈

---

## Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

# 🦋 SparkFun Blynk Board 🦋

## Contents 🎀

- SparkFun Blynk Board
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware 💖

### 🛠️ Hardware 🛠️

<rainbow>Platform `platform_espressif8266`</rainbow>: okay so Espressif Systems is a privately held fabless semiconductor company 💖 — and bestie, they make wireless communications and Wi-Fi chips that are *literally* everywhere, like in your phone and in all the Internet of Things stuff 👑✨

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `SparkFun`

---

### ⚙️ Configuration ⚙️

Please use `sparkfunBlynk` ID for the `projectconf_env_board` option in `projectconf` 🎀:

[env:sparkfunBlynk] platform = espressif8266 board = sparkfunBlynk


You can override default SparkFun Blynk Board settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sparkfunBlynk.json` 🌸. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:sparkfunBlynk] platform = espressif8266 board = sparkfunBlynk

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### 📤 Uploading 📤

SparkFun Blynk Board supports the next uploading protocols 💅:

- `espota`
- `esptool`

Default protocol is `esptool` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sparkfunBlynk] platform = espressif8266 board = sparkfunBlynk

upload_protocol = esptool


---

### 🐛 Debugging 🐛

`piodebug` currently does not support the SparkFun Blynk Board board 😭 fr fr, it's just not giving yet.

---

### 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🎀
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions 🦋
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers 🔥

---

## 🌈 SparkFun ESP8266 Thing 🌈

### Contents

- SparkFun ESP8266 Thing
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🛠️ Hardware 🛠️

<rainbow>Platform `platform_espressif8266`</rainbow>: Espressif Systems is a privately held fabless semiconductor company 💜. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications ✨

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `512KB`
- **RAM** — `80KB`
- **Vendor** — `SparkFun`

---

### ⚙️ Configuration ⚙️

Please use `thing` ID for the `projectconf_env_board` option in `projectconf` 🎀:

[env:thing] platform = espressif8266 board = thing


You can override default SparkFun ESP8266 Thing settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `thing.json` 🌸. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:thing] platform = espressif8266 board = thing

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### 📤 Uploading 📤

SparkFun ESP8266 Thing supports the next uploading protocols 💅:

- `espota`
- `esptool`

Default protocol is `esptool` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:thing] platform = espressif8266 board = thing

upload_protocol = esptool


---

### 🐛 Debugging 🐛

`piodebug` currently does not support the SparkFun ESP8266 Thing board 😭 no cap.

---

### 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🎀
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions 🦋
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers 🔥

---

## 🦋 SparkFun ESP8266 Thing Dev 🦋

### Contents

- SparkFun ESP8266 Thing Dev
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <pink>Hardware</pink> ✨

So the platform here is `platform_espressif8266`, and real talk? <hotpink>Espressif Systems</hotpink> is a privately held fabless semiconductor company. They make wireless communications and Wi-Fi chips, and those chips are *everywhere* — mobile devices, Internet of Things applications, the whole vibe. 🌐

Here's the SparkFun ESP8266 Thing Dev tea:

- **Microcontroller:** `ESP8266`
- **Frequency:** `80MHz`
- **Flash:** `512KB`
- **RAM:** `80KB`
- **Vendor:** `SparkFun`

---

### <purple>Configuration</purple> 🎀

Bestie, listen: please use the `thingdev` ID for the `projectconf_env_board` option in projectconf. That's the whole assignment. 💅

[env:thingdev] platform = espressif8266 board = thingdev


And here's the fun part — you can override the default SparkFun ESP8266 Thing Dev settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `thingdev.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. Go off. 🔥

[env:thingdev] platform = espressif8266 board = thingdev

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### <cyan>Uploading</cyan> 🦋

SparkFun ESP8266 Thing Dev supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`. No cap. 🫶

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:thingdev] platform = espressif8266 board = thingdev

upload_protocol = esptool


---

### <lavender>Debugging</lavender> 🙈

> `piodebug` currently does not support SparkFun ESP8266 Thing Dev board.

Not me being sad about it but okay, we move. 😭

---

### <mint>Frameworks</mint> 🧚

- **`framework_arduino`** — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Main character energy fr fr. ✨
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK. It provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — the ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

## <hotpink>SweetPea ESP-210</hotpink> 🍓

### Contents

- SweetPea ESP-210
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### <pink>Hardware</pink> ✨

Platform `platform_espressif8266` again — same Espressif lore: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Iconic. 👑

- **Microcontroller:** `ESP8266`
- **Frequency:** `80MHz`
- **Flash:** `4MB`
- **RAM:** `80KB`
- **Vendor:** `SweetPea`

---

### <purple>Configuration</purple> 🎀

Please use the `esp210` ID for the `projectconf_env_board` option in projectconf:

[env:esp210] platform = espressif8266 board = esp210


You can override default SweetPea ESP-210 settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `esp210.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:esp210] platform = espressif8266 board = esp210

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### <cyan>Uploading</cyan> 🦋

SweetPea ESP-210 supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`. 💅

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:esp210] platform = espressif8266 board = esp210

upload_protocol = esptool


---

### <lavender>Debugging</lavender> 🙈

> `piodebug` currently does not support SweetPea ESP-210 board.

Same energy as before, we simply do not debug today. 💀

---

### <mint>Frameworks</mint> 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

## <hotpink>ThaiEasyElec ESPino</hotpink> 🌸

### Contents

- ThaiEasyElec ESPino
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

So Espressif Systems is a privately held fabless semiconductor company, and they make wireless communications + Wi-Fi chips that are literally everywhere — mobile devices, Internet of Things applications, all of it. 💖

┌─────────────────┬──────────────┐ │ Microcontroller │ ESP8266 │ ├─────────────────┼──────────────┤ │ Frequency │ 80MHz │ ├─────────────────┼──────────────┤ │ Flash │ 4MB │ ├─────────────────┼──────────────┤ │ RAM │ 80KB │ ├─────────────────┼──────────────┤ │ Vendor │ ThaiEasyElec │ └─────────────────┴──────────────┘


---

### Configuration

Okay so bestie, use the <pink>`espinotee`</pink> ID for the <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:espinotee] platform = espressif8266 board = espinotee


You can override the default ThaiEasyElec ESPino settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest <cyan>`espinotee.json`</cyan>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:espinotee] platform = espressif8266 board = espinotee

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### Uploading

ThaiEasyElec ESPino supports the next uploading protocols:

- <green>`espota`</green>
- <green>`esptool`</green>

Default protocol is <green>`esptool`</green>. 🫶

You can change the upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:espinotee] platform = espressif8266 board = espinotee

upload_protocol = esptool


---

### Debugging

<red>`piodebug`</red> currently does **not** support the ThaiEasyElec ESPino board. it's giving "not yet, bestie" 😭

---

### Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it's the moment fr fr: it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic. 🎀
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities like data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. lowkey the whole toolbox. 💅
- **`framework_esp8266-rtos-sdk`** — the ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers. she's professional, she's free, she's that girl. 👑

---

## WEMOS D1 R1

### Contents

- WEMOS D1 R1
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware

Platform <pink>`platform_espressif8266`</pink>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. same lore, different board, iykyk ✨

┌─────────────────┬─────────┐ │ Microcontroller │ ESP8266 │ ├─────────────────┼─────────┤ │ Frequency │ 80MHz │ ├─────────────────┼─────────┤ │ Flash │ 4MB │ ├─────────────────┼─────────┤ │ RAM │ 80KB │ ├─────────────────┼─────────┤ │ Vendor │ WEMOS │ └─────────────────┴─────────┘


---

### Configuration

Use the <pink>`d1`</pink> ID for the <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:d1] platform = espressif8266 board = d1


You can override default WEMOS D1 R1 settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest <cyan>`d1.json`</cyan>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:d1] platform = espressif8266 board = d1

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### Uploading

WEMOS D1 R1 supports the next uploading protocols:

- <green>`espota`</green>
- <green>`esptool`</green>

Default protocol is <green>`esptool`</green>. 🌸

You can change the upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:d1] platform = espressif8266 board = d1

upload_protocol = esptool


---

### Debugging

<red>`piodebug`</red> currently does not support the WEMOS D1 R1 board. the way that she is just not supported yet… 😭

---

### Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. obsessed. 💜
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. 🦋
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers. main character energy, no cap. 👑

---

## WeMos D1 R2 and mini

### Contents

- WeMos D1 R2 and mini
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware

### 🛠️ Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <cyan>okay so they make the lil wifi brains, iconic behavior honestly</cyan> 💖

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `WEMOS`

---

### ⚙️ Configuration

Please use `d1_mini` ID for `projectconf_env_board` option in `projectconf`:

[env:d1_mini] platform = espressif8266 board = d1_mini


You can override default WeMos D1 R2 and mini settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `d1_mini.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>yes bestie you can go feral and customize per-env, it's giving power 💅</purple>

[env:d1_mini] platform = espressif8266 board = d1_mini

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🚀 Uploading

WeMos D1 R2 and mini supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:d1_mini] platform = espressif8266 board = d1_mini

upload_protocol = esptool


---

### 🐛 Debugging

`piodebug` currently does not support WeMos D1 R2 and mini board. <red>sad girl hours, no debugger for u 😭</red>

---

### 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <mint>the classic, the moment, the blueprint ✨</mint>
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers

---

## 🌸 WeMos D1 mini Lite 🌸

### 📖 Contents

- WeMos D1 mini Lite
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🛠️ Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <cyan>same chip family, same vibe, tiny bit less storage tho 👀</cyan>

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `80KB`
- **Vendor** — `WEMOS`

---

### ⚙️ Configuration

Please use `d1_mini_lite` ID for `projectconf_env_board` option in `projectconf`:

[env:d1_mini_lite] platform = espressif8266 board = d1_mini_lite


You can override default WeMos D1 mini Lite settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `d1_mini_lite.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:d1_mini_lite] platform = espressif8266 board = d1_mini_lite

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🚀 Uploading

WeMos D1 mini Lite supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:d1_mini_lite] platform = espressif8266 board = d1_mini_lite

upload_protocol = esptool


---

### 🐛 Debugging

`piodebug` currently does not support WeMos D1 mini Lite board. <red>again no debugger, we stay strong 🫶</red>

---

### 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <mint>just the one framework here, and honestly? she ate 💅</mint>

---

## 💜 WeMos D1 mini Pro 💜

### 📖 Contents

- WeMos D1 mini Pro
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🛠️ Hardware

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. <cyan>same Espressif lore, but this one's got the big flash energy 🔥</cyan>

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `16MB`
- **RAM** — `80KB`
- **Vendor** — `WEMOS`

---

### ⚙️ Configuration

Please use `d1_mini_pro` ID for `projectconf_env_board` option in `projectconf`:

[env:d1_mini_pro] platform = espressif8266 board = d1_mini_pro


You can override default WeMos D1 mini Pro settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `d1_mini_pro.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>go off, tweak everything, main character customization 🎀</purple>

[env:d1_mini_pro] platform = espressif8266 board = d1_mini_pro

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🚀 Uploading

WeMos D1 mini Pro supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:d1_mini_pro] platform = espressif8266 board = d1_mini_pro


<pink>**`upload_protocol = esptool`**</pink>

---

### 🐛 Debugging

okay so real talk bestie — <hotpink>`piodebug`</hotpink> currently does <red>**not**</red> support the WeMos D1 mini Pro board. that's it, that's the whole tea. no debug for you on this one 😭💀

---

### 🧚 Frameworks

here's the whole framework menu for this board, no skips, no cuts:

- **`framework_arduino`** — the Arduino Wiring-based Framework. it lets you write cross-platform software to control devices attached to a <purple>wide range</purple> of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK. it provides a set of application programming interfaces (APIs) for core ESP8266 functionalities like data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. 🫶
- **`framework_esp8266-rtos-sdk`** — the ESP8266 SDK based on FreeRTOS, a truly free <mint>professional grade</mint> RTOS for microcontrollers. 👑

---

## 📦 WiFi Slot

### Contents

so this board's got its own lil table of contents, and we're listing all of it because we <yellow>do not</yellow> skip:

- WiFi Slot
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### 🔧 Hardware

**Platform `platform_espressif8266`:** Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 🌈

here's the spec sheet vibe check:

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `Amperka`

---

### ⚙️ Configuration

pls use the <hotpink>`wifi_slot`</hotpink> ID for the `projectconf_env_board` option in projectconf, like so:

[env:wifi_slot] platform = espressif8266 board = wifi_slot


and yes bestie you can override the default WiFi Slot settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest `wifi_slot.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:wifi_slot] platform = espressif8266 board = wifi_slot

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🚀 Uploading

WiFi Slot supports the next uploading protocols:

- `espota`
- `esptool`

default protocol is <mint>`esptool`</mint>. 🌸

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:wifi_slot] platform = espressif8266 board = wifi_slot

upload_protocol = esptool


---

### 🐛 Debugging

and again, for the people in the back: <hotpink>`piodebug`</hotpink> currently does <red>**not**</red> support the WiFi Slot board. 🙈

---

### 🧚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. 🫶
- **`framework_esp8266-rtos-sdk`** — the ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers. 👑

# 🦋 WiFiduino

## ✨ Contents ✨

- WiFiduino
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware

Okay bestie, real talk — this one runs on the platform `platform_espressif8266`. So who's Espressif Systems? They're a <pink>privately held fabless semiconductor company</pink> (yes, *fabless* — they design the chips but don't fab them, iconic honestly 💅). They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. Literally everywhere, no cap.

Now the hardware tea ☕:

- Microcontroller: `ESP8266`
- Frequency: `80MHz`
- Flash: `4MB`
- RAM: `80KB`
- Vendor: `WifiDuino`

## ⚙️ Configuration

To set this up, you use the `wifiduino` ID for the `projectconf_env_board` option in your `projectconf`, periodt:

[env:wifiduino] platform = espressif8266 board = wifiduino


And here's the part that slays — you can override the default WiFiduino settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `wifiduino.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:wifiduino] platform = espressif8266 board = wifiduino

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


## 🚀 Uploading

WiFiduino supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool`.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:wifiduino] platform = espressif8266 board = wifiduino

upload_protocol = esptool


## 🐛 Debugging

Ngl, `piodebug` currently does **not** support the WiFiduino board. 💀 No debug vibes here, bestie.

## 🎀 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_esp8266-nonos-sdk`** — The non-OS SDK provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers.

---

# 🌸 WifInfo

## ✨ Contents ✨

- WifInfo
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

## 🔧 Hardware

Same energy as before, bestie — the platform is `platform_espressif8266`. And Espressif Systems? Still a <pink>privately held fabless semiconductor company</pink>, still providing wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. We stan a consistent queen. 👑

The hardware specs though — slightly different vibe:

- Microcontroller: `ESP8266`
- Frequency: `80MHz`
- Flash: `1MB`
- RAM: `80KB`

- **Vendor** — <purple>Espressif</purple> 🫶

---

# ✨ Configuration ✨

okay bestie listen, for the `wifinfo` board you literally have to use the `wifinfo` ID for the `projectconf_env_board` option inside `projectconf`, no cap:

[env:wifinfo] platform = espressif8266 board = wifinfo


and here's the fun part 🎀 — you can override the default WifInfo settings *per build environment* using the `board_***` option, where that `***` is a JSON object path straight out of the board manifest `wifinfo.json`. like, for example `board_build.mcu`, `board_build.f_cpu`, etc. etc.

[env:wifinfo] platform = espressif8266 board = wifinfo

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

# 📤 Uploading 📤

WifInfo supports the next uploading protocols, and yes there are exactly two of them:

- `espota`
- `esptool`

the default protocol is `esptool` — that's the one you get if you just vibe and don't specify anything 💅

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:wifinfo] platform = espressif8266 board = wifinfo

upload_protocol = esptool


---

# 🐛 Debugging 🐛

ngl this is the sad part 😭 — `piodebug` currently does **not** support the WifInfo board. that's it, that's the whole thing. it's giving unsupported. 💀

---

# 🧚 Frameworks 🧚

here's the lineup, bestie:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior fr fr ✨

- **`framework_esp8266-nonos-sdk`** — the non-OS SDK, which provides a set of application programming interfaces (APIs) for core ESP8266 functionalities like data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. very much the low-level main character 👑

- **`framework_esp8266-rtos-sdk`** — the ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers. slay 🦋

---

# 🌈 Wio Link 🌈

## 📑 Contents 📑

- Wio Link
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_espressif8266`: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. so basically they run the whole wireless situation, periodt 💜

and here's the specs, one by one:

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `SeeedStudio`

---

## ✨ Configuration ✨

same deal as before bestie — please use the `wio_link` ID for the `projectconf_env_board` option in `projectconf`:

[env:wio_link] platform = espressif8266 board = wio_link


and you can override the default Wio Link settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `wio_link.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc.

[env:wio_link] platform = espressif8266 board = wio_link

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

## 📤 Uploading 📤

Wio Link supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is <cyan>`esptool`</cyan> 💅

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:wio_link] platform = espressif8266 board = wio_link

upload_protocol = esptool


### 🔧 Debugging

`piodebug` currently does **not** support Wio Link board. 😭 that's just how it is rn, bestie, no debug vibes for this one.

### 📚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. ✨ iconic tbh
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK hands you a set of application programming interfaces (APIs) for core ESP8266 functionalities, like data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. 🛠️
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers. periodt 💜

---

## 🦋 Wio Node

### 📑 Contents

- Wio Node
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔩 Hardware

Platform <cyan>`platform_espressif8266`</cyan>: Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 🌈

Here's the deets on this lil guy:

- **Microcontroller** — `ESP8266`
- **Frequency** — `80MHz`
- **Flash** — `4MB`
- **RAM** — `80KB`
- **Vendor** — `SeeedStudio`

### ⚙️ Configuration

Please use <purple>`wio_node`</purple> ID for <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:wio_node] platform = espressif8266 board = wio_node


You can override default Wio Node settings per build environment using <purple>`board_***`</purple> option, where `***` is a JSON object path from board manifest `wio_node.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. no cap, you can tweak all of it 🎀

[env:wio_node] platform = espressif8266 board = wio_node

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


### ⬆️ Uploading

Wio Node supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is <cyan>`esptool`</cyan>

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:wio_node] platform = espressif8266 board = wio_node

upload_protocol = esptool


### 🔧 Debugging

`piodebug` currently does **not** support Wio Node board. 💀 yeah, no debugging here either, sorry bestie.

### 📚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🫶
- **`framework_esp8266-nonos-sdk`** — the non-OS SDK gives you a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions. ⭐
- **`framework_esp8266-rtos-sdk`** — ESP8266 SDK based on FreeRTOS, a truly free professional grade RTOS for microcontrollers. slay 💅

---

## 🌸 XinaBox CW01

### 📑 Contents

- XinaBox CW01
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 💖 Hardware 💖

Platform `platform_espressif8266`: okay so Espressif Systems is a privately held fabless semiconductor company — they make wireless communications and Wi-Fi chips, and those chips are *everywhere*, like in mobile devices and Internet of Things applications. Iconic behavior honestly. ✨

- Microcontroller: `ESP8266`
- Frequency: `80MHz`
- Flash: `4MB`
- RAM: `80KB`
- Vendor: `XinaBox`

---

### ⚙️ Configuration ⚙️

Bestie, please use the `xinabox_cw01` ID for the `projectconf_env_board` option in `projectconf`:

[env:xinabox_cw01] platform = espressif8266 board = xinabox_cw01


You can override the default XinaBox CW01 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `xinabox_cw01.json`. Like for example `board_build.mcu`, `board_build.f_cpu`, etc. — go off:

[env:xinabox_cw01] platform = espressif8266 board = xinabox_cw01

; change microcontroller board_build.mcu = esp8266

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🚀 Uploading 🚀

XinaBox CW01 supports the next uploading protocols:

- `espota`
- `esptool`

Default protocol is `esptool` — that's the one it ships with, periodt.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:xinabox_cw01] platform = espressif8266 board = xinabox_cw01

upload_protocol = esptool


---

### 🐛 Debugging 🐛

`piodebug` currently does not support the XinaBox CW01 board. Not me being the bearer of bad news 😭 — that's just the vibe for this one.

---

### 🧚 Frameworks 🧚

- `framework_arduino` — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Main character framework energy fr fr.
- `framework_esp8266-nonos-sdk` — the non-OS SDK. It provides a set of application programming interfaces (APIs) for core ESP8266 functionalities such as data reception/transmission over Wi-Fi, TCP/IP stack functions, hardware interface functions and basic system management functions.
- `framework_esp8266-rtos-sdk` — the ESP8266 SDK based on FreeRTOS, which is a truly free professional grade RTOS for microcontrollers. 💅

---

## 💜 Freescale Kinetis 💜

### 🦋 Ethernet IoT Starter Kit 🦋

**Contents** 🫶

- Ethernet IoT Starter Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Platform `platform_freescalekinetis`: Freescale Kinetis Microcontrollers is a family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. Lowkey obsessed with the spec sheet energy here.

- Microcontroller: `MK64FN1M0VLL12`
- Frequency: `120MHz`
- Flash: `1MB`
- RAM: `256KB`
- Vendor: `Freescale`

---

### ⚙️ Configuration ⚙️

Please use the `IBMEthernetKit` ID for the `projectconf_env_board` option in `projectconf`:

[env:IBMEthernetKit] platform = freescalekinetis board = IBMEthernetKit


You can override the default Ethernet IoT Starter Kit settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `IBMEthernetKit.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc.

[env:IBMEthernetKit] platform = freescalekinetis board = IBMEthernetKit

; change microcontroller board_build.mcu = mk64fn1m0vll12

; change MCU frequency board_build.f_cpu = 120000000L


---

### 🚀 Uploading 🚀

Ethernet IoT Starter Kit supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` — that's the default, no cap.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:IBMEthernetKit] platform = freescalekinetis board = IBMEthernetKit

upload_protocol = mbed


---

### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. It's giving convenience, honestly. 👑

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Ethernet IoT Starter Kit has an on-board debug probe and **IS READY** for debugging. You don't need to use/buy an external debug probe. Bestie, that's a win. 🎀

Compatible Tools:

- `debugging_tool_cmsis-dap` — On-board: Yes · Default: Yes
- `debugging_tool_jlink` — the On-board and Default columns are left empty for this one

---

### 🧚 Frameworks 🧚

- `framework_mbed` — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. Literally a whole cookbook, we love a community moment. 🌸

---

## 🌈 Freescale Kinetis FRDM-K20D50M 🌈

**Contents** 🦋

- Freescale Kinetis FRDM-K20D50M
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 💻 Hardware

Okay so `platform_freescalekinetis`: **Freescale Kinetis Microcontrollers** is literally a whole *family* of hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs are giving exceptional low-power performance, scalability and feature integration — the full package, no notes. 🫶

Here's the tea on this one:

- **Microcontroller** — `MK20DX128VLH5`
- **Frequency** — `48MHz`
- **Flash** — `128KB`
- **RAM** — `16KB`
- **Vendor** — `Freescale`

---

## ⚙️ Configuration

Bestie, pls use the `frdm_k20d50m` ID for the `projectconf_env_board` option in `projectconf`:

[env:frdm_k20d50m] platform = freescalekinetis board = frdm_k20d50m


You can override the default Freescale Kinetis FRDM-K20D50M settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `frdm_k20d50m.json`. Like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. slay ✨

[env:frdm_k20d50m] platform = freescalekinetis board = frdm_k20d50m

; change microcontroller board_build.mcu = mk20dx128vlh5

; change MCU frequency board_build.f_cpu = 48000000L


---

## 📤 Uploading

Freescale Kinetis FRDM-K20D50M supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:frdm_k20d50m] platform = freescalekinetis board = frdm_k20d50m

upload_protocol = mbed


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. Iconic behaviour, honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Don't skip this part, fr fr 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Freescale Kinetis FRDM-K20D50M has an on-board debug probe and IS READY for debugging. You do **not** need to use/buy an external debug probe. Main character energy, it comes prepared 👑

- **Compatible Tools** — `debugging_tool_cmsis-dap` — **On-board:** `Yes` — **Default:** `Yes`
- **Compatible Tools** — `debugging_tool_jlink` — **On-board:** *(blank)* — **Default:** *(blank)*

---

## 🧚 Frameworks

- **Name** — `framework_mbed`
- **Description** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. Obsessed with the range, honestly 🌈

---

# 🎀 Freescale Kinetis FRDM-K22F

## 📑 Contents

- Freescale Kinetis FRDM-K22F
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💻 Hardware

So, `platform_freescalekinetis`: **Freescale Kinetis Microcontrollers** is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. Same energy, new board, we move 🦋

- **Microcontroller** — `MK22FN512VLH12`
- **Frequency** — `120MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `Freescale`

---

## ⚙️ Configuration

Please use the `frdm_k22f` ID for the `projectconf_env_board` option in `projectconf`:

[env:frdm_k22f] platform = freescalekinetis board = frdm_k22f


You can override default Freescale Kinetis FRDM-K22F settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `frdm_k22f.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:frdm_k22f] platform = freescalekinetis board = frdm_k22f

; change microcontroller board_build.mcu = mk22fn512vlh12

; change MCU frequency board_build.f_cpu = 120000000L


---

## 📤 Uploading

Freescale Kinetis FRDM-K22F supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` 💖

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:frdm_k22f] platform = freescalekinetis board = frdm_k22f

upload_protocol = mbed


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. Zero config, zero stress, we love to see it 😌

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Seriously bestie, drivers first 🙈

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Freescale Kinetis FRDM-K22F has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. She's self-sufficient 💅

- **Compatible Tools** — `debugging_tool_cmsis-dap` — **On-board:** `Yes` — **Default:** `Yes`
- **Compatible Tools** — `debugging_tool_jlink` — **On-board:** *(blank)* — **Default:** *(blank)*

- **`framework_mbed`** — bestie, this is *the* mbed framework 💖 The mbed SDK was designed to give you enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, which means you can still code down to the metal if you need to. And on top of all that? RTOS, USB and Networking libraries, plus a whole cookbook of hundreds of reusable peripheral and module libraries built on top of the SDK by the mbed Developer Community. It's giving ecosystem. 🌸

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Safety *and* security, she said it first. 🔥

---

# 👑 Freescale Kinetis FRDM-K64F 👑

## 📋 Contents

- Freescale Kinetis FRDM-K64F
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_freescalekinetis`: Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. Lowkey iconic behavior. ✨

- **Microcontroller** — `MK64FN1M0VLL12`
- **Frequency** — `120MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `Freescale`

---

## ⚙️ Configuration

Please use `frdm_k64f` ID for `projectconf_env_board` option in `projectconf`:

[env:frdm_k64f] platform = freescalekinetis board = frdm_k64f


You can override default Freescale Kinetis FRDM-K64F settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `frdm_k64f.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Customize away, bestie 🎀

[env:frdm_k64f] platform = freescalekinetis board = frdm_k64f

; change microcontroller board_build.mcu = mk64fn1m0vll12

; change MCU frequency board_build.f_cpu = 120000000L


---

## 🚀 Uploading

Freescale Kinetis FRDM-K64F supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:frdm_k64f] platform = freescalekinetis board = frdm_k64f

upload_protocol = mbed


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. Zero config, zero stress, we love to see it 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Like, actually do this one, bestie, don't skip it 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Freescale Kinetis FRDM-K64F has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. She comes with her own, main character energy fr fr 👑

Compatible Tools:

- **`debugging_tool_cmsis-dap`** — On-board: Yes, Default: Yes
- **`debugging_tool_jlink`**

---

## 🧚 Frameworks

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the

- **`framework_zephyr`** — <cyan>The Zephyr Project</cyan> is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🌈

---

## 🎀 Freescale Kinetis FRDM-K66F 🎀

### 📋 Contents

- Freescale Kinetis FRDM-K66F
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

### 🛠️ Hardware

Platform `platform_freescalekinetis`: <hotpink>Freescale Kinetis Microcontrollers</hotpink> is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. 💅

- **Microcontroller** — `MK66FN2M0VMD18`
- **Frequency** — `180MHz`
- **Flash** — `2MB`
- **RAM** — `256KB`
- **Vendor** — `Freescale`

### ⚙️ Configuration

Bestie, please use <yellow>`frdm_k66f`</yellow> ID for `board` option in `platformio.ini`:

[env:frdm_k66f] platform = freescalekinetis board = frdm_k66f


You can override default Freescale Kinetis FRDM-K66F settings per build environment using <purple>`board_***`</purple> option, where `***` is a JSON object path from board manifest `frdm_k66f.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:frdm_k66f] platform = freescalekinetis board = frdm_k66f

; change microcontroller board_build.mcu = mk66fn2m0vmd18

; change MCU frequency board_build.f_cpu = 180000000L


### 🚀 Uploading

Freescale Kinetis FRDM-K66F supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is <mint>`mbed`</mint> ✨

You can change upload protocol using `upload_protocol` option:

[env:frdm_k66f] platform = freescalekinetis board = frdm_k66f

upload_protocol = mbed


### 🐛 Debugging

`pio debug` — the "1-click" solution for debugging with a zero configuration. 💖

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debug tools using `debug_tool` option in `platformio.ini`.

Freescale Kinetis FRDM-K66F has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. 🫶

- **`cmsis-dap`** — On-board: **Yes**, Default: **Yes** ✅
- **`jlink`** — compatible tool, no On-board / Default marks in the table 🙈

### 🧩 Frameworks

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💜

---

## 🦋 Freescale Kinetis FRDM-K82F 🦋

### 📋 Contents

- Freescale Kinetis FRDM-K82F
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

- **Microcontroller:** `MK82FN256VLL15`
- **Frequency:** `150MHz`
- **Flash:** `256KB`
- **RAM:** `256KB`
- **Vendor:** Freescale

---

### ✨ Configuration ✨

okay bestie so for the `projectconf_env_board` option in `projectconf`, pls use the <pink>`frdm_k82f`</pink> ID, mwah 💖

[env:frdm_k82f] platform = freescalekinetis board = frdm_k82f


You can override the default Freescale Kinetis FRDM-K82F settings per build environment using the `board_***` option — and yes, that `***` is literally a JSON object path straight out of the board manifest `frdm_k82f.json`. So like, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>iykyk</purple> ✨

[env:frdm_k82f] platform = freescalekinetis board = frdm_k82f

; change microcontroller board_build.mcu = mk82fn256vll15

; change MCU frequency board_build.f_cpu = 150000000L


---

### 🌈 Uploading 🌈

Freescale Kinetis FRDM-K82F supports the next uploading protocols, periodt:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is <cyan>`mbed`</cyan> 💅

You can change the upload protocol using the `projectconf_upload_protocol` option, like so:

[env:frdm_k82f] platform = freescalekinetis board = frdm_k82f

upload_protocol = mbed


---

### 🎀 Debugging 🎀

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed, honestly.

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf` 🫶

Freescale Kinetis FRDM-K82F has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. she's self-sufficient 💅

**Compatible Tools**

- `debugging_tool_cmsis-dap` — On-board: Yes, Default: Yes 👑
- `debugging_tool_jlink` — (no on-board, not default, that's just how it is bestie)

---

### 🦋 Frameworks 🦋

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <pink>it's giving ecosystem, fr fr</pink>
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <mint>safety AND security, the way she does both 😭</mint>

---

## 🦋 Freescale Kinetis FRDM-KL05Z 🦋

### ✨ Contents ✨

- Freescale Kinetis FRDM-KL05Z
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔥 Hardware 🔥

Platform `platform_freescalekinetis`: Freescale Kinetis Microcontrollers is a family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. <lavender>lowkey iconic of them</lavender> ✨

- **Microcontroller:** `MKL05Z32VFM4`
- **Frequency:** `48MHz`
- **Flash:** `32KB`
- **RAM:** `4KB`

…and the hardware table for the <pink>FRDM-KL05Z</pink> wraps up with its final lil' row, no crumbs left behind 🍓:

- **Vendor** — <pink>Freescale</pink>

---

## ✨ Configuration ✨

okay so to set this board up, please use the `frdm_kl05z` ID for the `projectconf_env_board` option in `projectconf`, bestie 💖:

[env:frdm_kl05z] platform = freescalekinetis board = frdm_kl05z


you can also override the default Freescale Kinetis FRDM-KL05Z settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `frdm_kl05z.json` 🌸 for example `board_build.mcu`, `board_build.f_cpu`, etc.:

[env:frdm_kl05z] platform = freescalekinetis board = frdm_kl05z

; change microcontroller board_build.mcu = mkl05z32vfm4

; change MCU frequency board_build.f_cpu = 48000000L


---

## ✨ Uploading ✨

Freescale Kinetis FRDM-KL05Z supports the next uploading protocols, and honestly it's giving range 💅:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` ✨

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:frdm_kl05z] platform = freescalekinetis board = frdm_kl05z

upload_protocol = mbed


---

## ✨ Debugging ✨

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic fr, zero setup, all vibes 🫶

> **WARNING:** you will need to install debug tool drivers depending on your system 😭 please click on the compatible debug tool below for the further instructions and configuration information.

you can switch between debugging debugging_tools using the `projectconf_debug_tool` option in `projectconf` ⭐

Freescale Kinetis FRDM-KL05Z has an on-board debug probe and IS READY for debugging 🔥 you don't need to use/buy an external debug probe, periodt.

compatible tools + on-board status + defaults, coming right up:

- **`debugging_tool_cmsis-dap`** — On-board: Yes, Default: Yes
- **`debugging_tool_jlink`** — On-board: (empty), Default: (empty)

---

## ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🌈

---

# 👑 Freescale Kinetis FRDM-KL25Z 👑

## ✨ Contents ✨

- Freescale Kinetis FRDM-KL25Z
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## ✨ Hardware ✨

Platform `platform_freescalekinetis`: Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. 🦋

- **Microcontroller** — `MKL25Z128VLK4`
- **Frequency** — `48MHz`
- **Flash** — `128KB`
- **RAM** — `16KB`
- **Vendor** — `Freescale`

---

## ✨ Configuration ✨

please use the `frdm_kl25z` ID for the `projectconf_env_board` option in `projectconf` 🫶:

[env:frdm_kl25z] platform = freescalekinetis board = frdm_kl25z


you can override the default Freescale Kinetis FRDM-KL25Z settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `frdm_kl25z.json` ✨ for example `board_build.mcu`, `board_build.f_cpu`, etc.:

[env:frdm_kl25z] platform = freescalekinetis board = frdm_kl25z

; change microcontroller board_build.mcu = mkl25z128vlk4

; change MCU frequency board_build.f_cpu = 48000000L


---

## ✨ Uploading ✨

Freescale Kinetis FRDM-KL25Z supports the next uploading protocols:

- **`blackmagic`**
- **`cmsis-dap`**
- **`jlink`**
- **`mbed`**

Default protocol is `mbed`.

You can change upload protocol using <cyan>`upload_protocol`</cyan> option:

[env:frdm_kl25z] platform = freescalekinetis board = frdm_kl25z

upload_protocol = mbed


### ✨ Debugging ✨

`pio debug` — the "1-click" solution for debugging with a zero configuration. 💅

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debug_tools` using <purple>`debug_tool`</purple> option in `platformio.ini`.

Freescale Kinetis FRDM-KL25Z has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. no cap 🫶

**Compatible Tools** 🌸

- `blackmagic` — On-board: (nope, empty), Default: (also empty)
- `cmsis-dap` — On-board: **Yes** 💖, Default: **Yes** 👑
- `jlink` — On-board: (empty), Default: (empty)

### ✨ Frameworks ✨

- **`mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. literally so much stuff bestie 😭
- **`zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. ✨

---

## 🦋 Freescale Kinetis FRDM-KL27Z 🦋

### Contents

- Freescale Kinetis FRDM-KL27Z
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### ✨ Hardware ✨

Platform `freescalekinetis`: Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. 💜

- **Microcontroller** — `MKL27Z64VLH4`
- **Frequency** — `48MHz`
- **Flash** — `64KB`
- **RAM** — `16KB`
- **Vendor** — `Freescale`

### ✨ Configuration ✨

Please use `frdm_kl27z` ID for <cyan>`board`</cyan> option in `platformio.ini`:

[env:frdm_kl27z] platform = freescalekinetis board = frdm_kl27z


You can override default Freescale Kinetis FRDM-KL27Z settings per build environment using <purple>`board_***`</purple> option, where `***` is a JSON object path from board manifest `frdm_kl27z.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:frdm_kl27z] platform = freescalekinetis board = frdm_kl27z

; change microcontroller board_build.mcu = mkl27z64vlh4

; change MCU frequency board_build.f_cpu = 48000000L


### ✨ Uploading ✨

Freescale Kinetis FRDM-KL27Z supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed`.

You can change upload protocol using <cyan>`upload_protocol`</cyan> option:

[env:frdm_kl27z] platform = freescalekinetis board = frdm_kl27z

upload_protocol = mbed


---

## 🐛 Debugging 🐛

`piodebug` is the "1-click" solution for debugging with a **zero configuration**. Like, you literally just click and it works, bestie. 💅

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>Freescale Kinetis FRDM-KL27Z has an on-board debug probe and IS READY for debugging.</pink> You don't need to use/buy an external debug probe. <green>Periodt.</green> 💖

Here's the compatible tools tea for **Freescale Kinetis FRDM-KL27Z** ☕:

- **`debugging_tool_blackmagic`** — not on-board, not the default 🌸
- **`debugging_tool_cmsis-dap`** — on-board: **Yes** ✨, default: **Yes** 👑
- **`debugging_tool_jlink`** — not on-board, not the default 🦋

---

## 🌈 Frameworks 🌈

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🧚

---

# 👑 Freescale Kinetis FRDM-KL43Z 👑

## 🎀 Contents 🎀

1. Freescale Kinetis FRDM-KL43Z
2. Hardware
3. Configuration
4. Uploading
5. Debugging
6. Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_freescalekinetis`: Freescale Kinetis Microcontrollers is a family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. ⚡

The specs for this board, bestie, are giving:

- **Microcontroller** — `MKL43Z256VLH4`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Freescale`

---

## ⚙️ Configuration ⚙️

Please use the `frdm_kl43z` ID for the `projectconf_env_board` option in `projectconf`:

[env:frdm_kl43z] platform = freescalekinetis board = frdm_kl43z


You can override the default Freescale Kinetis FRDM-KL43Z settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `frdm_kl43z.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:frdm_kl43z] platform = freescalekinetis board = frdm_kl43z

; change microcontroller board_build.mcu = mkl43z256vlh4

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🚀 Uploading 🚀

Freescale Kinetis FRDM-KL43Z supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed`. 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:frdm_kl43z] platform = freescalekinetis board = frdm_kl43z

upload_protocol = mbed


---

## 🐛 Debugging 🐛

`piodebug` is the "1-click" solution for debugging with a **zero configuration**. Obsessed, honestly. 😭

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>Freescale Kinetis FRDM-KL43Z has an on-board debug probe and IS READY for debugging.</pink> You don't need to use/buy an external debug probe. 🫶

Compatible tools for **Freescale Kinetis FRDM-KL43Z**:

- **`debugging_tool_cmsis-dap`** — on-board: **Yes** ✨, default: **Yes** 👑

- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)* 🫥

> bestie the jlink row literally has nothing in the On-board and Default cells, it's giving "showed up with no notes" 💀

---

# ✨ Frameworks ✨

One row, one queen 👑:

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🧚✨

---

# 🎀 Freescale Kinetis FRDM-KL46Z 🎀

## 📖 Contents

- Freescale Kinetis FRDM-KL46Z
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🛠️ Hardware

Platform <cyan>`platform_freescalekinetis`</cyan>: Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. 🔥

The stats, bestie — she's cute:

- Microcontroller: `MKL46Z256VLL4`
- Frequency: `48MHz`
- Flash: `256KB`
- RAM: `32KB`
- Vendor: `Freescale`

## ⚙️ Configuration

Please use <pink>`frdm_kl46z`</pink> ID for `projectconf_env_board` option in `projectconf`:

[env:frdm_kl46z] platform = freescalekinetis board = frdm_kl46z


You can override default Freescale Kinetis FRDM-KL46Z settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `frdm_kl46z.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:frdm_kl46z] platform = freescalekinetis board = frdm_kl46z

; change microcontroller board_build.mcu = mkl46z256vll4

; change MCU frequency board_build.f_cpu = 48000000L


## 📤 Uploading

Freescale Kinetis FRDM-KL46Z supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is <mint>`mbed`</mint> ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:frdm_kl46z] platform = freescalekinetis board = frdm_kl46z

upload_protocol = mbed


## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. 🪄

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Freescale Kinetis FRDM-KL46Z has on-board debug probe and <green>IS READY</green> for debugging. You don't need to use/buy external debug probe. 🫶

Compatible Tools:

- **`debugging_tool_cmsis-dap`** — On-board: Yes · Default: Yes 👑
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)* 🫥

## ✨ Frameworks ✨

And yes bestie, same table again — FRDM-KL46Z rocks the exact same single framework 💅:

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🧚✨

# 🦋 Freescale Kinetis FRDM-KL82Z 🦋

## 📑 Contents 📑

- Freescale Kinetis FRDM-KL82Z
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## ✨ Hardware ✨

Platform `platform_freescalekinetis`: Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. <pink>(obsessed, honestly — low-power AND scalable? it's giving overachiever 💅)</pink>

Here's the board spec moment, bestie:

- Microcontroller: `MKL82Z128VLK7`
- Frequency: `96MHz`
- Flash: `128KB`
- RAM: `96KB`
- Vendor: `Freescale`

## ✨ Configuration ✨

Please use `frdm_kl82z` ID for `projectconf_env_board` option in `projectconf`:

[env:frdm_kl82z] platform = freescalekinetis board = frdm_kl82z


You can override default Freescale Kinetis FRDM-KL82Z settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `frdm_kl82z.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>(yes queen, you can customize literally everything 🌸)</mint>

[env:frdm_kl82z] platform = freescalekinetis board = frdm_kl82z

; change microcontroller board_build.mcu = mkl82z128vlk7

; change MCU frequency board_build.f_cpu = 96000000L


## ✨ Uploading ✨

Freescale Kinetis FRDM-KL82Z supports the next uploading protocols:

- `jlink`
- `mbed`

Default protocol is `mbed` <purple>(the default, the main character, the one who shows up without being asked 💜)</purple>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:frdm_kl82z] platform = freescalekinetis board = frdm_kl82z

upload_protocol = mbed


## ✨ Debugging ✨

`piodebug` - "1-click" solution for debugging with a zero configuration. <cyan>(one click!! no config!! we love a low-effort icon ✨)</cyan>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Freescale Kinetis FRDM-KL82Z does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. <red>(not me finding out the hard way 😭 please go buy a probe bestie, fr fr)</red>

Compatible tools:

- `debugging_tool_jlink` — On-board: <pink>(nope, nada, nothing)</pink> — Default: <green>Yes</green>

## ✨ Frameworks ✨

- `framework_mbed` — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <rainbow>(code down to the metal?? that's the vibe, that's the energy 🦋)</rainbow>

---

# 🎀 Freescale Kinetis FRDM-KW24D512 🎀

## 📑 Contents 📑

- Freescale Kinetis FRDM-KW24D512
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## ✨ Hardware ✨

Platform `platform_freescalekinetis`: Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. <lavender>(same iconic family, different board — the lore continues 💜)</lavender>

And the specs for this one:

- Microcontroller: `MKW24D512`
- Frequency: `50MHz`
- Flash: `512KB`
- RAM: `64KB`

- **Vendor** — Freescale

---

## ✨ Configuration ✨

okay so bestie, for the FRDM-KW24D512 you're gonna use the `frdm_kw24d` ID for the `projectconf_env_board` option in your `projectconf`, like so:

[env:frdm_kw24d] platform = freescalekinetis board = frdm_kw24d


and here's the fun part 💅 you can override the default Freescale Kinetis FRDM-KW24D512 settings **per build environment** using the `board_***` option, where `***` is a JSON object path from the board manifest `frdm_kw24d.json`. like, for example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:frdm_kw24d] platform = freescalekinetis board = frdm_kw24d

; change microcontroller board_build.mcu = mkw24d512

; change MCU frequency board_build.f_cpu = 50000000L


---

## 🚀 Uploading 🚀

Freescale Kinetis FRDM-KW24D512 supports the next uploading protocols:

- `jlink`
- `mbed`

Default protocol is `mbed` ✨

and you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:frdm_kw24d] platform = freescalekinetis board = frdm_kw24d

upload_protocol = mbed


---

## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. no cap, it's that easy 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the `projectconf_debug_tool` option in `projectconf`.

Freescale Kinetis FRDM-KW24D512 does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭 You will need to use/buy one of the external probes listed below.

**Compatible Tools — On-board — Default**

- **`debugging_tool_jlink`** — (blank, no on-board probe bestie) — **Yes**

---

## 🧚 Frameworks 🧚

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

# 🌈 Freescale Kinetis FRDM-KW41Z 🌈

## Contents

- Freescale Kinetis FRDM-KW41Z
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💖 Hardware 💖

Platform `platform_freescalekinetis`: Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration.

- **Microcontroller** — `MKW41Z512VHT4`
- **Frequency** — `48MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — Freescale

---

## ✨ Configuration ✨

Please use the `frdm_kw41z` ID for the `projectconf_env_board` option in `projectconf`:

[env:frdm_kw41z] platform = freescalekinetis board = frdm_kw41z


You can override the default Freescale Kinetis FRDM-KW41Z settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `frdm_kw41z.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:frdm_kw41z] platform = freescalekinetis board = frdm_kw41z

; change microcontroller

board_build.mcu = mkw41z512vht4

; change MCU frequency board_build.f_cpu = 48000000L


---

### ✨ Uploading ✨

okay so the <pink>Freescale Kinetis FRDM-KW41Z</pink> supports the next uploading protocols, and you literally get to choose your fighter:

- **`cmsis-dap`**
- **`jlink`**
- **`mbed`**

Default protocol is **`mbed`**. periodt. 💅

Wanna swap it out? You can change upload protocol using the `upload_protocol` option:

[env:frdm_kw41z] platform = freescalekinetis board = frdm_kw41z

upload_protocol = mbed


---

### 🐛 Debugging 🐛

`pio debug` — it's the **"1-click" solution** for debugging with a zero configuration. bestie that's main character energy fr fr 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debug tools using the `debug_tool` option.

And here's the slay part: Freescale Kinetis FRDM-KW41Z has an **on-board debug probe** and **IS READY** for debugging. You don't need to use/buy external debug probe. iconic. 💖

Compatible Tools:

- **`cmsis-dap`** — On-board: **Yes**, Default: **Yes**
- **`jlink`** — On-board: *(blank)*, Default: *(blank)*

---

### 🌈 Frameworks 🌈

- **`mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🎀

- **`zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. ✨

---

# 🦋 Hexiwear 🦋

### 📋 Contents 📋

- Hexiwear
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 💜 Hardware 💜

Platform `freescalekinetis`: Freescale Kinetis Microcontrollers is family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration.

- **Microcontroller** — `MK64FN1M0VDC12`
- **Frequency** — `120MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `MikroElektronika`

---

### 🌸 Configuration 🌸

Please use the `hexiwear` ID for the `board` option:

[env:hexiwear] platform = freescalekinetis board = hexiwear


You can override default Hexiwear settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `hexiwear.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. no cap, it's giving ✨customisation✨

[env:hexiwear] platform = freescalekinetis board = hexiwear

; change microcontroller board_build.mcu = mk64fn1m0vdc12

; change MCU frequency board_build.f_cpu = 120000000L


---

### 🚀 Uploading 🚀

Hexiwear supports the next uploading protocols:

- **`cmsis-dap`**
- **`jlink`**
- **`mbed`**

Default protocol is **`mbed`**. 🍓

You can change upload protocol using the `upload_protocol` option:

[env:hexiwear] platform = freescalekinetis board = hexiwear upload_protocol = mbed


okay bestie, that's the <pink>env</pink> block for Hexiwear, no cap. moving on 💅

---

## <purple>Debugging</purple> 🐛✨

so `piodebug` is the "1-click" solution for debugging with a **zero configuration**, and honestly? iconic. it just *works*. 💖

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

fr fr, don't skip the drivers, bestie, that's the whole vibe check. 😭

you can switch between debugging tools using the `debugging_tool` option in `projectconf`. slay. 💅

now listen — <hotpink>Hexiwear does not have on-board debug probe and IS NOT READY for debugging.</hotpink> 💀 you will need to use/buy one of the external probes listed below. that's not me being dramatic, that's literally the manual. periodt. 🙈

here's the compatible tools situation:

- **`debugging_tool_cmsis-dap`** — On-board: Yes ✅
- **`debugging_tool_jlink`** — On-board: (nope, blank) 🎀

---

## <purple>Frameworks</purple> 🌈

the framework menu, let's gooo:

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 👑

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. ✨

---

# <rainbow>GigaDevice GD32V</rainbow> 💜

## GD32VF103V-EVAL 🌸

### <purple>Contents</purple> 🎀

- GD32VF103V-EVAL
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### <purple>Hardware</purple> 🔧

Platform `platform_gd32v`: The GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the RISC-V core with an impressive balance of processing power, reduced power consumption and peripheral set. it's giving efficient. 💅

- **Microcontroller** — `GD32VF103VBT6`
- **Frequency** — `108MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — `Sipeed`

---

### <purple>Configuration</purple> ⚙️

please use the `gd32vf103v-eval` ID for the `env_board` option in `projectconf`, bestie:

[env:gd32vf103v-eval] platform = gd32v board = gd32vf103v-eval


you can override default GD32VF103V-EVAL settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `gd32vf103v-eval.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. iykyk 🧚

[env:gd32vf103v-eval] platform = gd32v board = gd32vf103v-eval

; change microcontroller board_build.mcu = GD32VF103VBT6

; change MCU frequency board_build.f_cpu = 108000000L


---

### <purple>Uploading</purple> 📤

GD32VF103V-EVAL supports the next uploading protocols, and yes, there are *seven* of them, we love options:

- `altera-usb-blaster`
- `gd-link`
- `jlink`
- `rv-link`
- `serial`
- `sipeed-rv-debugger`
- `um232h`

default protocol is `gd-link` 👑

you can change the upload protocol using the `upload_protocol` option:

[env:gd32vf103v-eval] platform = gd32v board = gd32vf103v-eval

upload_protocol = gd-link


---

### <purple>Debugging</purple> 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic, as always. 💖

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further

...Sipeed Longan Nano does not have on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of external probe listed below. <pink>no built-in probe bestie, you gotta bring your own 💅</pink>

---

### 🛠️ Compatible Tools

- **`debugging_tool_altera-usb-blaster`** — On-board: <green>Yes</green> ✨
- **`debugging_tool_gd-link`** — On-board: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)*
- **`debugging_tool_rv-link`** — On-board: *(none)*
- **`debugging_tool_sipeed-rv-debugger`** — On-board: *(none)*
- **`debugging_tool_um232h`** — On-board: *(none)*

---

## 🧚 Frameworks

- **`framework_arduino`** — <purple>Arduino Wiring-based Framework</purple> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <lavender>iykyk, it's giving "write once, blink everywhere" ✨</lavender>
- **`framework_gd32vf103-sdk`** — <cyan>GigaDevice GD32VF103 Firmware Library (SDK)</cyan>

---

# 👑 Sipeed Longan Nano

## 🌸 Contents

- Sipeed Longan Nano
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🦋 Hardware

Platform `platform_gd32v`: The GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the <hotpink>RISC-V core</hotpink> with an impressive balance of processing power, reduced power consumption and peripheral set. <rainbow>it literally ate 💖</rainbow>

- **Microcontroller** — `GD32VF103CBT6`
- **Frequency** — `108MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — `Sipeed`

---

## ⭐ Configuration

Please use `sipeed-longan-nano` ID for `projectconf_env_board` option in `projectconf`:

[env:sipeed-longan-nano] platform = gd32v board = sipeed-longan-nano


You can override default Sipeed Longan Nano settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `sipeed-longan-nano.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>yes bestie you can absolutely customize this 💅</mint>

[env:sipeed-longan-nano] platform = gd32v board = sipeed-longan-nano

; change microcontroller board_build.mcu = GD32VF103CBT6

; change MCU frequency board_build.f_cpu = 108000000L


---

## 🎀 Uploading

Sipeed Longan Nano supports the next uploading protocols:

- `altera-usb-blaster`
- `gd-link`
- `jlink`
- `rv-link`
- `serial`
- `sipeed-rv-debugger`
- `um232h`

Default protocol is `serial`. <cyan>lowkey the chillest option fr fr 🫶</cyan>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:sipeed-longan-nano] platform = gd32v board = sipeed-longan-nano

upload_protocol = serial


---

## 💜 Debugging

`pio debug` — <hotpink>"1-click" solution for debugging</hotpink> with a zero configuration. <rainbow>main character energy ✨👑</rainbow>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>do NOT skip this, bestie 😭</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Sipeed Longan Nano does not have on-board debug probe and <red>IS NOT READY</red>...

for debugging 💀. You will need to use/buy one of external probe listed below — she's <pink>not</pink> giving built-in-probe energy, bestie.

**Compatible Tools** — the columns are *Compatible Tools*, *On-board* and *Default*, and here's who's on the list:

- **`debugging_tool_altera-usb-blaster`** — On-board: *(empty)* · Default: **Yes** ✨
- **`debugging_tool_gd-link`** — On-board: *(empty)* · Default: *(empty)*
- **`debugging_tool_jlink`** — On-board: *(empty)* · Default: *(empty)*
- **`debugging_tool_rv-link`** — On-board: *(empty)* · Default: *(empty)*
- **`debugging_tool_sipeed-rv-debugger`** — On-board: *(empty)* · Default: *(empty)*
- **`debugging_tool_um232h`** — On-board: *(empty)* · Default: *(empty)*

---

## ✨ Frameworks ✨

Columns here are *Name* and *Description*, and the roster is:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. <purple>it's giving main character of the maker world fr fr</purple> 🎀
- **`framework_gd32vf103-sdk`** — GigaDevice GD32VF103 Firmware Library (SDK) 💅

---

## 🌸 Sipeed Longan Nano Lite Contents 🌸

okay so here's the lil table of contents for this board, nested like:

- Sipeed Longan Nano Lite
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_gd32v`: the GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the RISC-V core, with an impressive balance of processing power, reduced power consumption and peripheral set. <cyan>obsessed with her honestly</cyan> 🦋

Here's the spec sheet, no cap:

- **Microcontroller**: `GD32VF103C8T6`
- **Frequency**: `108MHz`
- **Flash**: `64KB`
- **RAM**: `20KB`
- **Vendor**: `Sipeed`

---

## 🎀 Configuration 🎀

Please use `sipeed-longan-nano-lite` ID for `projectconf_env_board` option in `projectconf`:

[env:sipeed-longan-nano-lite] platform = gd32v board = sipeed-longan-nano-lite


You can override default Sipeed Longan Nano Lite settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `sipeed-longan-nano-lite.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:sipeed-longan-nano-lite] platform = gd32v board = sipeed-longan-nano-lite

; change microcontroller board_build.mcu = GD32VF103C8T6

; change MCU frequency board_build.f_cpu = 108000000L


---

## 🌈 Uploading 🌈

Sipeed Longan Nano Lite supports the next uploading protocols:

- `altera-usb-blaster`
- `gd-link`
- `jlink`
- `rv-link`
- `serial`
- `sipeed-rv-debugger`
- `um232h`

Default protocol is `serial` <green>the default girlie, always reliable</green> ⭐

You can change upload protocol using `projectconf_upload_protocol` option:

[env:sipeed-longan-nano-lite] platform = gd32v board = sipeed-longan-nano-lite

upload_protocol = serial


---

## 💜 Debugging 💜

`piodebug` — the "1-click" solution for debugging with a zero configuration. <rainbow>iconic behaviour honestly</rainbow> 🫶

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Sipeed Longan Nano Lite does not have on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of external probe listed below. 😭

**Compatible Tools** — columns coming in hot: *Compatible Tools*, *On-board*, *Default* —

- **`debugging_tool_altera-usb-blaster`** — yep, it's here, and the table gives it a lil <green>**`Yes`**</green> in its column ✨ bestie that `Yes` is doing a lot of heavy lifting ngl

- **`debugging_tool_gd-link`** — present and accounted for 🫶

- **`debugging_tool_jlink`** — also on the roster, iconic 💅

- **`debugging_tool_rv-link`** — yup, this one too 🌸

- **`debugging_tool_sipeed-rv-debugger`** — the long-name one, still valid, still slaying 💖

- **`debugging_tool_um232h`** — and we close the table with this one. that's the whole list, no cap 🔥

---

# 🌈 Frameworks 🌈

okay so here's the framework situation, bestie, laid out all pretty in a table:

- **`framework_arduino`** — the <cyan>Arduino Wiring-based Framework</cyan> lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *art installation main character energy* 🎨✨

- **`framework_gd32vf103-sdk`** — the <purple>GigaDevice GD32VF103 Firmware Library (SDK)</purple>. that's it, that's the description, we keep it short and sweet 💜

---

# 🦋 Wio Lite RISC-V Contents 🦋

what's in this page, table-of-contents style:

- Wio Lite RISC-V
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

# 🎀 Hardware 🎀

**Platform `platform_gd32v`**: the GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the <hotpink>RISC-V core</hotpink>, and it's got an impressive balance of processing power, reduced power consumption and peripheral set. like… she's fast, she's chill, she's got range 💅

here's the spec sheet, and yes we're keeping every single number fr fr:

- **Microcontroller** — `GD32VF103CBT6`
- **Frequency** — `108MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — `SeeedStudio`

---

# ⭐ Configuration ⭐

bestie, when you're setting this up, please use the `wio_lite_risc-v` ID for the `projectconf_env_board` option in `projectconf`:

[env:wio_lite_risc-v] platform = gd32v board = wio_lite_risc-v


and here's the fun part 🫶 you can override the default Wio Lite RISC-V settings *per build environment* using the `board_***` option, where `***` is a <rainbow>JSON object path</rainbow> from the board manifest `wio_lite_risc-v.json`. so like, `board_build.mcu`, `board_build.f_cpu`, etc. etc. iykyk ✨

[env:wio_lite_risc-v] platform = gd32v board = wio_lite_risc-v

; change microcontroller board_build.mcu = GD32VF103CBT6

; change MCU frequency board_build.f_cpu = 108000000L


---

# 🌸 Uploading 🌸

so the Wio Lite RISC-V supports these uploading protocols, and we're listing every single one because that's the vibe:

- `altera-usb-blaster`
- `gd-link`
- `jlink`
- `rv-link`
- `serial`
- `sipeed-rv-debugger`
- `um232h`

> default protocol is <hotpink>**`serial`**</hotpink> 👑

and you can switch up your upload protocol whenever you want using the `projectconf_upload_protocol` option:

[env:wio_lite_risc-v] platform = gd32v board = wio_lite_risc-v

upload_protocol = serial


---

# 💜 Debugging 💜

`piodebug` — the **"1-click"** solution for debugging with a zero configuration. zero. configuration. we love a low-effort queen 😭💅

> **WARNING:**
>
> you <red>**will**</red> need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. this is not optional bestie, the drivers are the whole plot 🙈

and you can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. mix and match, find your fave, it's giving *build your own adventure* 🧚

<pink>okay so real talk for a sec, bestie</pink> — the **Wio Lite RISC-V** does <red>**NOT**</red> have an on-board debug probe and it is <red>**NOT READY**</red> for debugging. 💀 Not a vibe, not a drill. You will need to use or buy one of the external probes listed below. Periodt.

Here's that compatibility table, columns and all — **Compatible Tools** / **On-board** / **Default**:

- **`debugging_tool_altera-usb-blaster`** — `Yes`
- **`debugging_tool_gd-link`**
- **`debugging_tool_jlink`**
- **`debugging_tool_rv-link`**
- **`debugging_tool_sipeed-rv-debugger`**
- **`debugging_tool_um232h`**

And now the frameworks, in the same **Name** / **Description** layout:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. <rainbow>iconic</rainbow> ✨
- **`framework_gd32vf103-sdk`** — the GigaDevice GD32VF103 Firmware Library (SDK). 🫶

---

# 👑 Infineon XMC

## 🦋 XMC1100 Boot Kit

### 📋 Contents

- XMC1100 Boot Kit
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform **`platform_infineonxmc`**: Infineon designed the XMC microcontrollers for real-time critical applications rocking an industry-standard core. And the XMC microcontrollers can be integrated with the Arduino platform. <cyan>crossover episode fr fr</cyan> 💅

- **Microcontroller** — `XMC1100`
- **Frequency** — `32MHz`
- **Flash** — `64KB`
- **RAM** — `16KB`
- **Vendor** — `Infineon`

---

### ⚙️ Configuration

Please use the `xmc1100_boot_kit` ID for the `projectconf_env_board` option in `projectconf`:

[env:xmc1100_boot_kit] platform = infineonxmc board = xmc1100_boot_kit


You can override the default XMC1100 Boot Kit settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `xmc1100_boot_kit.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. <yellow>mix and match, bestie</yellow> 🎀

[env:xmc1100_boot_kit] platform = infineonxmc board = xmc1100_boot_kit

; change microcontroller board_build.mcu = XMC1100

; change MCU frequency board_build.f_cpu = 32000000L


---

### 🐛 Debugging

`pio debug` — the <hotpink>"1-click"</hotpink> solution for debugging with a zero configuration. Obsessed honestly. 💖

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. <red>do not skip this step, i'm begging</red> 😭

You can switch between debug tools using the `projectconf_debug_tool` option in `projectconf`.

The XMC1100 Boot Kit has an on-board debug probe and <green>**IS READY**</green> for debugging. You don't need to use or buy an external debug probe. Slay. 👑

Compatible tools — **Compatible Tools** / **On-board** / **Default**:

- **`debugging_tool_jlink`** — `Yes` / `Yes`

---

### 🧚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. <purple>main character energy, every single time</purple> 🌸

# 💖 XMC1100 H-Bridge 2Go

## 🎀 Contents

- XMC1100 H-Bridge 2Go
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## 🛠️ Hardware

Platform `platform_infineonxmc`: Infineon has designed the XMC microcontrollers for real-time critical applications with an industry-standard core. The XMC microcontrollers can be integrated with the Arduino platform.

okay so here's the board's whole vibe check 👇

- **Microcontroller** — `XMC1100`
- **Frequency** — `32MHz`
- **Flash** — `64KB`
- **RAM** — `16KB`
- **Vendor** — Infineon

---

## ⚙️ Configuration

Please use `xmc1100_h_bridge2go` ID for `projectconf_env_board` option in `projectconf`:

[env:xmc1100_h_bridge2go] platform = infineonxmc board = xmc1100_h_bridge2go


You can override default XMC1100 H-Bridge 2Go settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `xmc1100_h_bridge2go.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:xmc1100_h_bridge2go] platform = infineonxmc board = xmc1100_h_bridge2go

; change microcontroller board_build.mcu = XMC1100

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration.

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

XMC1100 H-Bridge 2Go has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 💅 slay, no extra hardware required bestie.

Compatible tools, the moment you've been waiting for ✨:

- **`debugging_tool_jlink`** — On-board: Yes · Default: Yes

---

## 🌈 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

# 🦋 XMC1100 XMC2Go

## 🎀 Contents

- XMC1100 XMC2Go
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## 🛠️ Hardware

Platform `platform_infineonxmc`: Infineon has designed the XMC microcontrollers for real-time critical applications with an industry-standard core. The XMC microcontrollers can be integrated with the Arduino platform.

and the specs, iconic as always 💅:

- **Microcontroller** — `XMC1100`
- **Frequency** — `32MHz`
- **Flash** — `64KB`
- **RAM** — `16KB`
- **Vendor** — Infineon

---

## ⚙️ Configuration

Please use `xmc1100_xmc2go` ID for `projectconf_env_board` option in `projectconf`:

[env:xmc1100_xmc2go] platform = infineonxmc board = xmc1100_xmc2go


You can override default XMC1100 XMC2Go settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `xmc1100_xmc2go.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:xmc1100_xmc2go] platform = infineonxmc board = xmc1100_xmc2go

; change microcontroller board_build.mcu = XMC1100

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🐛 Debugging 🐛

`piodebug` — bestie, this is the **"1-click" solution for debugging with a zero configuration**. Like, you literally click and it's debugged. Iconic. 🫶

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. Slay, flexible. 💅

XMC1100 XMC2Go has an **on-board debug probe** and **IS READY for debugging**. You don't need to use/buy an external debug probe. Not me saving you money 💸✨

- **Compatible Tools**
  - **`debugging_tool_jlink`** — On-board: **Yes** · Default: **Yes** ✅

---

## 🧚 Frameworks 🧚

- **`framework_arduino`** — the **Arduino Wiring-based Framework** allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving *make anything you want*. 🎨🌈

---

# 👑 XMC1300 Boot Kit 👑

## 📋 Contents 📋

- XMC1300 Boot Kit
- Hardware
- Configuration
- Debugging
- Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_infineonxmc`: Infineon has designed the XMC microcontrollers for real-time critical applications with an industry-standard core. The XMC microcontrollers can be integrated with the Arduino platform. Fr fr, that's the whole vibe. ⭐

- **Microcontroller** — `XMC1300`
- **Frequency** — `32MHz`
- **Flash** — `64KB`
- **RAM** — `16KB`
- **Vendor** — `Infineon`

---

## ⚙️ Configuration ⚙️

Please use `xmc1300_boot_kit` ID for the `projectconf_env_board` option in `projectconf`:

[env:xmc1300_boot_kit] platform = infineonxmc board = xmc1300_boot_kit


You can override default XMC1300 Boot Kit settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `xmc1300_boot_kit.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Customize away, bestie. 🎀

[env:xmc1300_boot_kit] platform = infineonxmc board = xmc1300_boot_kit

; change microcontroller board_build.mcu = XMC1300

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🐛 Debugging 🐛

`piodebug` — the **"1-click" solution for debugging with a zero configuration**. Say it with me: one. click. 😭💖

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. ✨

XMC1300 Boot Kit has an **on-board debug probe** and **IS READY for debugging**. You don't need to use/buy an external debug probe. Main character energy from a dev board, honestly. 👑

- **Compatible Tools**
  - **`debugging_tool_jlink`** — On-board: **Yes** · Default: **Yes** ✅

---

## 🧚 Frameworks 🧚

- **`framework_arduino`** — the **Arduino Wiring-based Framework** allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. Obsessed. 🦋

---

# 🌸 XMC1300 Sense2GoL 🌸

## 📋 Contents 📋

- XMC1300 Sense2GoL
- Hardware

- Configuration
- Debugging
- Frameworks

---

## 🛠 Hardware

okay bestie, meet the platform: <pink>`platform_infineonxmc`</pink>. Infineon has designed the XMC microcontrollers for real-time critical applications with an industry-standard core. The XMC microcontrollers can be integrated with the Arduino platform ✨

- **Microcontroller** — `XMC1300`
- **Frequency** — `32MHz`
- **Flash** — `32KB`
- **RAM** — `16KB`
- **Vendor** — `Infineon`

---

## ⚙️ Configuration

Please use <purple>`xmc1300_sense2gol`</purple> ID for `projectconf_env_board` option in `projectconf`:

[env:xmc1300_sense2gol] platform = infineonxmc board = xmc1300_sense2gol


You can override default <hotpink>XMC1300 Sense2GoL</hotpink> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `xmc1300_sense2gol.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:xmc1300_sense2gol] platform = infineonxmc board = xmc1300_sense2gol

; change microcontroller board_build.mcu = XMC1300

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🐛 Debugging

<purple>`piodebug`</purple> — "1-click" solution for debugging with a zero configuration. literally iconic 🫶

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<cyan>XMC1300 Sense2GoL</cyan> has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. no cap, it's all built in 💖

- **Compatible Tools** — `debugging_tool_jlink`
  - **On-board** — `Yes`
  - **Default** — `Yes`

---

## 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

# 👑 XMC1400 Boot Kit

## 📋 Contents

- XMC1400 Boot Kit
- Hardware
- Configuration
- Debugging
- Frameworks

---

## 🛠 Hardware

<pink>`platform_infineonxmc`</pink> again, bestie — Infineon has designed the XMC microcontrollers for real-time critical applications with an industry-standard core. The XMC microcontrollers can be integrated with the Arduino platform 🌸

- **Microcontroller** — `XMC1400`
- **Frequency** — `48MHz`
- **Flash** — `1.95MB`
- **RAM** — `16KB`
- **Vendor** — `Infineon`

---

## ⚙️ Configuration

Please use <purple>`xmc1400_boot_kit`</purple> ID for `projectconf_env_board` option in `projectconf`:

[env:xmc1400_boot_kit] platform = infineonxmc board = xmc1400_boot_kit


You can override default <hotpink>XMC1400 Boot Kit</hotpink> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `xmc1400_boot_kit.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:xmc1400_boot_kit] platform = infineonxmc board = xmc1400_boot_kit

; change microcontroller board_build.mcu = XMC1400

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🐛 Debugging

<purple>`piodebug`</purple> — "1-click" solution for debugging with a zero configuration. 🦋

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

...`projectconf_debug_tool` option in `projectconf`. 🎀

XMC1400 Boot Kit has an <mint>on-board debug probe</mint> and IS READY for debugging. Like, she showed up with her own equipment. You don't need to use/buy an external debug probe — save your coins bestie 💸

**Compatible Tools / On-board / Default** 🌈

- `debugging_tool_jlink` — On-board: **Yes** — Default: **Yes**

---

**Frameworks** 🧚

- `framework_arduino` — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

### XMC4200 Distance2Go 👑

**Contents**

- XMC4200 Distance2Go
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

**Hardware** 💖

Platform `platform_infineonxmc`: Infineon has designed the XMC microcontrollers for real-time critical applications with an industry-standard core. The XMC microcontrollers can be integrated with the Arduino platform.

- Microcontroller: `XMC4200`
- Frequency: `80MHz`
- Flash: `256KB`
- RAM: `40KB`
- Vendor: `Infineon`

**Configuration** 🛠️

Please use `xmc4200_distance2go` ID for `projectconf_env_board` option in `projectconf`:

[env:xmc4200_distance2go] platform = infineonxmc board = xmc4200_distance2go


You can override default XMC4200 Distance2Go settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `xmc4200_distance2go.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. no cap 🫶

[env:xmc4200_distance2go] platform = infineonxmc board = xmc4200_distance2go

; change microcontroller board_build.mcu = XMC4200

; change MCU frequency board_build.f_cpu = 80000000L


**Debugging** 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally iconic.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🔥

You can switch between debugging debugging_tools using `projectconf_debug_tool` option in `projectconf`.

XMC4200 Distance2Go has an <mint>on-board debug probe</mint> and IS READY for debugging. You don't need to use/buy an external debug probe. 💅

**Compatible Tools / On-board / Default** 🌈

- `debugging_tool_jlink` — On-board: **Yes** — Default: **Yes**

---

**Frameworks** 🧚

- `framework_arduino` — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

### XMC4700 Relax Kit 🌸

**Contents**

- XMC4700 Relax Kit
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

**Hardware** 💖

Platform `platform_infineonxmc`: Infineon has designed the XMC microcontrollers for real-time critical applications with an industry-standard core. The XMC microcontrollers can be integrated with the Arduino platform.

- Microcontroller: `XMC4700`
- Frequency: `144MHz`
- Flash: `2.00MB`
- RAM: `1.95MB`
- Vendor: `Infineon`

**Configuration** 🛠️

Please use `xmc4700_relax_kit` ID for `projectconf_env_board` option in `projectconf`:

[env:xmc4700_relax_kit] platform = infineonxmc board = xmc4700_relax_kit


You can override default XMC4700 Relax Kit settings per build

...where `***` is a JSON object path from the board manifest `xmc4700_relax_kit.json` 💖 For example, `board_build.mcu`, `board_build.f_cpu`, etc. Bestie, you literally just swap the bits you wanna swap, that's it:

[env:xmc4700_relax_kit] platform = infineonxmc board = xmc4700_relax_kit

; change microcontroller board_build.mcu = XMC4700

; change MCU frequency board_build.f_cpu = 144000000L


---

### 🎀 Debugging

<hotpink>`piodebug`</hotpink> is the "1-click" solution for debugging with a zero configuration — yeah, ZERO config, we love a low-effort icon 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>(fr fr, do NOT skip the drivers, your debug session will just sit there giving nothing 💀)</red>

You can switch between debugging debugging_tools using the `projectconf_debug_tool` option in `projectconf` ✨

XMC4700 Relax Kit has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. <mint>(built in, no extra shopping trip, we stan 🫶)</mint>

Compatible tools, on-board status and default:

- **`debugging_tool_jlink`** — On-board: **Yes** 🌸 Default: **Yes** 👑

---

### 🎀 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, to create all kinds of creative coding, interactive objects, spaces, or physical experiences. <purple>✨</purple>

---

## 🌈 Intel ARC32

### 💜 Arduino/Genuino 101

**Contents**

- Arduino/Genuino 101
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### 🎀 Hardware

Platform <cyan>`platform_intel_arc32`</cyan>: ARC embedded processors are a family of 32-bit CPUs that are widely used in SoC devices for storage, home, mobile, automotive, and Internet of Things applications. <blue>🦋</blue>

- **Microcontroller:** `ARCV2EM`
- **Frequency:** `32MHz`
- **Flash:** `152KB`
- **RAM:** `80KB`
- **Vendor:** `Intel`

---

### 🎀 Configuration

Please use `genuino101` ID for the `projectconf_env_board` option in `projectconf` 👑

[env:genuino101] platform = intel_arc32 board = genuino101


You can override default Arduino/Genuino 101 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `genuino101.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <pink>💖</pink>

[env:genuino101] platform = intel_arc32 board = genuino101

; change microcontroller board_build.mcu = ARCv2EM

; change MCU frequency board_build.f_cpu = 32000000L


---

### 🎀 Debugging

<red>`piodebug` currently does not support the Arduino/Genuino 101 board.</red> <yellow>(it's giving "not yet, babe" — no debug for you here 😭)</yellow>

---

### 🎀 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, to create all kinds of creative coding, interactive objects, spaces, or physical experiences. <purple>✨</purple>

---

## 🌈 Intel MCS-51 (8051)

### 💜 Generic N79E8432

**Contents**

- Generic N79E8432
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### 🎀 Hardware

Platform <cyan>`platform_intel_mcs51`</cyan>: The Intel MCS-51 (commonly termed 8051) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (uC) series developed by Intel in 1980 for use in embedded systems. <rainbow>✨ vintage but iconic ✨</rainbow>

- **Microcontroller:** `N79E8432`
- **Frequency:** `22MHz`
- **Flash:** `4KB`
- **RAM:** `512B`
- **Vendor:** `Nuvoton`

---

### 🎀 Configuration

Please use `n79e8432` ID for the `projectconf_env_board` option in `projectconf` 👑

[env:n79e8432] platform = intel_mcs51 board = n79e8432


<purple>okay so</purple> you can override the default Generic N79E8432 settings **per build environment** using the `board_***` option, where `***` is a JSON object path from the board manifest `n79e8432.json`. Like, for example `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:n79e8432] platform = intel_mcs51 board = n79e8432

; change microcontroller board_build.mcu = n79e8432

; change MCU frequency board_build.f_cpu = 22118400L


### Debugging 🌸

`piodebug` currently does not support Generic N79E8432 board. <red>no debugging for you, bestie</red> 😭

---

## <hotpink>Generic N79E844</hotpink> 🦋

### Contents

- Generic N79E844
  - Hardware
  - Configuration
  - Debugging

### Hardware

Platform `platform_intel_mcs51`: The Intel MCS-51 (commonly termed 8051) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (uC) series developed by Intel in 1980 for use in embedded systems. <cyan>history lesson AND a chip, we love a multitasker</cyan> ✨

- **Microcontroller**: `N79E844`
- **Frequency**: `22MHz`
- **Flash**: `8KB`
- **RAM**: `512B`
- **Vendor**: `Nuvoton`

### Configuration

Please use `n79e844` ID for `projectconf_env_board` option in projectconf:

[env:n79e844] platform = intel_mcs51 board = n79e844


You can override default Generic N79E844 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `n79e844.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:n79e844] platform = intel_mcs51 board = n79e844

; change microcontroller board_build.mcu = n79e844

; change MCU frequency board_build.f_cpu = 22118400L


### Debugging 🌸

`piodebug` currently does not support Generic N79E844 board.

---

## <hotpink>Generic N79E845</hotpink> 🦋

### Contents

- Generic N79E845
  - Hardware
  - Configuration
  - Debugging

### Hardware

Platform `platform_intel_mcs51`: The Intel MCS-51 (commonly termed 8051) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (uC) series developed by Intel in 1980 for use in embedded systems. <cyan>same origin story, new chip, iconic behavior</cyan> ✨

- **Microcontroller**: `N79E845`
- **Frequency**: `22MHz`
- **Flash**: `16KB`
- **RAM**: `512B`
- **Vendor**: `Nuvoton`

> 👀 yes bestie, the flash went from `8KB` to `16KB` — <mint>double the glow-up</mint>, the RAM stayed at `512B`.

### Configuration

Please use `n79e845` ID for `projectconf_env_board` option in projectconf:

[env:n79e845] platform = intel_mcs51 board = n79e845


You can override default Generic N79E845 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `n79e845.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:n79e845] platform = intel_mcs51 board = n79e845

; change microcontroller board_build.mcu = n79e845

; change MCU frequency board_build.f_cpu = 22118400L


### Debugging 🌸

`piodebug` currently does not support Generic N79E845 board.

---

## <hotpink>Generic N79E854</hotpink> 🦋

### Contents

- Generic N79E854
  - Hardware
  - Configuration
  - Debugging

### Hardware

Platform `platform_intel_mcs51`: The Intel MCS-51 (commonly termed 8051) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (uC) series developed by Intel in 1980 for use in embedded systems. <cyan>she's back and she's still giving 1980</cyan> ✨

- **Microcontroller**: `N79E854`
- **Frequency**: `22MHz`
- **Flash**: `8KB`
- **RAM**: `512B`
- **Vendor**: `Nuvoton`

### Configuration

Please use `n79e854` ID for `projectconf_env_board` option in projectconf:

[env:n79e854] platform = intel_mcs51 board = n79e854


You can override default Generic N79E854 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `n79e854.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:n79e854] platform = intel_mcs51 board = n79e854

; change microcontroller board_build.mcu = n79e854

; change MCU frequency board_build.f_cpu = 22118400L


### Debugging 🌸

`piodebug` currently does not support Generic N79E854 board.

---

## <hotpink>Generic N79E855</hotpink> 🦋

### Contents

- Generic N79E855
  - Hardware
  - Configuration
  - Debugging

okay bestie, hardware time for the **N79E855** ✨ the `platform_intel_mcs51` platform is where it lives: the Intel MCS-51 (aka the 8051, and you *know* her) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (uC) series that Intel dropped way back in 1980 for embedded systems. vintage queen behavior, honestly 💅

specs for the `N79E855`, laid out pretty:

- **Microcontroller**: `N79E855`
- **Frequency**: `22MHz`
- **Flash**: `16KB`
- **RAM**: `512B`
- **Vendor**: `Nuvoton`

## Configuration

use the `n79e855` ID for the `projectconf_env_board` option inside `projectconf`, periodt:

[env:n79e855] platform = intel_mcs51 board = n79e855


and bestie you can override the default Generic N79E855 settings per build environment with the `board_***` option, where `***` is a JSON object path from the board manifest `n79e855.json`. think `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:n79e855] platform = intel_mcs51 board = n79e855

; change microcontroller board_build.mcu = n79e855

; change MCU frequency board_build.f_cpu = 22118400L


## Debugging

`piodebug` currently does not support Generic N79E855 board. no notes, just disappointment 😭

---

# 🦋 Generic STC15F204EA 🦋

## Contents

- Generic STC15F204EA
  - Hardware
  - Configuration
  - Debugging

## Hardware

same platform, `platform_intel_mcs51`: the Intel MCS-51 (commonly termed 8051) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (uC) series developed by Intel in 1980 for use in embedded systems. the lore is unhinged and we respect it 👑

the `STC15F204EA` deets:

- **Microcontroller**: `STC15F204EA`
- **Frequency**: `11MHz`
- **Flash**: `4KB`
- **RAM**: `256B`
- **Vendor**: `STC`

## Configuration

please use the `stc15f204ea` ID for `projectconf_env_board` in `projectconf`:

[env:stc15f204ea] platform = intel_mcs51 board = stc15f204ea


you can override the default Generic STC15F204EA settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `stc15f204ea.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 🌸

[env:stc15f204ea] platform = intel_mcs51 board = stc15f204ea

; change microcontroller board_build.mcu = stc15f204ea

; change MCU frequency board_build.f_cpu = 11059200L


## Debugging

`piodebug` currently does not support Generic STC15F204EA board. rip 💀

---

# 🎀 Generic STC15F2K60S2 🎀

## Contents

- Generic STC15F2K60S2
  - Hardware
  - Configuration
  - Debugging

## Hardware

`platform_intel_mcs51`, the same iconic platform: the Intel MCS-51 (commonly termed 8051) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (uC) series developed by Intel in 1980 for use in embedded systems. she's been booked and busy since the 80s fr fr 💜

`STC15F2K60S2` stats:

- **Microcontroller**: `STC15F2K60S2`
- **Frequency**: `6MHz`
- **Flash**: `60KB`
- **RAM**: `2KB`
- **Vendor**: `STC`

## Configuration

please use the `stc15f2k60s2` ID for the `projectconf_env_board` option in `projectconf`:

[env:stc15f2k60s2] platform = intel_mcs51 board = stc15f2k60s2


you can override the default Generic STC15F2K60S2 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `stc15f2k60s2.json`. e.g. `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:stc15f2k60s2] platform = intel_mcs51 board = stc15f2k60s2

; change microcontroller board_build.mcu = stc15f2k60s2

; change MCU frequency board_build.f_cpu = 6000000L


## Debugging

`piodebug` currently does not support Generic STC15F2K60S2 board. not the vibe 😭

---

# 🌈 Generic STC15W204S 🌈

## Contents

- Generic STC15W204S
  - Hardware
  - Configuration
  - Debugging

## Hardware

`platform_intel_mcs51` again, bestie: the Intel MCS-51 (commonly termed 8051) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (uC) series developed by Intel in 1980 for use in embedded systems. a classic that never misses ⭐

`STC15W204S` breakdown:

- **Microcontroller**: `STC15W204S`
- **Frequency**: `11MHz`
- **Flash**: `4KB`
- **RAM**: `256B`
- **Vendor**: `STC`

## Configuration

please use the `stc15w204s` ID for the `projectconf_env_board` option in `projectconf`:

[env:stc15w204s] platform = intel_mcs51 board = stc15w204s


you can override the default Generic STC15W204S settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `stc15w204s.json`. like `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:stc15w204s] platform = intel_mcs51 board = stc15w204s

; change microcontroller board_build.mcu = stc15w204s

; change MCU frequency board_build.f_cpu = 11059200L


## Debugging

`piodebug` currently does not support Generic STC15W204S board. sad girl hours 🙈

---

# 🧚 Generic STC15W404AS 🧚

## Contents

- Generic STC15W404AS
  - Hardware
  - Configuration
  - Debugging

## Hardware

and we're back at `platform_intel_mcs51`: the Intel MCS-51 (commonly termed 8051) is an internally Harvard architecture, complex instruction set computer (CISC) instruction set, single chip microcontroller (uC) series developed by Intel in 1980 for use in embedded systems. she's giving timeless, she's giving legacy 🔥

`STC15W404AS` facts:

- **Microcontroller**: `STC15W404AS`
- **Frequency**: `11MHz`
- **Flash**: `4KB`
- **RAM**: `512B`
- **Vendor**: `STC`

## Configuration

please use the `stc15w404as` ID for the `projectconf_env_board` option in `projectconf`:

[env:stc15w404as] platform = intel_mcs51 board = stc15w404as


you can override the default Generic STC15W404AS settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `stc15w404as.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:stc15w404as] platform = intel_mcs51 board = stc15w404as

; change microcontroller board_build.mcu = stc15w404as

; change MCU frequency board_build.f_cpu = 11059200L


## Debugging

`piodebug` currently does not support Generic STC15W404AS board. 💀

---

# 👑 Generic STC15W408AS 👑

## Contents

- Generic STC15W408AS
  - Hardware
  - Configuration
  - Debugging

### ✨ Hardware ✨

<pink>Platform `platform_intel_mcs51`</pink>: bestie, the <yellow>Intel MCS-51</yellow> (aka the 8051, iykyk) is an internally <lavender>Harvard architecture</lavender>, <cyan>complex instruction set computer (CISC)</cyan> instruction set, single chip microcontroller (uC) series that Intel dropped in <green>1980</green> for embedded systems. iconic behavior fr fr 💅

- **Microcontroller** — `STC15W408AS`
- **Frequency** — `11MHz`
- **Flash** — `8KB`
- **RAM** — `512B`
- **Vendor** — `STC`

---

### 🌸 Configuration 🌸

okay so pls use the <hotpink>`stc15w408as`</hotpink> ID for the `projectconf_env_board` option in projectconf:

[env:stc15w408as] platform = intel_mcs51 board = stc15w408as


you can override the default <purple>Generic STC15W408AS</purple> settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `stc15w408as.json`. like `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:stc15w408as] platform = intel_mcs51 board = stc15w408as

; change microcontroller board_build.mcu = stc15w408as

; change MCU frequency board_build.f_cpu = 11059200L


---

### 🦋 Debugging 🦋

ngl `piodebug` currently does <red>not</red> support the Generic STC15W408AS board. sad girl hours 😭

---

## 👑 Generic STC89C52RC 👑

### 📜 Contents 📜

- Generic STC89C52RC
  - Hardware
  - Configuration
  - Debugging

### ✨ Hardware ✨

<pink>Platform `platform_intel_mcs51`</pink>: the <yellow>Intel MCS-51</yellow> (commonly termed 8051) is an internally <lavender>Harvard architecture</lavender>, <cyan>complex instruction set computer (CISC)</cyan> instruction set, single chip microcontroller (uC) series developed by Intel in <green>1980</green> for use in embedded systems. the way this chip has been carrying embedded since 1980 is giving main character energy ⭐

- **Microcontroller** — `STC89C52RC`
- **Frequency** — `11MHz`
- **Flash** — `8KB`
- **RAM** — `512B`
- **Vendor** — `STC`

### 🌸 Configuration 🌸

use the <hotpink>`stc89c52rc`</hotpink> ID for the `projectconf_env_board` option in projectconf:

[env:stc89c52rc] platform = intel_mcs51 board = stc89c52rc


you can override default <purple>Generic STC89C52RC</purple> settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `stc89c52rc.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:stc89c52rc] platform = intel_mcs51 board = stc89c52rc

; change microcontroller board_build.mcu = stc89c52rc

; change MCU frequency board_build.f_cpu = 11059200L


### 🦋 Debugging 🦋

`piodebug` currently does <red>not</red> support the Generic STC89C52RC board. periodt 💀

---

## 🧚 Kendryte K210 🧚

### 🌈 Sipeed MAIX BiT 🌈

### 📜 Contents 📜

- Sipeed MAIX BiT
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### ✨ Hardware ✨

<pink>Platform `platform_kendryte210`</pink>: the <yellow>Kendryte K210</yellow> is an <rainbow>AI capable RISCV64 dual core SoC</rainbow>. literally so much power in such a tiny vibe check 🔥

- **Microcontroller** — `K210`
- **Frequency** — `400MHz`
- **Flash** — `16MB`
- **RAM** — `6MB`
- **Vendor** — `Sipeed`

### 🌸 Configuration 🌸

use the <hotpink>`sipeed-maix-bit`</hotpink> ID for the `projectconf_env_board` option in projectconf:

[env:sipeed-maix-bit] platform = kendryte210 board = sipeed-maix-bit


you can override default <purple>Sipeed MAIX BiT</purple> settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sipeed-maix-bit.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 💜

[env:sipeed-maix-bit] platform = kendryte210 board = sipeed-maix-bit

; change microcontroller board_build.mcu = K210

; change MCU frequency board_build.f_cpu = 400000000L


### 💅 Uploading 💅

Sipeed MAIX BiT supports the next uploading protocols:

- `iot-bus-jtag`
- `jlink`
- `kflash`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `sipeed-rv-debugger`
- `tumpa`

default protocol is <cyan>`kflash`</cyan> ✨

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sipeed-maix-bit] platform = kendryte210 board = sipeed-maix-bit

upload_protocol = kflash


### 🦋 Debugging 🦋

`piodebug` — the <rainbow>"1-click" solution</rainbow> for debugging with a zero configuration. no cap, it's that girl 🎀

> ⚠️ **WARNING:** you will need to install debug tool drivers depending on your system. pls click on the compatible debug tool below for the further instructions and configuration information. don't skip this bestie 🙈

you can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in projectconf.

<red>Sipeed MAIX BiT does not have on-board debug probe and IS NOT READY for debugging.</red> you will need to use/buy one of the external probes listed below 😭

- **`debugging_tool_iot-bus-jtag`** — On-board: (none) — Default: **Yes**
- **`debugging_tool_jlink`** — On-board: (none) — Default: (none)
- **`debugging_tool_minimodule`** — On-board: (none) — Default: (none)
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: (none) — Default: (none)
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: (none) — Default: (none)
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: (none) — Default: (none)
- **`debugging_tool_olimex-jtag-tiny`** — On-board: (none) — Default: (none)
- **`debugging_tool_sipeed-rv-debugger`** — On-board: (none) — Default: (none)
- **`debugging_tool_tumpa`** — On-board: (none) — Default: (none)

---

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. 💖
- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK without OS support
- **`framework_kendryte-freertos-sdk`** — Kendryte SDK with FreeRTOS support

---

## 🦋 Sipeed MAIX GO 🦋

### Contents

- Sipeed MAIX GO
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

### Configuration

### Uploading

### Debugging

### Frameworks

## 💖 Hardware 💖

<pink>Platform</pink> `platform_kendryte210`: the <purple>Kendryte K210</purple> is an AI-capable <cyan>RISCV64</cyan> dual core SoC. like. it does AI. on a microcontroller. bestie that's not a flex that's a whole personality 💅

- **Microcontroller** — `K210`
- **Frequency** — `400MHz`
- **Flash** — `16MB`
- **RAM** — `6MB`
- **Vendor** — `Sipeed`

---

## 🎀 Configuration 🎀

okay so for the `projectconf_env_board` option in `projectconf`, please use the <hotpink>`sipeed-maix-go`</hotpink> ID:

[env:sipeed-maix-go] platform = kendryte210 board = sipeed-maix-go


You can override the default Sipeed MAIX GO settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sipeed-maix-go.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:sipeed-maix-go] platform = kendryte210 board = sipeed-maix-go

; change microcontroller board_build.mcu = K210

; change MCU frequency board_build.f_cpu = 400000000L


---

## 🌸 Uploading 🌸

Sipeed MAIX GO supports the next uploading protocols:

- `iot-bus-jtag`
- `jlink`
- `kflash`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `sipeed-rv-debugger`
- `tumpa`

Default protocol is <mint>`kflash`</mint> — she's the main character, obviously 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sipeed-maix-go] platform = kendryte210 board = sipeed-maix-go

upload_protocol = kflash


---

## 🦋 Debugging 🦋

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally one click. no cap. 🫶

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<purple>Sipeed MAIX GO</purple> does **not** have an on-board debug probe and **IS NOT READY for debugging**. 😭 You will need to use/buy one of the external probes listed below.

Compatible tools:

- **`debugging_tool_iot-bus-jtag`** — On-board: *(none)*, Default: <green>**Yes**</green>
- **`debugging_tool_jlink`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_minimodule`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_olimex-arm-usb-ocd-h`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_olimex-arm-usb-tiny-h`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_olimex-jtag-tiny`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_sipeed-rv-debugger`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_tumpa`** — On-board: *(none)*, Default: *(none)*

---

## 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving ✨limitless creativity✨
- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK without OS support
- **`framework_kendryte-freertos-sdk`** — Kendryte SDK with FreeRTOS support

---

# 👑 Sipeed MAIX ONE DOCK 👑

## Contents

- Sipeed MAIX ONE DOCK
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💜 Hardware 💜

<pink>Platform</pink> `platform_kendryte210`: the <purple>Kendryte K210</purple> is an AI-capable <cyan>RISCV64</cyan> dual core SoC.

- **Microcontroller** — `K210`
- **Frequency** — `400MHz`
- **Flash** — `16MB`
- **RAM** — `6MB`
- **Vendor** — `Sipeed`

---

## 🎀 Configuration 🎀

Please use the <hotpink>`sipeed-maix-one-dock`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:sipeed-maix-one-dock] platform = kendryte210 board = sipeed-maix-one-dock


You can override the default Sipeed MAIX ONE DOCK settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sipeed-maix-one-dock.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc.

[env:sipeed-maix-one-dock] platform = kendryte210 board = sipeed-maix-one-dock

; change microcontroller board_build.mcu = K210

; change MCU frequency board_build.f_cpu = 400000000L


---

## 🌸 Uploading 🌸

Sipeed MAIX ONE DOCK supports the next uploading protocols:

- `iot-bus-jtag`
- `jlink`
- `kflash`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `sipeed-rv-debugger`
- `tumpa`

Default protocol is <mint>`kflash`</mint> 🫶

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sipeed-maix-one-dock] platform = kendryte210 board = sipeed-maix-one-dock

upload_protocol = kflash


---

## 🦋 Debugging 🦋

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed, honestly.

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>Sipeed MAIX ONE DOCK</pink> does **not** have an on-board debug probe and **IS NOT READY for debugging** 😭. You will need to use/buy one of the external probes listed below, bestie.

Here's the compatible-tools tea 🫖 — the columns are Compatible Tools, On-board, and Default:

- **`debugging_tool_iot-bus-jtag`** — not on-board, **Default: Yes** ✨
- **`debugging_tool_jlink`** — not on-board, not the default
- **`debugging_tool_minimodule`** — not on-board, not the default
- **`debugging_tool_olimex-arm-usb-ocd`** — not on-board, not the default
- **`debugging_tool_olimex-arm-usb-ocd-h`** — not on-board, not the default
- **`debugging_tool_olimex-arm-usb-tiny-h`** — not on-board, not the default
- **`debugging_tool_olimex-jtag-tiny`** — not on-board, not the default
- **`debugging_tool_sipeed-rv-debugger`** — not on-board, not the default
- **`debugging_tool_tumpa`** — not on-board, not the default

---

## 🧩 Frameworks

Okay so the frameworks for this board, one by one, no skips 💅:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *maker era* 🎀
- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK without OS support
- **`framework_kendryte-freertos-sdk`** — Kendryte SDK with FreeRTOS support

---

## 🦋 Sipeed MAIXDUINO

### 📜 Contents

- Sipeed MAIXDUINO
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

### 🔧 Hardware

Platform <purple>`platform_kendryte210`</purple>: Kendryte K210 is an AI capable RISCV64 dual core SoC. main character silicon fr fr 🔥

- **Microcontroller** — `K210`
- **Frequency** — `400MHz`
- **Flash** — `16MB`
- **RAM** — `6MB`
- **Vendor** — `Sipeed`

### ⚙️ Configuration

Please use <hotpink>`sipeed-maixduino`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:sipeed-maixduino] platform = kendryte210 board = sipeed-maixduino


You can override default Sipeed MAIXDUINO settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `sipeed-maixduino.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. so much power bestie ✨

[env:sipeed-maixduino] platform = kendryte210 board = sipeed-maixduino

; change microcontroller board_build.mcu = K210

; change MCU frequency board_build.f_cpu = 400000000L


### ⬆️ Uploading

Sipeed MAIXDUINO supports the next uploading protocols:

- `iot-bus-jtag`
- `jlink`
- `kflash`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `sipeed-rv-debugger`
- `tumpa`

Default protocol is <green>`kflash`</green> 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:sipeed-maixduino] platform = kendryte210 board = sipeed-maixduino

upload_protocol = kflash


### 🐛 Debugging

<pink>`piodebug`</pink> - "1-click" solution for debugging with a zero configuration. zero config, zero stress, we love to see it 💖

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<pink>Sipeed MAIXDUINO</pink> does not have on-board debug probe and **IS NOT READY for debugging** 😭. You will need to use/buy one of external probe listed below.

- **`debugging_tool_iot-bus-jtag`** — not on-board, **Default: Yes** ✨
- **`debugging_tool_jlink`** — not on-board, not the default
- **`debugging_tool_minimodule`** — not on-board, not the default
- **`debugging_tool_olimex-arm-usb-ocd`** — not on-board, not the default
- **`debugging_tool_olimex-arm-usb-ocd-h`** — not on-board, not the default
- **`debugging_tool_olimex-arm-usb-tiny-h`** — not on-board, not the default
- **`debugging_tool_olimex-jtag-tiny`** — not on-board, not the default
- **`debugging_tool_sipeed-rv-debugger`** — not on-board, not the default
- **`debugging_tool_tumpa`** — not on-board, not the default

---

### ✨ Frameworks ✨

Okay bestie, here's the framework menu for this one, and it's giving *range* 💅

- **`framework_arduino`** — the Arduino Wiring-based Framework, which allows writing cross-platform software to control devices attached to a wide range of Arduino boards so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Iconic behavior honestly 🎀
- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK without OS support. Raw. Bare metal. No OS, no cap.
- **`framework_kendryte-freertos-sdk`** — Kendryte SDK with FreeRTOS support, so it's got a real scheduler and everything 🦋

---

## 🌸 Sipeed MF1 MF1 🌸

### 📋 Contents

- Sipeed MF1 MF1
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_kendryte210`: the Kendryte K210 is an AI capable RISCV64 dual core SoC. Yes bestie, **AI capable**, main character energy fr fr 👑

- **Microcontroller** — `K210`
- **Frequency** — `400MHz`
- **Flash** — `16MB`
- **RAM** — `6MB`
- **Vendor** — `Sipeed`

### ⚙️ Configuration

Please use `sipeed-MF1` as the ID for the `projectconf_env_board` option in `projectconf`:

[env:sipeed-MF1] platform = kendryte210 board = sipeed-MF1


You can override the default Sipeed MF1 MF1 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sipeed-MF1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Like so:

[env:sipeed-MF1] platform = kendryte210 board = sipeed-MF1

; change microcontroller board_build.mcu = K210

; change MCU frequency board_build.f_cpu = 400000000L


### ⬆️ Uploading

Sipeed MF1 MF1 supports the next uploading protocols, and it's a whole list bestie, get comfy:

- `iot-bus-jtag`
- `jlink`
- `kflash`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `sipeed-rv-debugger`
- `tumpa`

The default protocol is `kflash` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:sipeed-MF1] platform = kendryte210 board = sipeed-MF1

upload_protocol = kflash


### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. No setup, just vibes.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Sipeed MF1 MF1 does not have an on-board debug probe and **IS NOT READY** for debugging 😭 You will need to use/buy one of the external probes listed below.

- `debugging_tool_iot-bus-jtag` — on-board: *(none)*, default: **Yes**
- `debugging_tool_jlink` — on-board: *(none)*, default: *(none)*
- `debugging_tool_minimodule` — on-board: *(none)*, default: *(none)*
- `debugging_tool_olimex-arm-usb-ocd` — on-board: *(none)*, default: *(none)*
- `debugging_tool_olimex-arm-usb-ocd-h` — on-board: *(none)*, default: *(none)*
- `debugging_tool_olimex-arm-usb-tiny-h` — on-board: *(none)*, default: *(none)*
- `debugging_tool_olimex-jtag-tiny` — on-board: *(none)*, default: *(none)*
- `debugging_tool_sipeed-rv-debugger` — on-board: *(none)*, default: *(none)*
- `debugging_tool_tumpa` — on-board: *(none)*, default: *(none)*

### 🧚 Frameworks

- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK without OS support
- **`framework_kendryte-freertos-sdk`** — Kendryte SDK with FreeRTOS support

---

## 🌈 Lattice iCE40 🌈

### 🦋 IceZUM Alhambra FPGA 🦋

### 📋 Contents

- IceZUM Alhambra FPGA
  - Hardware
  - Configuration
  - Debugging

### 🔧 Hardware

Platform `platform_lattice_ice40`: the iCE40 family of ultra-low power, non-volatile FPGAs has five devices with densities ranging from 384 to 7680 Look-Up Tables (LUTs). In addition to LUT-based, low-cost programmable logic, these devices feature Embedded Block RAM (EBR), Non-volatile Configuration Memory (NVCM) and Phase Locked Loops (PLLs). These features allow the devices to be used in low-cost, high-volume consumer and system applications. Tiny chip, huge slay 💅

- **Microcontroller** — `ICE40-HX1K-TQ144`
- **Frequency** — `12MHz`
- **Flash** — `32KB`
- **RAM** — `32KB`
- **Vendor** — `FPGAwars`

### ⚙️ Configuration

Please use `icezum` as the ID for the `projectconf_env_board` option in `projectconf`:

[env:icezum] platform = lattice_ice40 board = icezum


You can override the default IceZUM Alhambra FPGA settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `icezum.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:icezum] platform = lattice_ice40 board = icezum

; change microcontroller board_build.mcu = iCE40-HX1K-TQ144

; change MCU frequency board_build.f_cpu = 12000000L


---

## 💀 Debugging

ok so <red>bad news bestie</red>: `piodebug` currently does <hotpink>**not**</hotpink> support IceZUM Alhambra FPGA board. like. at all. no cap. 😭

---

# 🦋 LATTICE iCEstick FPGA EVALUATION KIT 🦋

## 🎀 Contents

- Lattice iCEstick FPGA Evaluation Kit

  - Hardware

  - Configuration

  - Debugging

---

## 🔧 Hardware

<purple>Platform `platform_lattice_ice40`:</purple> the iCE40 family of ultra-low power, non-volatile FPGAs has <mint>five devices</mint> with densities ranging from <yellow>384</yellow> to <yellow>7680</yellow> Look-Up Tables (LUTs). and like, on top of that LUT-based low-cost programmable logic, these devices also feature <cyan>Embedded Block RAM (EBR)</cyan>, <cyan>Non-volatile Configuration Memory (NVCM)</cyan> and <cyan>Phase Locked Loops (PLLs)</cyan> ✨ — which is literally why they can be used in low-cost, high-volume consumer and system applications. it's giving versatile. it's giving affordable. 💅

- **Microcontroller** — `ICE40-HX1K-TQ144`
- **Frequency** — `12MHz`
- **Flash** — `32KB`
- **RAM** — `32KB`
- **Vendor** — Lattice

---

## ⚙️ Configuration

bestie pls use the <hotpink>`icestick`</hotpink> ID for the `projectconf_env_board` option inside `projectconf` 🫶:

[env:icestick] platform = lattice_ice40 board = icestick


and you can <purple>override</purple> the default Lattice iCEstick FPGA Evaluation Kit settings per build environment using the `board_***` option — where `***` is a JSON object path from the board manifest `icestick.json` 👑. for example `board_build.mcu`, `board_build.f_cpu`, etc. etc. slay.

[env:icestick] platform = lattice_ice40 board = icestick

; change microcontroller board_build.mcu = iCE40-HX1K-TQ144

; change MCU frequency board_build.f_cpu = 12000000L


---

## 🙈 Debugging

and yeah, same story here: `piodebug` currently does <red>**not**</red> support Lattice iCEstick FPGA Evaluation Kit board. tragic, I know. 💀

---

# 🌈 LINUX ARM 🌈

# 🍓 Raspberry Pi 1 Model B 🍓

## 🎀 Contents

- Raspberry Pi 1 Model B

  - Hardware

  - Configuration

  - Debugging

  - Frameworks

---

## 🔧 Hardware

<purple>Platform `platform_linux_arm`:</purple> Linux ARM is a Unix-like and mostly POSIX-compliant computer operating system (OS) assembled under the model of free and open-source software development and distribution 🦋. and the cute lil trick is that using a host OS (`Mac OS X`, `Linux ARM`) you can build a <mint>native application</mint> for the Linux ARM platform. obsessed.

- **Microcontroller** — `BCM2835`
- **Frequency** — `700MHz`
- **Flash** — `512MB`
- **RAM** — `512MB`
- **Vendor** — Raspberry Pi

---

## ⚙️ Configuration

pls pls pls use the <hotpink>`raspberrypi_1b`</hotpink> ID for the `projectconf_env_board` option in `projectconf` 💖:

[env:raspberrypi_1b] platform = linux_arm board = raspberrypi_1b


and again, you can override the default Raspberry Pi 1 Model B settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `raspberrypi_1b.json` ✨. like `board_build.mcu`, `board_build.f_cpu`, etc.

[env:raspberrypi_1b] platform = linux_arm board = raspberrypi_1b

; change microcontroller board_build.mcu = bcm2835

; change MCU frequency board_build.f_cpu = 700000000L


---

## 🙈 Debugging

you already know what I'm gonna say: `piodebug` currently does <red>**not**</red> support Raspberry Pi 1 Model B board. 😭

---

## 🧚 Frameworks

- **`framework_wiringpi`** — <cyan>WiringPi</cyan> is a GPIO access library written in C for the `BCM2835` used in the Raspberry Pi 🍓. It's designed to be familiar to people who have used the Arduino "wiring" system. iykyk.

---

# 🍓 Raspberry Pi 2 Model B 🍓

## 🎀 Contents

- Raspberry Pi 2 Model B

  - Hardware

  - Configuration

  - Debugging

  - Frameworks

---

## 🔧 Hardware

<purple>Platform `platform_linux_arm`:</purple> Linux ARM is a Unix-like and mostly POSIX-compliant computer operating system (OS) assembled under the model of free and open-source software development and distribution 🦋. Using a host OS (`Mac OS X`, `Linux ARM`) you can build a <mint>native application</mint> for the Linux ARM platform. iconic behaviour fr fr.

- **Microcontroller** — `BCM2836`
- **Frequency** — `900MHz`
- **Flash** — `1GB`
- **RAM** — `1GB`
- **Vendor** — Raspberry Pi

---

## ⚙️ Configuration

use the <hotpink>`raspberrypi_2b`</hotpink> ID for the `projectconf_env_board` option in `projectconf` 🫶:

[env:raspberrypi_2b] platform = linux_arm board = raspberrypi_2b


override the default Raspberry Pi 2 Model B settings per build environment with the `board_***` option, where `***` is a JSON object path from the board manifest `raspberrypi_2b.json` ✨ — `board_build.mcu`, `board_build.f_cpu`, etc.

[env:raspberrypi_2b] platform = linux_arm board = raspberrypi_2b

; change microcontroller board_build.mcu = bcm2836

; change MCU frequency board_build.f_cpu = 900000000L


---

## 🙈 Debugging

`piodebug` currently does <red>**not**</red> support Raspberry Pi 2 Model B board. the way that's just how it is. 💀

---

## 🧚 Frameworks

- **`framework_wiringpi`** — <cyan>WiringPi</cyan> is a GPIO access library written in C for the `BCM2835` used in the Raspberry Pi 🍓. It's designed to be familiar to people who have used the Arduino "wiring" system.

---

# 🍓 Raspberry Pi 3 Model B 🍓

## 🎀 Contents

- Raspberry Pi 3 Model B

  - Hardware

  - Configuration

  - Debugging

  - Frameworks

---

## 🔧 Hardware

<purple>Platform `platform_linux_arm`:</purple> Linux ARM is a Unix-like and mostly POSIX-compliant computer operating system (OS) assembled under the model of free and open-source software development and distribution 🦋. Using a host OS (`Mac OS X`, `Linux ARM`) you can build a <mint>native application</mint> for the Linux ARM platform. main character platform energy ngl.

- **Microcontroller** — `BCM2837`
- **Frequency** — `1200MHz`
- **Flash** — `1GB`
- **RAM** — `1GB`
- **Vendor** — Raspberry Pi

---

## ⚙️ Configuration

pls use the <hotpink>`raspberrypi_3b`</hotpink> ID for the `projectconf_env_board` option in `projectconf` 💖:

[env:raspberrypi_3b] platform = linux_arm board = raspberrypi_3b


You can override default Raspberry Pi 3 Model B settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `raspberrypi_3b.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:raspberrypi_3b] platform = linux_arm board = raspberrypi_3b

; change microcontroller board_build.mcu = bcm2837

; change MCU frequency board_build.f_cpu = 1200000000L


## ✨ Debugging ✨

`piodebug` currently does not support Raspberry Pi 3 Model B board. <pink>it's giving "not yet, bestie"</pink> 😭

## 🎀 Frameworks 🎀

- **`framework_wiringpi`** — WiringPi is a GPIO access library written in C for the BCM2835 used in the Raspberry Pi. It's designed to be familiar to people who have used the Arduino "wiring" system. <cyan>iconic behavior fr fr</cyan>

---

## 🦋 Raspberry Pi Zero 🦋

### 🌸 Contents 🌸

- Raspberry Pi Zero
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 👑 Hardware 👑

Platform `platform_linux_arm`: Linux ARM is a Unix-like and mostly POSIX-compliant computer operating system (OS) assembled under the model of free and open-source software development and distribution. Using host OS (Mac OS X, Linux ARM) you can build native application for Linux ARM platform. <purple>no cap, that's the whole vibe</purple> ✨

- **Microcontroller** — BCM2835
- **Frequency** — 1000MHz
- **Flash** — 512MB
- **RAM** — 512MB
- **Vendor** — Raspberry Pi

### 💜 Configuration 💜

Please use `raspberrypi_zero` ID for `projectconf_env_board` option in `projectconf`:

[env:raspberrypi_zero] platform = linux_arm board = raspberrypi_zero


You can override default Raspberry Pi Zero settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `raspberrypi_zero.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:raspberrypi_zero] platform = linux_arm board = raspberrypi_zero

; change microcontroller board_build.mcu = bcm2835

; change MCU frequency board_build.f_cpu = 1000000000L


### 🙈 Debugging 🙈

`piodebug` currently does not support Raspberry Pi Zero board. <peach>sad girl hours, literally</peach> 😭

### ⭐ Frameworks ⭐

- **`framework_wiringpi`** — WiringPi is a GPIO access library written in C for the BCM2835 used in the Raspberry Pi. It's designed to be familiar to people who have used the Arduino "wiring" system. <mint>ate, no crumbs</mint> 💅

---

## 🔥 Maxim 32 🔥

## 🍓 MAX32620FTHR 🍓

### 🌈 Contents 🌈

- MAX32620FTHR
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### ✨ Hardware ✨

Platform `platform_maxim32`: Maxim's microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. <blue>main character energy tbh</blue> 👑

- **Microcontroller** — MAX32620FTHR
- **Frequency** — 96MHz
- **Flash** — 2MB
- **RAM** — 256KB
- **Vendor** — Maxim

### 🎀 Configuration 🎀

Please use `max32620fthr` ID for `projectconf_env_board` option in `projectconf`:

[env:max32620fthr] platform = maxim32 board = max32620fthr


You can override default MAX32620FTHR settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `max32620fthr.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:max32620fthr] platform = maxim32 board = max32620fthr

; change microcontroller board_build.mcu = max32620fthr

; change MCU frequency board_build.f_cpu = 96000000L


### 🦋 Uploading 🦋

MAX32620FTHR supports the next uploading protocols:

- `jlink`
- `mbed`

Default protocol is `mbed`. <cyan>the way it just defaults like that… so effortless</cyan> ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:max32620fthr] platform = maxim32 board = max32620fthr

upload_protocol = mbed


### 💜 Debugging 💜

`piodebug` - "1-click" solution for debugging with a zero configuration. <purple>obsessed, actually</purple>

> <red>**WARNING:**</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

MAX32620FTHR does not have on-board debug probe and **IS NOT READY for debugging**. You will need to use/buy one of external probe listed below. <peach>bestie you gotta go shopping, no cap</peach> 😭

- **Compatible Tools** — `debugging_tool_jlink`
  - **On-board** — (none)
  - **Default** — Yes

### 🌸 Frameworks 🌸

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <rainbow>this is a lot but it's all facts and it's all slay</rainbow> 💅

---

## 🧚 MAX32625MBED 🧚

### 💅 Contents 💅

- MAX32625MBED
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

okay so the platform here is `platform_maxim32`, and the whole vibe is that Maxim's microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications 💖. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. like, they really said "we do it all" and meant it. ✨

here's the spec rundown, bestie:

- **Microcontroller** — `MAX32625`
- **Frequency** — `96MHz`
- **Flash** — `512KB`
- **RAM** — `160KB`
- **Vendor** — `Maxim`

---

### 🎀 Configuration 🎀

use the `max32625mbed` ID for the `projectconf_env_board` option in `projectconf`, k? 💅

[env:max32625mbed] platform = maxim32 board = max32625mbed


and the way you can override default **MAX32625MBED** settings per build environment is with the `board_***` option, where `***` is a JSON object path from the board manifest `max32625mbed.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. iconic.

[env:max32625mbed] platform = maxim32 board = max32625mbed

; change microcontroller board_build.mcu = max32625

; change MCU frequency board_build.f_cpu = 96000000L


---

### 🩺 Debugging 🩺

lowkey a bummer but: `piodebug` currently does not support MAX32625MBED board. 😭

---

### 🧚 Frameworks 🧚

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. main character framework fr fr. 👑

---

## 🌸 MAX32625NEXPAQ 🌸

### Contents

- **MAX32625NEXPAQ**
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

platform is `platform_maxim32`, same as before — Maxim's microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications 🫶. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. no cap.

- **Microcontroller** — `MAX32625`
- **Frequency** — `96MHz`
- **Flash** — `512KB`
- **RAM** — `160KB`
- **Vendor** — `Maxim`

---

### 🎀 Configuration 🎀

for this one, please use the `max32625nexpaq` ID for the `projectconf_env_board` option in `projectconf`:

[env:max32625nexpaq] platform = maxim32 board = max32625nexpaq


and you can override default **MAX32625NEXPAQ** settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `max32625nexpaq.json`. think `board_build.mcu`, `board_build.f_cpu`, etc. yk the drill 💖.

[env:max32625nexpaq] platform = maxim32 board = max32625nexpaq

; change microcontroller board_build.mcu = max32625

; change MCU frequency board_build.f_cpu = 96000000L


---

### 🩺 Debugging 🩺

sad girl moment: `piodebug` currently does not support MAX32625NEXPAQ board. 💀

---

### 🧚 Frameworks 🧚

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. ✨

---

## 🦋 MAX32625PICO 🦋

### Contents

- **MAX32625PICO**
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

platform `platform_maxim32`, and yes it's the same beautiful story: Maxim's microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications 💜. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. periodt.

- **Microcontroller** — `MAX32625`
- **Frequency** — `96MHz`
- **Flash** — `512KB`
- **RAM** — `160KB`
- **Vendor** — `Maxim`

---

### 🎀 Configuration 🎀

use the `max32625pico` ID for the `projectconf_env_board` option in `projectconf`, bestie:

[env:max32625pico] platform = maxim32 board = max32625pico


you can override default **MAX32625PICO** settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `max32625pico.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 🌈

[env:max32625pico] platform = maxim32 board = max32625pico

; change microcontroller board_build.mcu = max32625

; change MCU frequency board_build.f_cpu = 96000000L


---

### 🩺 Debugging 🩺

and fr fr, `piodebug` currently does not support MAX32625PICO board. 🥲

## ✨ Frameworks ✨

okay so the framework lineup for this one:

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

# 💖 Maxim ARM mbed Enabled Development Platform for MAX32600 💖

## 🎀 Contents 🎀

- Maxim ARM mbed Enabled Development Platform for MAX32600
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🦋 Hardware 🦋

Platform `platform_maxim32`: Maxim's microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation.

The spec sheet, bestie:

- **Microcontroller** — `MAX32600`
- **Frequency** — `24MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Maxim`

---

## 🌸 Configuration 🌸

Please use `max32600mbed` ID for `projectconf_env_board` option in `projectconf`:

[env:max32600mbed] platform = maxim32 board = max32600mbed


You can override default Maxim ARM mbed Enabled Development Platform for MAX32600 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `max32600mbed.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:max32600mbed] platform = maxim32 board = max32600mbed

; change microcontroller board_build.mcu = max32600

; change MCU frequency board_build.f_cpu = 24000000L


---

## 🚀 Uploading 🚀

Maxim ARM mbed Enabled Development Platform for MAX32600 supports the next uploading protocols:

- `cmsis-dap`
- `mbed`

Default protocol is `mbed`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:max32600mbed] platform = maxim32 board = max32600mbed

upload_protocol = mbed


---

## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Maxim ARM mbed Enabled Development Platform for MAX32600 has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe.

Compatible tools, on-board status, and default status:

- `debugging_tool_cmsis-dap` — On-board: Yes — Default: Yes

---

## ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

# 🩺 Maxim Health Sensor Platform 🩺

## 💜 Contents 💜

- Maxim Health Sensor Platform
  - Hardware
  - Configuration
  - Uploading

- Debugging
- Frameworks

# 🛠️ Hardware

<purple>Platform</purple> `platform_maxim32`: Maxim's microcontrollers are giving low-power, efficient, and secure solutions for challenging embedded applications, no cap. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. <rainbow>iconic behavior honestly</rainbow> ✨

Here's the spec sheet bestie 👇

- **Microcontroller**: `MAX32620`
- **Frequency**: `96MHz`
- **Flash**: `2MB`
- **RAM**: `256KB`
- **Vendor**: `Maxim`

---

# ⚙️ Configuration

okay so for the `projectconf_env_board` option in projectconf, pls use the `max32620hsp` ID 💅

[env:max32620hsp] platform = maxim32 board = max32620hsp


You can override the default Maxim Health Sensor Platform settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `max32620hsp.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>the way it just lets you do that??</cyan> 🦋

[env:max32620hsp] platform = maxim32 board = max32620hsp

; change microcontroller board_build.mcu = max32620

; change MCU frequency board_build.f_cpu = 96000000L


---

# 📤 Uploading

Maxim Health Sensor Platform supports the next uploading protocols, bestie:

- `jlink`
- `mbed`

Default protocol is `mbed` 💖

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:max32620hsp] platform = maxim32 board = max32620hsp

upload_protocol = mbed


---

# 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <pink>zero config?? we love that for us</pink> 🎀

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in projectconf.

Maxim Health Sensor Platform does **not** have an on-board debug probe and is **NOT READY** for debugging 😭 You will need to use/buy one of the external probes listed below.

- **Compatible Tools**: `debugging_tool_jlink` — On-board: *(nope, nada)* — Default: **Yes** 👑

---

# 🧚 Frameworks

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <purple>a whole cookbook fr fr</purple> 🔥

---

# 👑 Maxim MAX32630FTHR Application Platform

## Contents

- Maxim MAX32630FTHR Application Platform
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## 🛠️ Hardware

<purple>Platform</purple> `platform_maxim32`: Maxim's microcontrollers are giving low-power, efficient, and secure solutions for challenging embedded applications, no cap. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. ✨

- **Microcontroller**: `MAX32630`
- **Frequency**: `96MHz`
- **Flash**: `2MB`
- **RAM**: `512KB`
- **Vendor**: `Maxim`

---

## ⚙️ Configuration

Please use the `max32630fthr` ID for the `projectconf_env_board` option in projectconf 💅

[env:max32630fthr] platform = maxim32 board = max32630fthr


You can override default Maxim MAX32630FTHR Application Platform settings per build environment using the `board_***` option, where `***` is a JSON object path from

JSON object path from board manifest `max32630fthr.json`. So like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:max32630fthr] platform = maxim32 board = max32630fthr

; change microcontroller board_build.mcu = max32630

; change MCU frequency board_build.f_cpu = 96000000L


---

## 🔧 Debugging

`piodebug` currently does <red>not</red> support Maxim MAX32630FTHR Application Platform board. 😭 bestie it's just not there yet, no cap.

---

## ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💖

---

# 👑 Maxim Wireless Sensor Node Demonstrator

## 🎀 Contents

- Maxim Wireless Sensor Node Demonstrator
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🌸 Hardware

Platform `platform_maxim32`: Maxim's microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. 🔋

- **Microcontroller** — `MAX32610`
- **Frequency** — `24MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — Maxim

## 💅 Configuration

Please use `maxwsnenv` ID for `projectconf_env_board` option in `projectconf`:

[env:maxwsnenv] platform = maxim32 board = maxwsnenv


You can override default Maxim Wireless Sensor Node Demonstrator settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `maxwsnenv.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:maxwsnenv] platform = maxim32 board = maxwsnenv

; change microcontroller board_build.mcu = max32610

; change MCU frequency board_build.f_cpu = 24000000L


## 🦋 Uploading

Maxim Wireless Sensor Node Demonstrator supports the next uploading protocols:

- `cmsis-dap`
- `mbed`

Default protocol is `mbed` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:maxwsnenv] platform = maxim32 board = maxwsnenv

upload_protocol = mbed


## 🔥 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. obsessed honestly 💅

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Maxim Wireless Sensor Node Demonstrator does not have on-board debug probe and **IS NOT READY** for debugging. 😭 You will need to use/buy one of external probe listed below.

- **`debugging_tool_cmsis-dap`** — On-board: *(blank)*, Default: **Yes**

## 🌈 Frameworks

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking

...a cookbook of <pink>hundreds</pink> of reusable peripheral and module libraries, all built on top of the SDK by the <purple>mbed Developer Community</purple>. like, an entire ecosystem just *sitting there* for you 🫶

---

# 🎀 SDT32620B

## 📚 Contents

okay bestie here's the whole vibe check of what's on this page, no skips:

- <cyan>SDT32620B</cyan>
- <cyan>Hardware</cyan>
- <cyan>Configuration</cyan>
- <cyan>Debugging</cyan>
- <cyan>Frameworks</cyan>

---

## 🔧 Hardware

<pink>Platform</pink> <hotpink>`platform_maxim32`</hotpink>: Maxim's microcontrollers are giving low-power, efficient, and secure solutions for those *challenging* embedded applications 💅 Maxim's processors embed cutting-edge technologies to secure data and intellectual property, plus proven analog circuitry for real-world applications, and battery-conserving low power operation. it's giving ✨engineered✨ fr fr.

and the specs, laid out for u:

- **Microcontroller** — `MAX32620IWG`
- **Frequency** — `96MHz`
- **Flash** — `2MB`
- **RAM** — `256KB`
- **Vendor** — `Sigma Delta Technologies`

---

## ⚙️ Configuration

Please use the <yellow>`sdt32620b`</yellow> ID for the <yellow>`projectconf_env_board`</yellow> option in projectconf, queen:

[env:sdt32620b] platform = maxim32 board = sdt32620b


ngl you can override the default SDT32620B settings **per build environment** using the `board_***` option — and `***` is a JSON object path straight out of the board manifest <lavender>`sdt32620b.json`</lavender>. For example: `board_build.mcu`, `board_build.f_cpu`, etc. iykyk 🔥

[env:sdt32620b] platform = maxim32 board = sdt32620b

; change microcontroller board_build.mcu = max32620iwg

; change MCU frequency board_build.f_cpu = 96000000L


like, one little line and you're a whole different MCU. main character energy honestly 👑

---

## 🐛 Debugging

> `piodebug` currently does not support the SDT32620B board.

yeah 😭 that's the whole thing. it's just not supported rn. don't come for me, i'm only the messenger 🫠

## ✨ Frameworks ✨

- **`framework_mbed`** — the mbed framework, bestie 💖 The mbed SDK was literally designed to give you *enough* hardware abstraction to be intuitive and concise, yet still powerful enough to build complex projects. It's built on top of the low-level ARM CMSIS APIs, so you can absolutely code down to the metal if you need to, no cap. And on top of RTOS, USB and Networking libraries, the mbed Developer Community has built a whole cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. Iconic behavior, honestly. 👑

---

## 🦋 SDT32625B Contents 🦋

- SDT32625B
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🌸 Hardware 🌸

Platform `platform_maxim32`: Maxim's microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. That's the vibe. ✨

- **Microcontroller** — `MAX32625ITK`
- **Frequency** — `96MHz`
- **Flash** — `512KB`
- **RAM** — `160KB`
- **Vendor** — `Sigma Delta Technologies`

### 💅 Configuration 💅

Please use `sdt32625b` ID for `projectconf_env_board` option in `projectconf`:

[env:sdt32625b] platform = maxim32 board = sdt32625b


You can override the default SDT32625B settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sdt32625b.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. Go off, customize your lil heart out 🫶

[env:sdt32625b] platform = maxim32 board = sdt32625b

; change microcontroller board_build.mcu = max32625itk

; change MCU frequency board_build.f_cpu = 96000000L


### 🔥 Debugging 🔥

`piodebug` currently does **not** support the SDT32625B board. 😭 F in the chat, bestie, no debugging here yet.

### 🌈 Frameworks 🌈

- **`framework_mbed`** — the mbed framework 💜 The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

## 🧚 Microchip PIC32 — 4D Systems PICadillo 35T 🧚

### 🎀 Contents 🎀

- 4D Systems PICadillo 35T
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### ⭐ Hardware ⭐

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! It's giving *main character energy* fr fr 💖

- **Microcontroller** — `32MX795F512L`
- **Frequency** — `80MHz`
- **Flash** — `508KB`
- **RAM** — `128KB`
- **Vendor** — `4D Systems`

### 💜 Configuration 💜

Please use `picadillo_35t` ID for `projectconf_env_board` option in `projectconf`:

[env:picadillo_35t] platform = microchippic32 board = picadillo_35t


You can override the default 4D Systems PICadillo 35T settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `picadillo_35t.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. Slay 🦋

[env:picadillo_35t]

platform = microchippic32 board = picadillo_35t

; change microcontroller board_build.mcu = 32MX795F512L

; change MCU frequency board_build.f_cpu = 80000000L


### Debugging

bestie. <yellow>`piodebug`</yellow> currently does **not** support 4D Systems PICadillo 35T board. that's the whole sentence. it's giving "we tried and we're being honest about it" 😭

### Frameworks

the frameworks this board can run, in a cute lil list bc we don't do tables in here:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## 🌸 DataStation Mini 🌸

### Contents

- DataStation Mini
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### Hardware

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! 🔥

the spec sheet, but make it a vibe check:

- Microcontroller: `32MX150F128C`
- Frequency: `40MHz`
- Flash: `120KB`
- RAM: `32KB`
- Vendor: `Makerology`

### Configuration

Please use <hotpink>`dsmini`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:dsmini] platform = microchippic32 board = dsmini


You can override default DataStation Mini settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `dsmini.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:dsmini] platform = microchippic32 board = dsmini

; change microcontroller board_build.mcu = 32MX150F128C

; change MCU frequency board_build.f_cpu = 40000000L


### Debugging

`piodebug` currently does not support DataStation Mini board. 💔 no notes.

### Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

---

## 🎀 Digilent Cerebot 32MX4 🎀

### Contents

- Digilent Cerebot 32MX4
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### Hardware

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! 🌈

spec sheet, iconic edition:

- Microcontroller: `32MX460F512L`
- Frequency: `80MHz`
- Flash: `508KB`
- RAM: `32KB`
- Vendor: `Digilent`

### Configuration

Please use <hotpink>`cerebot32mx4`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:cerebot32mx4] platform = microchippic32 board = cerebot32mx4


You can override default Digilent Cerebot 32MX4 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `cerebot32mx4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:cerebot32mx4] platform = microchippic32 board = cerebot32mx4

[env:cerebot32mx4] platform = microchippic32 board = cerebot32mx4

; change microcontroller board_build.mcu = 32MX460F512L

; change MCU frequency board_build.f_cpu = 80000000L


### 💀 Debugging

okay so real talk: `piodebug` currently does <red>**not**</red> support the Digilent Cerebot 32MX4 board. that's it, that's the whole note. no debug era for this one bestie, we mourn and move on 🫶

### 🧚 Frameworks

here's what you can build with on this board:

- **`framework_arduino`** — the Arduino Wiring-based Framework, aka the thing that lets you write cross-platform software to control devices attached to a <hotpink>wide range</hotpink> of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. main character framework energy fr fr ✨

---

## 🌸 Digilent Cerebot 32MX7

### 📋 Contents

- Digilent Cerebot 32MX7
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_microchippic32`: Microchip's 32-bit portfolio, rockin' the MIPS microAptiv or M4K core, offering high performance microcontrollers plus literally all the tools you need to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs. no cap 🔥

- **Microcontroller** — `32MX795F512L`
- **Frequency** — `80MHz`
- **Flash** — `508KB`
- **RAM** — `128KB`
- **Vendor** — `Digilent`

### ⚙️ Configuration

bestie, please use the `cerebot32mx7` ID for the `projectconf_env_board` option in `projectconf`:

[env:cerebot32mx7] platform = microchippic32 board = cerebot32mx7


You can override the default Digilent Cerebot 32MX7 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `cerebot32mx7.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:cerebot32mx7] platform = microchippic32 board = cerebot32mx7

; change microcontroller board_build.mcu = 32MX795F512L

; change MCU frequency board_build.f_cpu = 80000000L


### 💀 Debugging

`piodebug` currently does <red>**not**</red> support the Digilent Cerebot 32MX7 board. same sad story as its sibling, we simply vibe without debugging 🙈

### 🧚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework, which allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic, honestly 👑

---

## 🦋 Digilent OpenScope

### 📋 Contents

- Digilent OpenScope
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core, offering high performance microcontrollers and all the tools needed to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs. periodt 💜

- **Microcontroller** — `32MZ2048EFG124`
- **Frequency** — `200MHz`
- **Flash** — `1.98MB`
- **RAM** — `512KB`
- **Vendor** — `Digilent`

### ⚙️ Configuration

Please use the `openscope` ID for the `projectconf_env_board` option in `projectconf`:

[env:openscope] platform = microchippic32 board = openscope


You can override the default Digilent OpenScope settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `openscope.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌈

[env:openscope] platform = microchippic32 board = openscope

; change microcontroller board_build.mcu = 32MZ2048EFG124

; change MCU frequency board_build.f_cpu = 200000000L


<pink>okay that's the whole vibe for tweaking your OpenScope build</pink> ✨

### 🫶 Debugging

Not to be the bearer of bad news but… `piodebug` currently does not support Digilent OpenScope board. <purple>it's giving unsupported, bestie</purple> 💀

### 🌈 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 👑 Digilent chipKIT Cmod

### 📋 Contents

- Digilent chipKIT Cmod
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! <cyan>fr fr, it's a whole beast</cyan> 🦋

- **Microcontroller** — `32MX150F128D`
- **Frequency** — `40MHz`
- **Flash** — `124KB`
- **RAM** — `32KB`
- **Vendor** — `Digilent`

### ⚙️ Configuration

Please use `chipkit_cmod` ID for `projectconf_env_board` option in `projectconf`: <mint>iykyk</mint> 💅

[env:chipkit_cmod] platform = microchippic32 board = chipkit_cmod


You can override default Digilent chipKIT Cmod settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `chipkit_cmod.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <yellow>customize away, queen</yellow> ✨

[env:chipkit_cmod] platform = microchippic32 board = chipkit_cmod

; change microcontroller board_build.mcu = 32MX150F128D

; change MCU frequency board_build.f_cpu = 40000000L


### 🫶 Debugging

`piodebug` currently does not support Digilent chipKIT Cmod board. <purple>no debugging arc for this one, sadly</purple> 😭

### 🌈 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🌸 Digilent chipKIT DP32

### 📋 Contents

- Digilent chipKIT DP32
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! <cyan>same iconic platform energy</cyan> 💖

- **Microcontroller** — `32MX250F128B`
- **Frequency** — `40MHz`
- **Flash** — `120KB`
- **RAM** — `32KB`
- **Vendor** — `Digilent`

### ⚙️ Configuration

Please use `chipkit_dp32` ID for `projectconf_env_board` option in `projectconf`: <mint>periodt</mint> ✨

[env:chipkit_dp32] platform = microchippic32 board = chipkit_dp32


You can override default Digilent chipKIT DP32 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `chipkit_dp32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <yellow>go off and remix it, bestie</yellow> 🎀

[env:chipkit_dp32] platform = microchippic32 board = chipkit_dp32

; change microcontroller board_build.mcu = 32MX250F128B

; change MCU frequency board_build.f_cpu = 40000000L


### 🫶 Debugging

`piodebug` currently does not support Digilent chipKIT DP32 board. <purple>unsupported again, not me crying</purple> 😭

### 🌈 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🦋 Digilent chipKIT MAX32

### 📋 Contents

- Digilent chipKIT MAX32
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### Hardware 🌸

Platform `platform_microchippic32`: Microchip's 32-bit portfolio, packing a MIPS microAptiv or M4K core, serving up high-performance microcontrollers plus literally all the tools you need to build your embedded projects. PIC32 MCUs hand your app the processing power, the memory and the peripherals your design is asking for. <pink>It's giving "everything you need, bestie."</pink> ✨

- Microcontroller: `32MX795F512L`
- Frequency: `80MHz`
- Flash: `508KB`
- RAM: `128KB`
- Vendor: `Digilent`

### Configuration 🎀

Bestie, please use the `mega_pic32` ID for the `projectconf_env_board` option in `projectconf`:

[env:mega_pic32] platform = microchippic32 board = mega_pic32


You can override the default Digilent chipKIT MAX32 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mega_pic32.json`. Like, for example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:mega_pic32] platform = microchippic32 board = mega_pic32

; change microcontroller board_build.mcu = 32MX795F512L

; change MCU frequency board_build.f_cpu = 80000000L


### Debugging 💅

`piodebug` currently does not support the Digilent chipKIT MAX32 board. <pink>Not me finding out my fave debugger can't hang 💀</pink>

### Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## Digilent chipKIT MX3 🦋

### Contents 🍓

- Digilent chipKIT MX3
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### Hardware 🌸

Platform `platform_microchippic32`: Microchip's 32-bit portfolio, packing a MIPS microAptiv or M4K core, serving up high-performance microcontrollers plus literally all the tools you need to build your embedded projects. PIC32 MCUs hand your app the processing power, the memory and the peripherals your design is asking for. <purple>Main character silicon energy, no cap.</purple> ✨

- Microcontroller: `32MX320F128H`
- Frequency: `80MHz`
- Flash: `124KB`
- RAM: `16KB`
- Vendor: `Digilent`

### Configuration 🎀

Bestie, please use the `chipkit_mx3` ID for the `projectconf_env_board` option in `projectconf`:

[env:chipkit_mx3] platform = microchippic32 board = chipkit_mx3


You can override the default Digilent chipKIT MX3 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `chipkit_mx3.json`. For example: `board_build.mcu`, `board_build.f_cpu`, etc.

[env:chipkit_mx3] platform = microchippic32 board = chipkit_mx3

; change microcontroller board_build.mcu = 32MX320F128H

; change MCU frequency board_build.f_cpu = 80000000L


### Debugging 💅

`piodebug` currently does not support the Digilent chipKIT MX3 board. <pink>Sad girl hours fr fr 😭</pink>

### Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## Digilent chipKIT Pro MX4 👑

### Contents 🍓

- Digilent chipKIT Pro MX4
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### Hardware 🌸

Platform `platform_microchippic32`: Microchip's 32-bit portfolio, packing a MIPS microAptiv or M4K core, serving up high-performance microcontrollers plus literally all the tools you need to build your embedded projects. PIC32 MCUs hand your app the processing power, the memory and the peripherals your design is asking for. <cyan>Obsessed, honestly.</cyan> ✨

- Microcontroller: `32MX460F512L`
- Frequency: `80MHz`
- Flash: `508KB`
- RAM: `32KB`
- Vendor: `Digilent`

### Configuration 🎀

Bestie, please use the `chipkit_pro_mx4` ID for the `projectconf_env_board` option in `projectconf`:

[env:chipkit_pro_mx4] platform = microchippic32 board = chipkit_pro_mx4


You can override the default Digilent chipKIT Pro MX4 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `chipkit_pro_mx4.json`. For example: `board_build.mcu`, `board_build.f_cpu`, etc.

[env:chipkit_pro_mx4] platform = microchippic32 board = chipkit_pro_mx4

; change microcontroller board_build.mcu = 32MX460F512L

; change MCU frequency board_build.f_cpu = 80000000L


### Debugging 💅

`piodebug` currently does not support the Digilent chipKIT Pro MX4 board. <pink>Not the debug support ghosting us again 🙈</pink>

### Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## Digilent chipKIT Pro MX7 🧚

### Contents 🍓

- Digilent chipKIT Pro MX7
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### ✨ Hardware ✨

<purple>Platform</purple> `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! 💅

- **Microcontroller** — `32MX795F512L`
- **Frequency** — `80MHz`
- **Flash** — `508KB`
- **RAM** — `128KB`
- **Vendor** — `Digilent`

---

### 🎀 Configuration 🎀

Please use `chipkit_pro_mx7` ID for `projectconf_env_board` option in `projectconf`:

[env:chipkit_pro_mx7] platform = microchippic32 board = chipkit_pro_mx7


You can override default Digilent chipKIT Pro MX7 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `chipkit_pro_mx7.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:chipkit_pro_mx7] platform = microchippic32 board = chipkit_pro_mx7

; change microcontroller board_build.mcu = 32MX795F512L

; change MCU frequency board_build.f_cpu = 80000000L


---

### 💀 Debugging 💀

`piodebug` currently does not support Digilent chipKIT Pro MX7 board. <red>it's giving no debug for u bestie, sadly 😭</red>

---

### 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 👑 Digilent chipKIT UNO32 👑

### ✨ Contents ✨

- Digilent chipKIT UNO32
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### ✨ Hardware ✨

<purple>Platform</purple> `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! 💅

- **Microcontroller** — `32MX320F128H`
- **Frequency** — `80MHz`
- **Flash** — `124KB`
- **RAM** — `16KB`
- **Vendor** — `Digilent`

---

### 🎀 Configuration 🎀

Please use `uno_pic32` ID for `projectconf_env_board` option in `projectconf`:

[env:uno_pic32] platform = microchippic32 board = uno_pic32


You can override default Digilent chipKIT UNO32 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `uno_pic32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:uno_pic32] platform = microchippic32 board = uno_pic32

; change microcontroller board_build.mcu = 32MX320F128H

; change MCU frequency board_build.f_cpu = 80000000L


---

### 💀 Debugging 💀

`piodebug` currently does not support Digilent chipKIT UNO32 board. <red>again no debug, not me crying 😭</red>

---

### 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🦋 Digilent chipKIT WF32 🦋

### ✨ Contents ✨

- Digilent chipKIT WF32
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### ✨ Hardware ✨

<purple>Platform</purple> `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! 💅

- **Microcontroller** — `32MX695F512L`
- **Frequency** — `80MHz`
- **Flash** — `508KB`
- **RAM** — `128KB`
- **Vendor** — `Digilent`

---

### 🎀 Configuration 🎀

Please use `chipkit_wf32` ID for `projectconf_env_board` option in `projectconf`:

[env:chipkit_wf32] platform = microchippic32 board = chipkit_wf32


You can override default Digilent chipKIT WF32 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `chipkit_wf32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:chipkit_wf32] platform = microchippic32 board = chipkit_wf32

; change microcontroller board_build.mcu = 32MX695F512L

; change MCU frequency board_build.f_cpu = 80000000L


---

### 💀 Debugging 💀

`piodebug` currently does not support Digilent chipKIT WF32 board. <red>the no-debug saga continues fr fr 😭</red>

---

### 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🌈 Digilent chipKIT WiFire 🌈

### ✨ Contents ✨

- Digilent chipKIT WiFire
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### ✨ Hardware ✨

<purple>Platform</purple> `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! <rainbow>fr fr it's giving main character energy in silicon form 💅</rainbow>

- <cyan>Microcontroller</cyan> — `32MZ2048ECG100`
- <cyan>Frequency</cyan> — `200MHz`
- <cyan>Flash</cyan> — `1.98MB`
- <cyan>RAM</cyan> — `512KB`
- <cyan>Vendor</cyan> — `Digilent`

---

### ⚙️ Configuration ⚙️

Bestie, please use `chipkit_wifire` ID for `projectconf_env_board` option in `projectconf`:

[env:chipkit_wifire] platform = microchippic32 board = chipkit_wifire


You can override default Digilent chipKIT WiFire settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `chipkit_wifire.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <peach>like yes you can customize, it's your world 🌸</peach>

[env:chipkit_wifire] platform = microchippic32 board = chipkit_wifire

; change microcontroller board_build.mcu = 32MZ2048ECG100

; change MCU frequency board_build.f_cpu = 200000000L


---

### 🐛 Debugging 🐛

`piodebug` currently does not support Digilent chipKIT WiFire board. <red>no debug for u bestie, sorry 😭</red>

---

### 🧚 Frameworks 🧚

- <hotpink>`framework_arduino`</hotpink> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <lavender>iconic behavior honestly ✨</lavender>

---

## 💜 Digilent chipKIT uC32 💜

### 🎀 Contents 🎀

- Digilent chipKIT uC32

  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### ✨ Hardware ✨

<purple>Platform</purple> `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs!

- <cyan>Microcontroller</cyan> — `32MX340F512H`
- <cyan>Frequency</cyan> — `80MHz`
- <cyan>Flash</cyan> — `508KB`
- <cyan>RAM</cyan> — `32KB`
- <cyan>Vendor</cyan> — `Digilent`

---

### ⚙️ Configuration ⚙️

Please use `chipkit_uc32` ID for `projectconf_env_board` option in `projectconf`:

[env:chipkit_uc32] platform = microchippic32 board = chipkit_uc32


You can override default Digilent chipKIT uC32 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `chipkit_uc32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:chipkit_uc32] platform = microchippic32 board = chipkit_uc32

; change microcontroller board_build.mcu = 32MX340F512H

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🐛 Debugging 🐛

`piodebug` currently does not support Digilent chipKIT uC32 board. <red>still no debug, we stay unbothered 💀</red>

---

### 🧚 Frameworks 🧚

- <hotpink>`framework_arduino`</hotpink> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🌸 Element14 chipKIT Pi 🌸

### 🎀 Contents 🎀

- Element14 chipKIT Pi

  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### ✨ Hardware ✨

<purple>Platform</purple> `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs!

- <cyan>Microcontroller</cyan> — `32MX250F128B`
- <cyan>Frequency</cyan> — `40MHz`
- <cyan>Flash</cyan> — `120KB`
- <cyan>RAM</cyan> — `32KB`
- <cyan>Vendor</cyan> — `element14`

---

### ⚙️ Configuration ⚙️

Please use `chipkit_pi` ID for `projectconf_env_board` option in `projectconf`:

[env:chipkit_pi] platform = microchippic32 board = chipkit_pi


You can override default Element14 chipKIT Pi settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `chipkit_pi.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:chipkit_pi] platform = microchippic32 board = chipkit_pi

; change microcontroller board_build.mcu = 32MX250F128B

; change MCU frequency board_build.f_cpu = 40000000L


---

### 🐛 Debugging 🐛

`piodebug` currently does not support Element14 chipKIT Pi board. <red>piodebug said not today bestie 😭</red>

---

### 🧚 Frameworks 🧚

- <hotpink>`framework_arduino`</hotpink> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <mint>the range?? unmatched. 🫶</mint>

---

## 🦋 Fubarino Mini 🦋

### 🎀 Contents 🎀

- Fubarino Mini

  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### ✨ Hardware ✨

<purple>Platform</purple> `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs!

## 🛠️ Hardware 🛠️

bestie okay so the platform here is `platform_microchippic32`, and lemme tell you about it: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offers high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! it's giving *power* fr fr 💅

Here's the Fubarino Mini spec sheet, no cap:

- **Microcontroller:** `32MX250F128D`
- **Frequency:** `48MHz`
- **Flash:** `120KB`
- **RAM:** `32KB`
- **Vendor:** `Fubarino`

---

## ⚙️ Configuration ⚙️

okay so literally just use the `fubarino_mini` ID for the `projectconf_env_board` option in `projectconf`, that's the whole vibe:

[env:fubarino_mini] platform = microchippic32 board = fubarino_mini


and you can override the default Fubarino Mini settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `fubarino_mini.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. so much freedom 🦋

[env:fubarino_mini] platform = microchippic32 board = fubarino_mini

; change microcontroller board_build.mcu = 32MX250F128D

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🐛 Debugging 🐛

ngl this is the sad part: `piodebug` currently does not support Fubarino Mini board. it's not you it's the debugger 😭

---

## 🧰 Frameworks 🧰

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. the range?? *chef's kiss* 👑

---

# 🌸 Fubarino SD (1.5) 🌸

## 📋 Contents 📋

- Fubarino SD (1.5)
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

## 🛠️ Hardware 🛠️

so the platform again is `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! iconic behavior honestly ✨

Fubarino SD (1.5) spec sheet, coming right up:

- **Microcontroller:** `32MX795F512H`
- **Frequency:** `80MHz`
- **Flash:** `508KB`
- **RAM:** `128KB`
- **Vendor:** `Fubarino`

## ⚙️ Configuration ⚙️

use the `fubarino_sd` ID for the `projectconf_env_board` option in `projectconf`, periodt:

[env:fubarino_sd] platform = microchippic32 board = fubarino_sd


You can override default Fubarino SD (1.5) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `fubarino_sd.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. go off 💜

[env:fubarino_sd] platform = microchippic32 board = fubarino_sd

; change microcontroller board_build.mcu = 32MX795F512H

; change MCU frequency board_build.f_cpu = 80000000L


## 🐛 Debugging 🐛

yup, same energy as before: `piodebug` currently does not support Fubarino SD (1.5) board. 💀

## 🧰 Frameworks 🧰

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. still obsessed 🎀

---

# 🦋 HelvePic32 🦋

## 📋 Contents 📋

- HelvePic32
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

## 🛠️ Hardware 🛠️

okay so `platform_microchippic32` again: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! she's consistent, we love that 🌈

HelvePic32 spec sheet:

- **Microcontroller:** `32MX250F128B`
- **Frequency:** `48MHz`
- **Flash:** `120KB`
- **RAM:** `32KB`
- **Vendor:** `BOXTEC`

## ⚙️ Configuration ⚙️

Please use `helvepic32` ID for `projectconf_env_board` option in `projectconf`:

[env:helvepic32] platform = microchippic32 board = helvepic32


You can override default HelvePic32 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `helvepic32.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:helvepic32] platform = microchippic32 board = helvepic32

; change microcontroller board_build.mcu = 32MX250F128B

; change MCU frequency board_build.f_cpu = 48000000L


## 🐛 Debugging 🐛

`piodebug` currently does not support HelvePic32 board. same story bestie, we stay patient 🙈

## 🧰 Frameworks 🧰

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

---

# 🦋 HelvePic32 🦋

## 📋 Contents 📋

- HelvePic32
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware

Okay so the platform in question is <pink>`platform_microchippic32`</pink>, and here's the tea: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offers high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! 🫶

Here's the spec sheet, bestie — every single number, exactly as it is:

- **`Microcontroller`** — `32MX250F128B`
- **`Frequency`** — `48MHz`
- **`Flash`** — `120KB`
- **`RAM`** — `32KB`
- **`Vendor`** — `BOXTEC`

---

### ⚙️ Configuration

Use the <purple>`helvepic32_breadboardside`</purple> ID for the `projectconf_env_board` option in `projectconf`, no cap:

[env:helvepic32_breadboardside] platform = microchippic32 board = helvepic32_breadboardside


And listen — you *can* override the default HelvePic32 settings per build environment using the <yellow>`board_***`</yellow> option, where `***` is a JSON object path from the board manifest `helvepic32_breadboardside.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. Slay:

[env:helvepic32_breadboardside] platform = microchippic32 board = helvepic32_breadboardside

; change microcontroller board_build.mcu = 32MX250F128B

; change MCU frequency board_build.f_cpu = 48000000L


---

### 🐛 Debugging

> 😭 `piodebug` currently does **not** support the HelvePic32 board. It's giving "not today."

---

### 🧰 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

# 🌸 HelvePic32 🌸

## 📑 Contents

- HelvePic32

  - Hardware

  - Configuration

  - Debugging

  - Frameworks

### 🔧 Hardware

<pink>`platform_microchippic32`</pink> again, because that's the whole family: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offers high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! ✨

- **`Microcontroller`** — `32MX250F128D`
- **`Frequency`** — `48MHz`
- **`Flash`** — `120KB`
- **`RAM`** — `32KB`
- **`Vendor`** — `BOXTEC`

### ⚙️ Configuration

Use the <purple>`helvepic32_smd`</purple> ID for the `projectconf_env_board` option in `projectconf`:

[env:helvepic32_smd] platform = microchippic32 board = helvepic32_smd


Override the default HelvePic32 settings per build environment with the <yellow>`board_***`</yellow> option, where `***` is a JSON object path from the board manifest `helvepic32_smd.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:helvepic32_smd] platform = microchippic32 board = helvepic32_smd

; change microcontroller board_build.mcu = 32MX250F128D

; change MCU frequency board_build.f_cpu = 48000000L


### 🐛 Debugging

> 😭 `piodebug` currently does **not** support the HelvePic32 board.

### 🧰 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

# 🦋 HelvePic32 MX270 🦋

## 📑 Contents

- HelvePic32 MX270

  - Hardware

  - Configuration

  - Debugging

  - Frameworks

### 🔧 Hardware

<pink>`platform_microchippic32`</pink>, same energy: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offers high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! 🔥

- **`Microcontroller`** — `32MX270F256B`
- **`Frequency`** — `48MHz`
- **`Flash`** — `244KB`
- **`RAM`** — `62KB`
- **`Vendor`** — `BOXTEC`

### ⚙️ Configuration

Use the <purple>`helvepic32_mx270`</purple> ID for the `projectconf_env_board` option in `projectconf`:

[env:helvepic32_mx270] platform = microchippic32 board = helvepic32_mx270


You can override the default HelvePic32 MX270 settings per build environment using the <yellow>`board_***`</yellow> option, where `***` is a JSON object path from the board manifest `helvepic32_mx270.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:helvepic32_mx270] platform = microchippic32 board = helvepic32_mx270

; change microcontroller board_build.mcu = 32MX270F256B

; change MCU frequency board_build.f_cpu = 48000000L


### 🐛 Debugging

> 😭 `piodebug` currently does **not** support the HelvePic32 MX270 board.

### 🧰 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

# 🤖 HelvePic32 Robot 🤖

## 📑 Contents

- HelvePic32 Robot

  - Hardware

  - Configuration

  - Debugging

  - Frameworks

### 🔧 Hardware

<pink>`platform_microchippic32`</pink> is still the moment — Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offers high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! 🌈

### 🛠️ Hardware

okay so real talk bestie, `platform_microchippic32` is <pink>Microchip's 32-bit portfolio</pink> and it's giving main character energy fr — the MIPS microAptiv or M4K core serves up high performance microcontrollers *plus* every tool you need to build your embedded projects. ✨ And PIC32 MCUs? They hand your application the processing power, memory and peripherals your design is literally craving. no cap. 💅

here's the vibe check on the chip itself:

- **Microcontroller** — `32MX270F256D`
- **Frequency** — `48MHz`
- **Flash** — `244KB`
- **RAM** — `62KB`
- **Vendor** — `BOXTEC`

---

### ⚙️ Configuration

bestie, for the `projectconf_env_board` option in `projectconf`, please use the `helvepic32_robot` ID. that's the one. 🫶

[env:helvepic32_robot] platform = microchippic32 board = helvepic32_robot


and you can <purple>override</purple> the default HelvePic32 Robot settings per build environment with the `board_***` option, where `***` is a JSON object path from the board manifest `helvepic32_robot.json`. like for example `board_build.mcu`, `board_build.f_cpu`, etc. obsessed. 😌

[env:helvepic32_robot] platform = microchippic32 board = helvepic32_robot

; change microcontroller board_build.mcu = 32MX270F256D

; change MCU frequency board_build.f_cpu = 48000000L


---

### 🐛 Debugging

not me having to say this but… `piodebug` currently does **not** support the HelvePic32 Robot board. 💀 sorry bestie, that's just where we're at.

---

### 📚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic tbh. 🌈

---

## 🦋 HelvePic32 SMD MX270

### 📑 Contents

- HelvePic32 SMD MX270
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🛠️ Hardware

again for the besties in the back: `platform_microchippic32` is <pink>Microchip's 32-bit portfolio</pink>, with the MIPS microAptiv or M4K core offering high performance microcontrollers and all the tools you need for your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! ✨

- **Microcontroller** — `32MX270F256D`
- **Frequency** — `48MHz`
- **Flash** — `244KB`
- **RAM** — `62KB`
- **Vendor** — `BOXTEC`

### ⚙️ Configuration

for the `projectconf_env_board` option in `projectconf`, use the `helvepic32_smd_mx270` ID please and thank you 💖

[env:helvepic32_smd_mx270] platform = microchippic32 board = helvepic32_smd_mx270


you can override the default HelvePic32 SMD MX270 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `helvepic32_smd_mx270.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:helvepic32_smd_mx270] platform = microchippic32 board = helvepic32_smd_mx270

; change microcontroller board_build.mcu = 32MX270F256D

; change MCU frequency board_build.f_cpu = 48000000L


### 🐛 Debugging

`piodebug` currently does **not** support the HelvePic32 SMD MX270 board. lowkey tragic, but that's the tea. 😭

### 📚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. slay. 🌸

---

## 🧚 MikroElektronika Clicker 2

### 📑 Contents

- MikroElektronika Clicker 2
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🛠️ Hardware

`platform_microchippic32` — <pink>Microchip's 32-bit portfolio</pink> with the MIPS microAptiv or M4K core — offers high performance microcontrollers and all the tools you need to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! 💜

- **Microcontroller** — `32MX460F512L`
- **Frequency** — `80MHz`
- **Flash** — `508KB`
- **RAM** — `32KB`
- **Vendor** — `MikroElektronika`

### ⚙️ Configuration

for the `projectconf_env_board` option in `projectconf`, use the `clicker2` ID. that's it, that's the tweet. 🐦

[env:clicker2] platform = microchippic32 board = clicker2


you can override the default MikroElektronika Clicker 2 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `clicker2.json`. like `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:clicker2] platform = microchippic32 board = clicker2

; change microcontroller board_build.mcu = 32MX460F512L

; change MCU frequency board_build.f_cpu = 80000000L


### 🐛 Debugging

`piodebug` currently does **not** support the MikroElektronika Clicker 2 board. yeah. we know. 🙈

### 📚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, creating all kinds of creative coding, interactive objects, spaces or physical experiences. we love to see it. 🌈

---

## 👑 MikroElektronika Flip N Click MZ

### 📑 Contents

- MikroElektronika Flip N Click MZ
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### Hardware

<pink>okay so</pink> Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core — high performance microcontrollers plus <green>all</green> the tools you need to develop your embedded projects. PIC32 MCUs literally give your application the processing power, memory and peripherals your design needs! 💅

- **Microcontroller**: `32MZ2048EFH100`
- **Frequency**: `252MHz`
- **Flash**: `1.98MB`
- **RAM**: `512KB`
- **Vendor**: `MikroElektronika`

---

### Configuration

<purple>bestie listen</purple> please use the `flipnclickmz` ID for the `projectconf_env_board` option in `projectconf`:

[env:flipnclickmz] platform = microchippic32 board = flipnclickmz


You can override the default MikroElektronika Flip N Click MZ settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `flipnclickmz.json`. <yellow>For example</yellow>, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:flipnclickmz] platform = microchippic32 board = flipnclickmz

; change microcontroller board_build.mcu = 32MZ2048EFH100

; change MCU frequency board_build.f_cpu = 252000000L


---

### Debugging

Not to be dramatic but 😭 `piodebug` currently does **not** support the MikroElektronika Flip N Click MZ board.

---

### Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## Mini 2.0

### Contents

- Mini 2.0
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### Hardware

<pink>okay so</pink> Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core — high performance microcontrollers plus <green>all</green> the tools you need to develop your embedded projects. PIC32 MCUs literally give your application the processing power, memory and peripherals your design needs! 💅

- **Microcontroller**: `32MX270F256D`
- **Frequency**: `48MHz`
- **Flash**: `240KB`
- **RAM**: `62KB`
- **Vendor**: `Fubarino`

### Configuration

<purple>bestie listen</purple> please use the `fubarino_mini_20` ID for the `projectconf_env_board` option in `projectconf`:

[env:fubarino_mini_20] platform = microchippic32 board = fubarino_mini_20


You can override the default Mini 2.0 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `fubarino_mini_20.json`. <yellow>For example</yellow>, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:fubarino_mini_20] platform = microchippic32 board = fubarino_mini_20

; change microcontroller board_build.mcu = 32MX270F256D

; change MCU frequency board_build.f_cpu = 48000000L


### Debugging

😭 `piodebug` currently does **not** support the Mini 2.0 board.

### Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## Olimex PIC32-PINGUINO

### Contents

- Olimex PIC32-PINGUINO
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### Hardware

<pink>okay so</pink> Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core — high performance microcontrollers plus <green>all</green> the tools you need to develop your embedded projects. PIC32 MCUs literally give your application the processing power, memory and peripherals your design needs! 💅

- **Microcontroller**: `32MX440F256H`
- **Frequency**: `80MHz`
- **Flash**: `252KB`
- **RAM**: `32KB`
- **Vendor**: `Olimex`

### Configuration

<purple>bestie listen</purple> please use the `pinguino32` ID for the `projectconf_env_board` option in `projectconf`:

[env:pinguino32] platform = microchippic32 board = pinguino32


You can override the default Olimex PIC32-PINGUINO settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `pinguino32.json`. <yellow>For example</yellow>, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:pinguino32] platform = microchippic32 board = pinguino32

; change microcontroller board_build.mcu = 32MX440F256H

; change MCU frequency board_build.f_cpu = 80000000L


### Debugging

😭 `piodebug` currently does **not** support the Olimex PIC32-PINGUINO board.

### Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## OpenBCI 32bit

### Contents

- OpenBCI 32bit
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### ✨ Hardware ✨

Okay bestie, so the platform is <pink>`platform_microchippic32`</pink> — it's Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core, offering high performance microcontrollers and all the tools you need to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! 💅

- **Microcontroller:** `32MX250F128B`
- **Frequency:** `40MHz`
- **Flash:** `120KB`
- **RAM:** `32KB`
- **Vendor:** `OpenBCI`

---

### ⚙️ Configuration ⚙️

Please use <purple>`openbci`</purple> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:openbci] platform = microchippic32 board = openbci


You can override default OpenBCI 32bit settings per build environment using <yellow>`board_***`</yellow> option, where <yellow>`***`</yellow> is a JSON object path from board manifest <yellow>`openbci.json`</yellow>. For example, <yellow>`board_build.mcu`</yellow>, <yellow>`board_build.f_cpu`</yellow>, etc.

[env:openbci] platform = microchippic32 board = openbci

; change microcontroller board_build.mcu = 32MX250F128B

; change MCU frequency board_build.f_cpu = 40000000L


---

### 🐛 Debugging 🐛

> Heads up, bestie: <red>`piodebug`</red> currently does not support OpenBCI 32bit board. 💀

---

### 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## 👑 PONTECH UAV100 👑

### 📋 Contents 📋

- PONTECH UAV100
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### ✨ Hardware ✨

Again, platform is <pink>`platform_microchippic32`</pink>: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! (Same vibe, different board, bestie. 💖)

- **Microcontroller:** `32MX440F512H`
- **Frequency:** `80MHz`
- **Flash:** `508KB`
- **RAM:** `32KB`
- **Vendor:** `PONTECH`

---

### ⚙️ Configuration ⚙️

Please use <purple>`usbono_pic32`</purple> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:usbono_pic32] platform = microchippic32 board = usbono_pic32


You can override default PONTECH UAV100 settings per build environment using <yellow>`board_***`</yellow> option, where <yellow>`***`</yellow> is a JSON object path from board manifest <yellow>`usbono_pic32.json`</yellow>. For example, <yellow>`board_build.mcu`</yellow>, <yellow>`board_build.f_cpu`</yellow>, etc.

[env:usbono_pic32] platform = microchippic32 board = usbono_pic32

; change microcontroller board_build.mcu = 32MX440F512H

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🐛 Debugging 🐛

> <red>`piodebug`</red> currently does not support PONTECH UAV100 board. 😭

---

### 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💅

---

## 🌈 Pic32 CUI32-Development Stick 🌈

### 📋 Contents 📋

- Pic32 CUI32-Development Stick
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### ✨ Hardware ✨

Platform <pink>`platform_microchippic32`</pink>: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! (Yes, same spiel, but this one's for the CUI32, bestie. 🦋)

- **Microcontroller:** `32MX440F512H`
- **Frequency:** `80MHz`
- **Flash:** `508KB`
- **RAM:** `32KB`
- **Vendor:** `SparkFun`

---

### ⚙️ Configuration ⚙️

Please use <purple>`cui32`</purple> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:cui32] platform = microchippic32 board = cui32


You can override default Pic32 CUI32-Development Stick settings per build environment using <yellow>`board_***`</yellow> option, where <yellow>`***`</yellow> is a JSON object path from board manifest <yellow>`cui32.json`</yellow>. For example, <yellow>`board_build.mcu`</yellow>, <yellow>`board_build.f_cpu`</yellow>, etc.

[env:cui32] platform = microchippic32 board = cui32

; change microcontroller board_build.mcu = 32MX440F512H

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🐛 Debugging 🐛

> <red>`piodebug`</red> currently does not support Pic32 CUI32-Development Stick board. 🙈

---

### 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## 🎀 Pontech NoFire 🎀

### 📋 Contents 📋

- Pontech NoFire
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### ✨ Hardware ✨

## ✨ <pink>Hardware</pink> ✨

okay so the platform is `platform_microchippic32` — <rainbow>Microchip's 32-bit portfolio</rainbow> with the MIPS microAptiv or M4K core, and it's giving high performance microcontrollers plus all the tools you need to develop your embedded projects. PIC32 MCUs literally hand your application the processing power, memory and peripherals your design needs! 🔥

- **Microcontroller**: `32MZ2048EFG100`
- **Frequency**: `200MHz`
- **Flash**: `1.98MB`
- **RAM**: `512KB`
- **Vendor**: `Pontech`

---

## ✨ <purple>Configuration</purple> ✨

bestie, please use `nofire` ID for `projectconf_env_board` option in `projectconf`:

[env:nofire] platform = microchippic32 board = nofire


You can override default Pontech NoFire settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nofire.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nofire] platform = microchippic32 board = nofire

; change microcontroller board_build.mcu = 32MZ2048EFG100

; change MCU frequency board_build.f_cpu = 200000000L


---

## ✨ <hotpink>Debugging</hotpink> ✨

ngl, `piodebug` currently does not support Pontech NoFire board. 💀

---

## ✨ <mint>Frameworks</mint> ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

# 🌸 <rainbow>Pontech Quick240</rainbow> 🌸

## ✨ <cyan>Contents</cyan> ✨

- Pontech Quick240
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## ✨ <pink>Hardware</pink> ✨

same platform energy: `platform_microchippic32` — <rainbow>Microchip's 32-bit portfolio</rainbow> with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! 🔥

- **Microcontroller**: `32MX795F512L`
- **Frequency**: `80MHz`
- **Flash**: `508KB`
- **RAM**: `128KB`
- **Vendor**: `Pontech`

---

## ✨ <purple>Configuration</purple> ✨

Please use `quick240_usb` ID for `projectconf_env_board` option in `projectconf`:

[env:quick240_usb] platform = microchippic32 board = quick240_usb


You can override default Pontech Quick240 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `quick240_usb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:quick240_usb] platform = microchippic32 board = quick240_usb

; change microcontroller board_build.mcu = 32MX795F512L

; change MCU frequency board_build.f_cpu = 80000000L


---

## ✨ <hotpink>Debugging</hotpink> ✨

`piodebug` currently does not support Pontech Quick240 board. 💀

---

## ✨ <mint>Frameworks</mint> ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

# 🌈 <rainbow>RGB Station</rainbow> 🌈

## ✨ <cyan>Contents</cyan> ✨

- RGB Station
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 💻 Hardware

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! <pink>no cap, that's the whole sales pitch and honestly? it delivers</pink> 💅

- <cyan>Microcontroller</cyan>: `32MX270F256D`
- <cyan>Frequency</cyan>: `48MHz`
- <cyan>Flash</cyan>: `240KB`
- <cyan>RAM</cyan>: `62KB`
- <cyan>Vendor</cyan>: `ChipKIT`

---

### ⚙️ Configuration

Please use `rgb_station` ID for `projectconf_env_board` option in `projectconf`:

[env:rgb_station] platform = microchippic32 board = rgb_station


You can override default RGB Station settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `rgb_station.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <pink>bestie you have SO much power here it's giving customization queen 👑</pink>

[env:rgb_station] platform = microchippic32 board = rgb_station

; change microcontroller board_build.mcu = 32MX270F256D

; change MCU frequency board_build.f_cpu = 48000000L


---

### 🐛 Debugging

`piodebug` currently does not support RGB Station board.

> <yellow>no debug for you bestie, the board said "not today" 😭</yellow>

---

### 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <purple>literally the blueprint for every cute little blinking-LED project you've ever dreamt of ✨</purple>

---

## 🌸 SeeedStudio CUI32stem

### 📖 Contents

- SeeedStudio CUI32stem
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 💻 Hardware

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! <pink>same platform, same iconic energy 💖</pink>

- <cyan>Microcontroller</cyan>: `32MX795F512H`
- <cyan>Frequency</cyan>: `80MHz`
- <cyan>Flash</cyan>: `508KB`
- <cyan>RAM</cyan>: `128KB`
- <cyan>Vendor</cyan>: `SeeedStudio`

---

### ⚙️ Configuration

Please use `cui32stem` ID for `projectconf_env_board` option in `projectconf`:

[env:cui32stem] platform = microchippic32 board = cui32stem


You can override default SeeedStudio CUI32stem settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `cui32stem.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:cui32stem] platform = microchippic32 board = cui32stem

; change microcontroller board_build.mcu = 32MX795F512H

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🐛 Debugging

`piodebug` currently does not support SeeedStudio CUI32stem board.

> <yellow>again with the no-debug situation, we stay unbothered tho 🙈</yellow>

---

### 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🌈 UBW32 MX460

### 📖 Contents

- UBW32 MX460
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 💻 Hardware

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs!

- <cyan>Microcontroller</cyan>: `32MX460F512L`
- <cyan>Frequency</cyan>: `80MHz`

<pink>✨ continuing the board tour, bestie, we're still in it ✨</pink>

- **Flash** — `508KB`
- **RAM** — `32KB`
- **Vendor** — `UBW32`

## 🛠️ Configuration 🛠️

Okay so for the board ID, please use `ubw32_mx460` for the `projectconf_env_board` option in your projectconf, mkay? 💅

[env:ubw32_mx460] platform = microchippic32 board = ubw32_mx460


You can override the default UBW32 MX460 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `ubw32_mx460.json`. Like for example `board_build.mcu`, `board_build.f_cpu`, etc. — pick your fave fr fr 🌸

[env:ubw32_mx460] platform = microchippic32 board = ubw32_mx460

; change microcontroller board_build.mcu = 32MX460F512L

; change MCU frequency board_build.f_cpu = 80000000L


## 🐛 Debugging 🐛

Lowkey sad news: `piodebug` currently does **not** support the UBW32 MX460 board. 😭 It's giving "not yet", not "never", but for now that's the vibe.

## 🎀 Frameworks 🎀

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Iconic, honestly. 🫶

---

## 👑 UBW32 MX795 👑

### 📑 Contents 📑

- UBW32 MX795
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔌 Hardware 🔌

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offers high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! 🔥

- **Microcontroller** — `32MX795F512L`
- **Frequency** — `80MHz`
- **Flash** — `508KB`
- **RAM** — `128KB`
- **Vendor** — `UBW32`

### 🛠️ Configuration 🛠️

Please use `ubw32_mx795` ID for the `projectconf_env_board` option in projectconf:

[env:ubw32_mx795] platform = microchippic32 board = ubw32_mx795


You can override the default UBW32 MX795 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `ubw32_mx795.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:ubw32_mx795] platform = microchippic32 board = ubw32_mx795

; change microcontroller board_build.mcu = 32MX795F512L

; change MCU frequency board_build.f_cpu = 80000000L


### 🐛 Debugging 🐛

`piodebug` currently does **not** support the UBW32 MX795 board. Same energy as its sibling, no cap. 💀

### 🎀 Frameworks 🎀

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖

---

## 🦋 chipKIT Lenny 🦋

### 📑 Contents 📑

- chipKIT Lenny
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔌 Hardware 🔌

Platform `platform_microchippic32`: Microchip's 32-bit portfolio with the MIPS microAptiv or M4K core offers high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs give your application the processing power, memory and peripherals your design needs! ⭐

- **Microcontroller** — `32MX270F256D`
- **Frequency** — `40MHz`
- **Flash** — `120KB`
- **RAM** — `32KB`
- **Vendor** — `chipKIT`

### 🛠️ Configuration 🛠️

<pink>okay so bestie, real talk —</pink> you want the `projectconf_env_board` option to be `lenny`, fr fr. Like:

[env:lenny] platform = microchippic32 board = lenny


That's it. That's the vibe. 💅

---

<lavender>**and here's the fun part** 🌸</lavender> — you can override the default chipKIT Lenny settings <purple>per build environment</purple> with the `board_***` option, where `***` is a JSON object path straight out of the board manifest `lenny.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>ngl it's giving customizable.</cyan>

[env:lenny] platform = microchippic32 board = lenny

; change microcontroller board_build.mcu = 32MX270F256D

; change MCU frequency board_build.f_cpu = 40000000L


### ✨ Debugging ✨

<pink>not me having to tell you this 😭</pink> — `piodebug` currently **does not support** the chipKIT Lenny board. That's it. That's the whole thing. <red>no debugging for lenny rn, sorry bestie.</red>

### 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <green>iconic, honestly.</green>

---

## 🦋 chipKIT WiFire rev. C 🦋

### 💜 Contents 💜

- chipKIT WiFire rev. C
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🧚 Hardware 🧚

Platform `platform_microchippic32`: <hotpink>Microchip's 32-bit portfolio</hotpink> with the MIPS microAptiv or M4K core offer high performance microcontrollers, and all the tools needed to develop your embedded projects. PIC32 MCUs gives your application the processing power, memory and peripherals your design needs! <rainbow>slay.</rainbow>

- **Microcontroller** — `32MZ2048EFG100`
- **Frequency** — `200MHz`
- **Flash** — `1.98MB`
- **RAM** — `512KB`
- **Vendor** — `Digilent`

### ⭐ Configuration ⭐

<pink>bestie listen —</pink> please use the `chipkit_wifire_revc` ID for the `projectconf_env_board` option in projectconf:

[env:chipkit_wifire_revc] platform = microchippic32 board = chipkit_wifire_revc


You can override the default chipKIT WiFire rev. C settings <purple>per build environment</purple> using the `board_***` option, where `***` is a JSON object path from the board manifest `chipkit_wifire_revc.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:chipkit_wifire_revc] platform = microchippic32 board = chipkit_wifire_revc

; change microcontroller board_build.mcu = 32MZ2048EFG100

; change MCU frequency board_build.f_cpu = 200000000L


### 💖 Debugging 💖

`piodebug` currently **does not support** the chipKIT WiFire rev. C board. <red>yeah, again. tragic.</red> 😭

### 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <green>same energy, still iconic.</green>

---

## 🎀 Nordic nRF51 🎀

## 💅 BBC micro:bit 💅

### 🍓 Contents 🍓

- BBC micro:bit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### ✨ Hardware ✨

Platform `platform_nordicnrf51`: The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for <cyan>ultra-low power wireless applications</cyan>. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary `2.4GHz` protocols such as Gazell. <purple>the range?? unmatched.</purple>

- **Microcontroller** — `NRF51822`
- **Frequency** — `16MHz`
- **Flash** — `256KB`
- **RAM** — `16KB`
- **Vendor** — `BBC`

### 🦋 Configuration 🦋

Please use the `bbcmicrobit` ID for the `projectconf_env_board` option in projectconf:

[env:bbcmicrobit] platform = nordicnrf51 board = bbcmicrobit


okay so the last couple rows of that table are just… empty cells? yeah bestie, the columns just sit there holding space, zero data, no thoughts, head empty, and that's the table done. iconic behaviour honestly 🎀

---

## 🦋 Overriding the BBC micro:bit defaults 🦋

so here's the tea: you can override the default <pink>BBC micro:bit</pink> settings <purple>per build environment</purple> using the `board_***` option, where `***` is a JSON object path straight out of the board manifest `bbcmicrobit.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. etc. 💅

[env:bbcmicrobit] platform = nordicnrf51 board = bbcmicrobit

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


## 💖 Uploading 💖

BBC micro:bit supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `cmsis-dap` ✨

you can switch the upload protocol with the `projectconf_upload_protocol` option, like so:

[env:bbcmicrobit] platform = nordicnrf51 board = bbcmicrobit

upload_protocol = cmsis-dap


## 🧚 Debugging 🧚

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally no setup, main character energy 🔥

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. 🙈

you can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in projectconf 👑

okay so real talk bestie: <pink>BBC micro:bit</pink> has an on-board debug probe and it <green>IS READY</green> for debugging. Like, you literally do not need to use or buy an external debug probe — it's already that girl 💅✨

Here's the compatible-tools tea ☕:

- **`debugging_tool_cmsis-dap`** — On-board: <green>Yes</green>, Default: <green>Yes</green> 💖
- **`debugging_tool_jlink`** — it's listed, but there's literally nothing marked next to it (no on-board, not the default) 🫥

---

## 🌈 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 🎨✨
- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, which means you can code down to the metal if needed 🔩. On top of RTOS, USB and Networking libraries, the mbed Developer Community has built a cookbook of hundreds of reusable peripheral and module libraries on top of the SDK 👑
- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind 🔐

---

## 🦋 BluzDK

### 🎀 Contents

- BluzDK
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🧠 Hardware

`platform_nordicnrf51`: the Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell 📡

- **Microcontroller:** `NRF51822`
- **Frequency:** `32MHz`
- **Flash:** `256KB`
- **RAM:** `32KB`
- **Vendor:** `BluzDK`

---

### ⚙️ Configuration

Please use `bluz_dk` ID for `projectconf_env_board` option in `projectconf`:

[env:bluz_dk] platform = nordicnrf51 board = bluz_dk


You can override default BluzDK settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `bluz_dk.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:bluz_dk] platform = nordicnrf51 board = bluz_dk

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 32000000L


---

### 🚀 Uploading

BluzDK supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is `jlink` 💫

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:bluz_dk] platform = nordicnrf51 board = bluz_dk

upload_protocol = jlink


---

### 🐛 Debugging

`pio debug` — the "1-click" solution for debugging with a zero configuration 😌✨

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the `projectconf_debug_tool` option in `projectconf`.

BluzDK does <red>not</red> have an on-board debug probe and <red>IS NOT READY</red> for debugging 😭. You will need to use or buy one of the external probes listed below 🫡

- **`debugging_tool_blackmagic`** — on-board probe? <red>nope</red> 🙈 default? <green>yes</green> ✅
- **`debugging_tool_jlink`** — on-board: <red>nah</red> · default: <red>nah</red>
- **`debugging_tool_stlink`** — on-board: <red>nah</red> · default: <red>nah</red>

---

# ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie 💅 it lets you write <cyan>cross-platform</cyan> software to control devices hooked up to a *huge* range of Arduino boards — so you can make all kinds of creative coding, interactive objects, spaces, or physical experiences. it's giving ✨maker era✨ fr fr.

---

# 🎀 Calliope mini 🎀

## 📋 Contents

- Calliope mini
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_nordicnrf51`: the Nordic nRF51 Series is a <pink>family</pink> of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT, and proprietary 2.4GHz protocols such as Gazell. no cap, it does all that 🦋

- **Microcontroller** — `NRF51822`
- **Frequency** — `16MHz`
- **Flash** — `256KB`
- **RAM** — `16KB`
- **Vendor** — `Calliope`

## ⚙️ Configuration

okay so pls use the `calliope_mini` ID for the `projectconf_env_board` option in `projectconf`, mkay? 💖

[env:calliope_mini] platform = nordicnrf51 board = calliope_mini


You can override the default Calliope mini settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `calliope_mini.json`. For example: `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:calliope_mini] platform = nordicnrf51 board = calliope_mini

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


## 🚀 Uploading

Calliope mini supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `cmsis-dap` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:calliope_mini] platform = nordicnrf51 board = calliope_mini

upload_protocol = cmsis-dap


## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally iconic 💅

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. don't skip this bestie 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Calliope mini has an on-board debug probe and <rainbow>IS READY for debugging</rainbow> 🎉 You don't need to use/buy an external debug probe. slay.

- **`debugging_tool_cmsis-dap`** — on-board: <green>Yes</green> · default: <green>Yes</green> ✅
- **`debugging_tool_jlink`** — on-board: <red>nope</red> · default: <red>nope</red>

## 🌈 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework, allowing you to write <cyan>cross-platform</cyan> software to control devices attached to a wide range of Arduino boards — to create all kinds of creative coding, interactive objects, spaces, or physical experiences. the way that it just *does* that 🦋✨

- <pink>Microcontroller</pink> → `NRF51822`
- <pink>Frequency</pink> → `32MHz`

---

## 🌸 Delta DFCM-NNN50 🌸

### 🎀 Contents 🎀

- Delta DFCM-NNN50

  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Bestie, listen — Platform <cyan>`platform_nordicnrf51`</cyan>: the Nordic nRF51 Series is a whole *family* of super flexible, multi-protocol, system-on-chip (SoC) devices made for ultra-low power wireless stuff. And the nRF51 Series devices? They support a bunch of protocol stacks, including Bluetooth Smart (which used to be called Bluetooth low energy, iykyk), ANT, and proprietary 2.4GHz protocols like Gazell. 💅

- <pink>Microcontroller</pink> → `NRF51822`
- <pink>Frequency</pink> → `32MHz`

- **Flash** — `256KB` ✨
- **RAM** — `16KB`
- **Vendor** — `Delta`

---

## 💖 Configuration 💖

okay bestie listen, to set this board up you gotta use the `delta_dfcm_nnn50` ID for the `projectconf_env_board` option in `projectconf`, like:

[env:delta_dfcm_nnn50] platform = nordicnrf51 board = delta_dfcm_nnn50


and the way you can override the default Delta DFCM-NNN50 settings per build environment?? you use the `board_***` option, where `***` is a JSON object path from the board manifest `delta_dfcm_nnn50.json`. examples would be `board_build.mcu`, `board_build.f_cpu`, etc. iconic.

[env:delta_dfcm_nnn50] platform = nordicnrf51 board = delta_dfcm_nnn50

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🌈 Uploading 🌈

Delta DFCM-NNN50 supports the next uploading protocols, periodt:

- `cmsis-dap`
- `mbed`

Default protocol is `cmsis-dap` 💅

and you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:delta_dfcm_nnn50] platform = nordicnrf51 board = delta_dfcm_nnn50

upload_protocol = cmsis-dap


---

## 🦋 Debugging 🦋

`piodebug` — it's giving "1-click" solution for debugging with a zero configuration. obsessed.

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. no skipping this bestie, fr fr.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Delta DFCM-NNN50 has an on-board debug probe and **IS READY** for debugging 🔥 You don't need to use/buy an external debug probe. we love a self-sufficient queen.

- **Compatible Tools:** `debugging_tool_cmsis-dap` — **On-board:** `Yes` — **Default:** `Yes` 👑

---

## ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💜

---

# 🎀 JKSoft Wallbot BLE 🎀

## 💖 Contents 💖

- JKSoft Wallbot BLE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌸 Hardware 🌸

Platform `platform_nordicnrf51`: The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. 🦋

- **Microcontroller** — `NRF51822`
- **Frequency** — `16MHz`
- **Flash** — `128KB`
- **RAM** — `16KB`
- **Vendor** — `JKSoft`

---

## 💅 Configuration 💅

Please use the `wallbot_ble` ID for the `projectconf_env_board` option in `projectconf`:

[env:wallbot_ble] platform = nordicnrf51 board = wallbot_ble


You can override the default JKSoft Wallbot BLE settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `wallbot_ble.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:wallbot_ble] platform = nordicnrf51 board = wallbot_ble

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


---

## 🫶 Uploading 🫶

JKSoft Wallbot BLE is out here supporting these upload protocols, bestie:

- `cmsis-dap`
- `mbed`

The default one is `cmsis-dap`. ✨

Wanna switch it up? Just use the `upload_protocol` option in `projectconf`:

[env:wallbot_ble] platform = nordicnrf51 board = wallbot_ble

upload_protocol = cmsis-dap


### 💜 Debugging 💜

`pio debug` — the "1-click" solution for debugging with a **zero** configuration. Literally no setup, it's giving effortless.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debug_tool`s using the `debug_tool` option in `projectconf`.

JKSoft Wallbot BLE has an **on-board debug probe** and IS READY for debugging. You don't need to use/buy an external debug probe. Periodt. 💅

- **Compatible Tools:** `debug_tool = cmsis-dap` — On-board: **Yes** — Default: **Yes** 👑

### 🌸 Frameworks 🌸

- **`framework-mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. Obsessed, honestly. 💖

---

## 👑 Nordic Beacon Kit (PCA20006) 👑

### 📦 Contents 📦

- Nordic Beacon Kit (PCA20006)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🧚 Hardware 🧚

Platform `nordicnrf51`: The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell.

- **Microcontroller:** `NRF51822`
- **Frequency:** `32MHz`
- **Flash:** `256KB`
- **RAM:** `32KB`
- **Vendor:** `Nordic`

### ⚙️ Configuration ⚙️

Please use the `nrf51_beacon` ID for the `board` option in `projectconf`:

[env:nrf51_beacon] platform = nordicnrf51 board = nrf51_beacon


You can override the default Nordic Beacon Kit (PCA20006) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nrf51_beacon.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌈

[env:nrf51_beacon] platform = nordicnrf51 board = nrf51_beacon

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 32000000L


### 🚀 Uploading 🚀

Nordic Beacon Kit (PCA20006) supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is `jlink`. 🔥

You can change the upload protocol using the `upload_protocol` option in `projectconf`:

[env:nrf51_beacon] platform = nordicnrf51 board = nrf51_beacon

upload_protocol = jlink


### 🦋 Debugging 🦋

`pio debug` — the "1-click" solution for debugging with a **zero** configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging `debug_tool`s using the `debug_tool` option in `projectconf`.

Nordic Beacon Kit (PCA20006) has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. No cap. 💅

- **`debugging_tool_blackmagic`** — <lavender>listed as compatible, but the On-board and Default cells are straight-up empty, no notes</lavender> 🫥
- **`debugging_tool_cmsis-dap`** — <mint>Yes</mint> on the On-board front, Default column stays blank 🙈
- **`debugging_tool_jlink`** — <green>Yes</green> compatible, <green>Yes</green> on-board, and <yellow>Yes</yellow> as the default. she's the moment, no cap 👑
- **`debugging_tool_stlink`** — <lavender>also on the compatible list, with nothing in the On-board or Default columns</lavender> 💀

---

## 🦋 Frameworks 🦋

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it *allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.* <pink>literally the blueprint for making your little gadgets come alive</pink> ✨

---

# 🌸 Nordic nRF51 Dongle (PCA10031) 🌸

## 📖 Contents 📖

- Nordic nRF51 Dongle (PCA10031)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🛠️ Hardware 🛠️

Platform `platform_nordicnrf51`: the Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. <cyan>multi-protocol queen behavior fr fr</cyan> 💅

- **Microcontroller** — `NRF51822`
- **Frequency** — `32MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Nordic`

---

## ⚙️ Configuration ⚙️

Please use `nrf51_dongle` ID for `projectconf_env_board` option in `projectconf`:

[env:nrf51_dongle] platform = nordicnrf51 board = nrf51_dongle


You can override default Nordic nRF51 Dongle (PCA10031) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nrf51_dongle.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <pink>so customisable bestie</pink> 🎀

[env:nrf51_dongle] platform = nordicnrf51 board = nrf51_dongle

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🚀 Uploading 🚀

Nordic nRF51 Dongle (PCA10031) supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`

Default protocol is `jlink`. <hotpink>she ships with jlink out the box, iconic</hotpink> 🔥

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nrf51_dongle] platform = nordicnrf51 board = nrf51_dongle

upload_protocol = jlink


---

## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. <mint>zero config, zero stress, we love to see it</mint> 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>do not skip this step bestie, drivers first, tears later</red> 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Nordic nRF51 Dongle (PCA10031) has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. <rainbow>plug and go, the dongle said self-care</rainbow> 💖

- **`debugging_tool_cmsis-dap`** — <mint>Yes</mint> on-board
- **`debugging_tool_jlink`** — <green>Yes</green> compatible, <green>Yes</green> on-board, <yellow>Yes</yellow> default 👑

---

## 🌈 Frameworks 🌈

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding,

- …<pink>interactive objects</pink>, spaces or physical experiences. 💫

- **`framework_mbed`** — The <purple>mbed framework</purple> The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🧠✨

- **`framework_zephyr`** — The <cyan>Zephyr Project</cyan> is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🛡️

---

# ✨ <rainbow>Nordic nRF51822-mKIT</rainbow> ✨

## 🎀 Contents

- Nordic nRF51822-mKIT
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🛠️ Hardware

Platform `platform_nordicnrf51`: The <mint>Nordic nRF51 Series</mint> is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. 📡

- **Microcontroller:** `NRF51822`
- **Frequency:** `16MHz`
- **Flash:** `128KB`
- **RAM:** `16KB`
- **Vendor:** `Nordic`

---

## ⚙️ Configuration

<yellow>Please use</yellow> `nrf51_mkit` ID for `projectconf_env_board` option in `projectconf`:

[env:nrf51_mkit] platform = nordicnrf51 board = nrf51_mkit


You can override default Nordic nRF51822-mKIT settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nrf51_mkit.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nrf51_mkit] platform = nordicnrf51 board = nrf51_mkit

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


---

## 🚀 Uploading

Nordic nRF51822-mKIT supports the next uploading protocols:

- `cmsis-dap`
- `mbed`

<peach>Default protocol is</peach> `cmsis-dap`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nrf51_mkit] platform = nordicnrf51 board = nrf51_mkit

upload_protocol = cmsis-dap


---

## 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration.

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Nordic nRF51822-mKIT has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 🔥

- **Compatible Tools:** `debugging_tool_cmsis-dap`
- **On-board:** Yes
- **Default:** Yes

---

## 🧚 Frameworks

- **<blue>Name:</blue>** `framework_mbed`
- **<blue>Description:</blue>** The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built

…on top of the SDK by the mbed Developer Community. 💜

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <mint>tiny device, big security energy</mint> 🛡️✨

---

## 🦋 <rainbow>OSHChip</rainbow> 🦋

### 📑 <purple>Contents</purple> 📑

- OSHChip
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 <cyan>Hardware</cyan> 🔧

Platform `platform_nordicnrf51`: The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. <hotpink>multi-protocol queen behavior</hotpink> 👑

- **Microcontroller** — `NRF51822`
- **Frequency** — `32MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `OSHChip`

---

### ⚙️ <yellow>Configuration</yellow> ⚙️

Please use `oshchip` ID for `projectconf_env_board` option in `projectconf`:

[env:oshchip] platform = nordicnrf51 board = oshchip


You can override default OSHChip settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `oshchip.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <lavender>basically you can remix the defaults, bestie</lavender> 🎀

[env:oshchip] platform = nordicnrf51 board = oshchip

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 32000000L


---

### 🚀 <green>Uploading</green> 🚀

OSHChip supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `jlink` <peach>— that's the one it ships with, no cap</peach> ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:oshchip] platform = nordicnrf51 board = oshchip

upload_protocol = jlink


---

### 🐛 <purple>Debugging</purple> 🐛

`piodebug` - "1-click" solution for debugging with a zero configuration. <hotpink>zero config?? iconic fr fr</hotpink> 💅

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`. 🦋

<pink>okay so</pink> OSHChip does **not** have an on-board debug probe and it is **NOT READY** for debugging 😭 like, at all. You're gonna need to use or buy one of the external probes listed below, no cap.

- **`debugging_tool_blackmagic`** — on-board: <red>no</red> — default: <green>Yes</green> ✨
- **`debugging_tool_jlink`** — on-board: <red>no</red> — default: *nope*
- **`debugging_tool_stlink`** — on-board: <red>no</red> — default: *nope*

---

## <rainbow>Frameworks</rainbow> 🦋

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>(it's giving maker energy fr fr)</pink>

---

# 👑 RedBearLab BLE Nano 1.5 👑

## Contents 🎀

- RedBearLab BLE Nano 1.5
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware 🌸

Platform `platform_nordicnrf51`: The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. <purple>so many protocols bestie, she's versatile</purple> 💅

- **Microcontroller** — `NRF51822`
- **Frequency** — `16MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `RedBearLab`

---

## Configuration ⚙️ ✨

Please use `redBearLabBLENano` ID for `projectconf_env_board` option in `projectconf`:

[env:redBearLabBLENano] platform = nordicnrf51 board = redBearLabBLENano


You can override default RedBearLab BLE Nano 1.5 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `redBearLabBLENano.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>iykyk</cyan> 🫶

[env:redBearLabBLENano] platform = nordicnrf51 board = redBearLabBLENano

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


---

## Uploading 🚀 💖

RedBearLab BLE Nano 1.5 supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `cmsis-dap` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:redBearLabBLENano] platform = nordicnrf51 board = redBearLabBLENano

upload_protocol = cmsis-dap


---

## Debugging 🐛 🔥

`piodebug` — "1-click" solution for debugging with a zero configuration. <mint>literally one click bestie, iconic</mint>

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

RedBearLab BLE Nano 1.5 has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. <green>slay, she comes prepared</green> 👑

- **`debugging_tool_blackmagic`** — on-board: <red>no</red> — default: *nope*
- **`debugging_tool_cmsis-dap`** — on-board: <green>Yes</green> — default: <green>Yes</green> ✨
- **`debugging_tool_jlink`** — on-board: <red>no</red> — default: *nope*
- **`debugging_tool_stlink`** — on-board: <red>no</red> — default: *nope*

---

## Frameworks 🧚 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <purple>code down to the metal?? that's the vibe</purple> 💀

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <blue>safety AND security, we love a responsible queen</blue> 🛡️

---

# ⭐ RedBearLab nRF51822 ⭐

## Contents 🎀

- RedBearLab nRF51822
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 💖 Hardware 💖

<pink>Platform</pink> `platform_nordicnrf51`: the Nordic nRF51 Series is literally that girl — a whole family of <hotpink>highly flexible, multi-protocol, system-on-chip (SoC)</hotpink> devices made for ultra-low power wireless stuff. nRF51 Series devices support a whole range of protocol stacks, including Bluetooth Smart (which used to be called Bluetooth low energy, iykyk), ANT, and proprietary 2.4GHz protocols like Gazell. 🌈

- **Microcontroller** — `NRF51822`
- **Frequency** — `16MHz`
- **Flash** — `256KB`
- **RAM** — `16KB`
- **Vendor** — `RedBearLab`

---

### 🎀 Configuration 🎀

Bestie, pls use the `redBearLab` ID for the <purple>`projectconf_env_board`</purple> option in projectconf:

[env:redBearLab] platform = nordicnrf51 board = redBearLab


You can override the default RedBearLab nRF51822 settings per build environment using the <cyan>`board_***`</cyan> option, where `***` is a JSON object path from the board manifest `redBearLab.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:redBearLab] platform = nordicnrf51 board = redBearLab

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


---

### ✨ Uploading ✨

RedBearLab nRF51822 supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `cmsis-dap` 👑

You can change the upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:redBearLab] platform = nordicnrf51 board = redBearLab

upload_protocol = cmsis-dap


---

### 🦋 Debugging 🦋

<hotpink>`piodebug`</hotpink> — the "1-click" solution for debugging with a zero configuration. no cap, it's giving effortless. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging <lavender>`debugging_tools`</lavender> using the <purple>`projectconf_debug_tool`</purple> option in projectconf.

RedBearLab nRF51822 has an <green>on-board debug probe</green> and IS READY for debugging. You don't need to use/buy an external debug probe. periodt. 🔥

- **`debugging_tool_blackmagic`** — not on-board, not default
- **`debugging_tool_cmsis-dap`** — on-board: **Yes**, default: **Yes** ⭐
- **`debugging_tool_jlink`** — not on-board, not default
- **`debugging_tool_stlink`** — not on-board, not default

---

### 🌸 Frameworks 🌸

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. 💖
- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🧚

---

## 🍓 Seeed Arch BLE 🍓

### Contents

- Seeed Arch BLE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 💜 Hardware 💜

<pink>Platform</pink> `platform_nordicnrf51`: the Nordic nRF51 Series is a family of <hotpink>highly flexible, multi-protocol, system-on-chip (SoC)</hotpink> devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. 🌈

- **Microcontroller** — `NRF51822`
- **Frequency** — `16MHz`
- **Flash** — `128KB`
- **RAM** — `16KB`
- **Vendor** — `SeeedStudio`

### 🎀 Configuration 🎀

Please use the `seeedArchBLE` ID for the <purple>`projectconf_env_board`</purple> option in projectconf:

[env:seeedArchBLE] platform = nordicnrf51 board = seeedArchBLE


You can override default Seeed Arch BLE settings per build environment using the <cyan>`board_***`</cyan> option, where `***` is a JSON object path from the board manifest `seeedArchBLE.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:seeedArchBLE] platform = nordicnrf51 board = seeedArchBLE

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


### ✨ Uploading ✨

Seeed Arch BLE supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `cmsis-dap` 👑

You can change upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:seeedArchBLE] platform = nordicnrf51 board = seeedArchBLE

upload_protocol = cmsis-dap


### 🦋 Debugging 🦋

<hotpink>`piodebug`</hotpink> — the "1-click" solution for debugging with a zero configuration. main character energy fr fr. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging <lavender>`debugging_tools`</lavender> using the <purple>`projectconf_debug_tool`</purple> option in projectconf.

<pink>Seeed Arch BLE</pink> has an on-board debug probe and is <rainbow>IS READY for debugging</rainbow>. Bestie, you do <purple>not</purple> need to use or buy an external debug probe. The board came prepared. 💅

Here's the debug tools lineup — three columns, <cyan>Compatible Tools</cyan> / <cyan>On-board</cyan> / <cyan>Default</cyan>:

- `debugging_tool_blackmagic` — on-board: —, default: —
- `debugging_tool_cmsis-dap` — on-board: **Yes**, default: **Yes** ✨
- `debugging_tool_jlink` — on-board: —, default: —
- `debugging_tool_stlink` — on-board: —, default: —

(Those little dashes are the blank cells, fr fr. Only `cmsis-dap` gets the crown here 👑)

### ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🫶

---

## 🌸 Seeed Arch Link 🌸

### 📋 Contents 📋

- Seeed Arch Link
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform `platform_nordicnrf51`: The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. <mint>Low power, high drama, we love to see it.</mint>

- **Microcontroller:** `NRF51822`
- **Frequency:** `16MHz`
- **Flash:** `256KB`
- **RAM:** `16KB`
- **Vendor:** `SeeedStudio`

### ⚙️ Configuration ⚙️

Please use `seeedArchLink` ID for `projectconf_env_board` option in `projectconf`:

[env:seeedArchLink] platform = nordicnrf51 board = seeedArchLink


You can override default Seeed Arch Link settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `seeedArchLink.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <yellow>Customize away, queen.</yellow>

[env:seeedArchLink] platform = nordicnrf51 board = seeedArchLink

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


### ⬆️ Uploading ⬆️

Seeed Arch Link supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `cmsis-dap`. 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:seeedArchLink] platform = nordicnrf51 board = seeedArchLink

upload_protocol = cmsis-dap


### 🐛 Debugging 🐛

`piodebug` - "1-click" solution for debugging with a zero configuration. Iconic behaviour, no cap.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>Do not skip this, bestie, the drivers are not optional 😭</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Seeed Arch Link has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <rainbow>Built-in probe, zero extra shopping trips 🎀</rainbow>

- `debugging_tool_blackmagic` — on-board: —, default: —
- `debugging_tool_cmsis-dap` — on-board: **Yes**, default: **Yes** ✨
- `debugging_tool_jlink` — on-board: —, default: —
- `debugging_tool_stlink` — on-board: —, default: —

### ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💜

---

## 🦋 Seeed Tiny BLE 🦋

### 📋 Contents 📋

- Seeed Tiny BLE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform `platform_nordicnrf51`: The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. <mint>Tiny board, big range of protocol stacks, it's giving overachiever.</mint>

- **Microcontroller:** `NRF51822`
- **Frequency:** `16MHz`
- **Flash:** `256KB`
- **RAM:** `16KB`
- **Vendor:** `SeeedStudio`

### ⚙️ Configuration ⚙️

Please use `seeedTinyBLE` ID for `projectconf_env_board` option in `projectconf`:

[env:seeedTinyBLE] platform = nordicnrf51 board = seeedTinyBLE


You can override default Seeed Tiny BLE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `seeedTinyBLE.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:seeedTinyBLE] platform = nordicnrf51 board = seeedTinyBLE

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


### Uploading 🚀

Seeed Tiny BLE supports the next uploading protocols:

- <pink>`blackmagic`</pink>
- <pink>`cmsis-dap`</pink>
- <pink>`jlink`</pink>
- <pink>`mbed`</pink>
- <pink>`nrfjprog`</pink>
- <pink>`stlink`</pink>

Default protocol is `cmsis-dap` — the icon behavior, fr fr 💅

You can change upload protocol using `upload_protocol` option:

[env:seeedTinyBLE] platform = nordicnrf51 board = seeedTinyBLE

upload_protocol = cmsis-dap


### Debugging 🐛

`pio debug` — the "1-click" solution for debugging with a zero configuration. Obsessed actually ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. No cap, do the drivers or nothing works 😭

You can switch between debugging `debugging_tools` using `debug_tool` option in `platformio.ini` (projectconf).

Seeed Tiny BLE has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe — main character energy honestly 👑

Compatible Tools and their on-board / default status:

- **`debugging_tool_blackmagic`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_cmsis-dap`** — On-board: <green>Yes</green>, Default: <green>Yes</green> 💖
- **`debugging_tool_jlink`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)*, Default: *(none)*

### Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💜

---

## 🌸 Sino:Bit 🌸

### Contents 📜

- Sino:Bit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 🔧

Platform `nordicnrf51`: The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. ✨

- **Microcontroller** — `NRF51822`
- **Frequency** — `32MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `sino:bit`

### Configuration ⚙️

Please use Sinobit ID for `env_board` option in `platformio.ini` (projectconf):

[env:Sinobit] platform = nordicnrf51 board = Sinobit


You can override default Sino:Bit settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `Sinobit.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:Sinobit] platform = nordicnrf51 board = Sinobit

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 32000000L


### Uploading 🚀

Sino:Bit supports the next uploading protocols:

- <pink>`blackmagic`</pink>
- <pink>`jlink`</pink>
- <pink>`nrfjprog`</pink>
- <pink>`stlink`</pink>

Default protocol is `jlink` 💅

You can change upload protocol using `upload_protocol` option:

[env:Sinobit] platform = nordicnrf51 board = Sinobit

upload_protocol = jlink


### Debugging 🐛

`pio debug` — the "1-click" solution for debugging with a zero configuration. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Like, genuinely, the drivers are not optional bestie 😭

You can switch between debugging `debugging_tools` using `debug_tool` option in `platformio.ini` (projectconf).

Sino:Bit does **not** have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 💀

Compatible Tools and their on-board / default status:

- **`debugging_tool_blackmagic`** — On-board: *(none)*, Default: <green>Yes</green>
- **`debugging_tool_jlink`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)*, Default: *(none)*

### Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

---

## 🌈 Switch Science mbed HRM1017 🌈

### Contents 📜

- Switch Science mbed HRM1017
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### ✨ Hardware ✨

<pink>okay so</pink> Platform <cyan>`platform_nordicnrf51`</cyan>: The Nordic nRF51 Series is a whole family of <hotpink>highly flexible, multi-protocol, system-on-chip (SoC)</hotpink> devices made for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. <rainbow>versatile queen behavior honestly</rainbow> 💖

Here's the tea on the Switch Science mbed HRM1017 specs 🍓:

- **Microcontroller** — `NRF51822`
- **Frequency** — `16MHz`
- **Flash** — `256KB`
- **RAM** — `16KB`
- **Vendor** — `Switch Science`

---

### ✨ Configuration ✨

<pink>bestie</pink>, please use <cyan>`hrm1017`</cyan> ID for the `projectconf_env_board` option in `projectconf`:

[env:hrm1017] platform = nordicnrf51 board = hrm1017


You can override the default Switch Science mbed HRM1017 settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest <cyan>`hrm1017.json`</cyan>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <yellow>so much power tbh</yellow> ✨

[env:hrm1017] platform = nordicnrf51 board = hrm1017

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


---

### ✨ Uploading ✨

Switch Science mbed HRM1017 supports the next uploading protocols 💅:

- `cmsis-dap`
- `mbed`

Default protocol is <cyan>`cmsis-dap`</cyan>.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:hrm1017] platform = nordicnrf51 board = hrm1017

upload_protocol = cmsis-dap


---

### ✨ Debugging ✨

`piodebug` — the "1-click" solution for debugging with a zero configuration. <green>iconic, no notes</green> 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>don't skip this bestie, fr fr</red> 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Switch Science mbed HRM1017 has an <hotpink>on-board debug probe</hotpink> and IS READY for debugging. You don't need to use/buy an external debug probe. <rainbow>she comes prepared 💅</rainbow>

- **Compatible Tools:** `debugging_tool_cmsis-dap` — **On-board:** Yes — **Default:** Yes

---

### ✨ Frameworks ✨

- **Name:** `framework_mbed`

  **Description:** The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <purple>the range... the versatility... we love to see it</purple> 🌈

---

## 🌸 Switch Science mbed TY51822r3 🌸

### Contents

- Switch Science mbed TY51822r3
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### ✨ Hardware ✨

<pink>okay so</pink> Platform <cyan>`platform_nordicnrf51`</cyan>: The Nordic nRF51 Series is a family of <hotpink>highly flexible, multi-protocol, system-on-chip (SoC)</hotpink> devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. <rainbow>same energy, different board</rainbow> 🦋

Specs for the Switch Science mbed TY51822r3 💖:

- **Microcontroller** — `NRF51822`
- **Frequency** — `32MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Switch Science`

---

### ✨ Configuration ✨

<pink>bestie</pink>, please use <cyan>`ty51822r3`</cyan> ID for the `projectconf_env_board` option in `projectconf`:

[env:ty51822r3] platform = nordicnrf51 board = ty51822r3


You can override the default Switch Science mbed TY51822r3 settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest <cyan>`ty51822r3.json`</cyan>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <yellow>yes you can customize her</yellow> ✨

[env:ty51822r3] platform = nordicnrf51 board = ty51822r3

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 32000000L


---

### ✨ Uploading ✨

Switch Science mbed TY51822r3 supports the next uploading protocols 💅:

- `cmsis-dap`
- `mbed`

Default protocol is <cyan>`cmsis-dap`</cyan>.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:ty51822r3] platform = nordicnrf51 board = ty51822r3

upload_protocol = cmsis-dap


---

### ✨ Debugging ✨

`piodebug` — the "1-click" solution for debugging with a zero configuration. <green>iconic, no notes</green> 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>please actually do this bestie</red> 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Switch Science mbed TY51822r3 has an <hotpink>on-board debug probe</hotpink> and IS READY for debugging. You don't need to use/buy an external debug probe. <rainbow>she's self-sufficient, we stan 💅</rainbow>

- **Compatible Tools:** `debugging_tool_cmsis-dap` — **On-board:** Yes — **Default:** Yes

---

### ✨ Frameworks ✨

- **Name:** `framework_mbed`

  **Description:** The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <purple>the range... the versatility... we love to see it</purple> 🌈

---

## 🦋 VNG VBLUNO51 🦋

### Contents

- VNG VBLUNO51
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform <pink>`platform_nordicnrf51`</pink>: bestie, the Nordic nRF51 Series is a whole family of super flexible, multi-protocol, system-on-chip (SoC) devices made for ultra-low power wireless stuff. nRF51 Series devices support a bunch of protocol stacks — Bluetooth Smart (which, fun fact, used to be called Bluetooth low energy), ANT, and proprietary 2.4GHz protocols like Gazell. 💖

Here's the VNG VBLUNO51 tea:

- **Microcontroller** — `NRF51822`
- **Frequency** — `16MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — `VNG`

---

## ⚙️ Configuration

Use the <hotpink>`vbluno51`</hotpink> ID for the <purple>`projectconf_env_board`</purple> option in `projectconf`, okay? Like this:

[env:vbluno51] platform = nordicnrf51 board = vbluno51


You can also override the default VNG VBLUNO51 settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path taken from the board manifest `vbluno51.json`. Think `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:vbluno51] platform = nordicnrf51 board = vbluno51

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


---

## 🚀 Uploading

VNG VBLUNO51 supports these uploading protocols, no cap:

- `cmsis-dap`
- `mbed`

The default protocol is `cmsis-dap`. 👑

You can switch the upload protocol with the <purple>`projectconf_upload_protocol`</purple> option:

[env:vbluno51] platform = nordicnrf51 board = vbluno51

upload_protocol = cmsis-dap


---

## 🐛 Debugging

<cyan>`piodebug`</cyan> — the "1-click" solution for debugging with a zero configuration. Obsessed tbh. 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

VNG VBLUNO51 has an on-board debug probe and **IS READY** for debugging. You don't need to use or buy an external debug probe — main character board behaviour, honestly. 💅

- **`debugging_tool_cmsis-dap`** — On-board: **Yes**, Default: **Yes**

---

## 🧚 Frameworks

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, which means you can code down to the metal if you need to. On top of RTOS, USB and Networking libraries, the mbed Developer Community has built a cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. 🌸
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥

---

# 🌊 Waveshare BLE400

## 📜 Contents

- Waveshare BLE400
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform <pink>`platform_nordicnrf51`</pink>: the Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. 🦋

Waveshare BLE400 specs, right this way:

- **Microcontroller** — `NRF51822`
- **Frequency** — `32MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Waveshare`

---

## ⚙️ Configuration

Please use the <hotpink>`waveshare_ble400`</hotpink> ID for the <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:waveshare_ble400] platform = nordicnrf51 board = waveshare_ble400


You can override default Waveshare BLE400 settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest `waveshare_ble400.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:waveshare_ble400] platform = nordicnrf51 board = waveshare_ble400

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🚀 Uploading

Waveshare BLE400 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is `jlink`. 💜

You can change the upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:waveshare_ble400] platform = nordicnrf51 board = waveshare_ble400

upload_protocol = jlink


---

## 🐛 Debugging

<cyan>`piodebug`</cyan> — "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

Waveshare BLE400 does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭 — you will need to use or buy one of the external probes listed below:

- **`debugging_tool_blackmagic`** — On-board: *(blank)*, Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(blank)*, Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: *(blank)*, Default: *(blank)*

### Frameworks

okay so last lil table for this board — the frameworks it fw plays with 💖

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic, honestly.
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. very serious, very capable 🫶

---

## ng-beacon

### Contents

- ng-beacon
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

<pink>`platform_nordicnrf51`</pink>: The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. no cap, that's the whole vibe ✨

- **Microcontroller**: `NRF51822`
- **Frequency**: `16MHz`
- **Flash**: `256KB`
- **RAM**: `32KB`
- **Vendor**: `ng-beacon`

### Configuration

bestie, please use the <hotpink>`ng_beacon`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:ng_beacon] platform = nordicnrf51 board = ng_beacon


You can override the default ng-beacon settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `ng_beacon.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. yes you can customize, go off 💅

[env:ng_beacon] platform = nordicnrf51 board = ng_beacon

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


### Uploading

ng-beacon supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is `jlink` 🌸

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:ng_beacon] platform = nordicnrf51 board = ng_beacon

upload_protocol = jlink


### Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally one click, we love that for you 😭

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<purple>ng-beacon does not have on-board debug probe and **IS NOT READY** for debugging.</purple> You will need to use/buy one of the external probes listed below. not the plot twist we wanted but okay 🫠

- **`debugging_tool_blackmagic`** — On-board: *(nothing, it's empty)*; Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(nothing, it's empty)*; Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: *(nothing, it's empty)*; Default: *(blank)*

### Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. slay 🎀

---

## y5 nRF51822 mbug

### Contents

- y5 nRF51822 mbug
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

<pink>`platform_nordicnrf51`</pink>: The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. same energy as before, and it still eats 💖

- **Microcontroller**: `NRF51822`
- **Frequency**: `16MHz`
- **Flash**: `256KB`
- **RAM**: `16KB`
- **Vendor**: `y5 design`

### Configuration

okay so please use the <hotpink>`nrf51822_y5_mbug`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:nrf51822_y5_mbug] platform = nordicnrf51 board = nrf51822_y5_mbug


You can override the default y5 nRF51822 mbug settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nrf51822_y5_mbug.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌈

[env:nrf51822_y5_mbug] platform = nordicnrf51 board = nrf51822_y5_mbug

; change microcontroller board_build.mcu = nrf51822

; change MCU frequency board_build.f_cpu = 16000000L


### Uploading

y5 nRF51822 mbug supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `cmsis-dap` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nrf51822_y5_mbug] platform = nordicnrf51 board = nrf51822_y5_mbug

upload_protocol = cmsis-dap


### Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. zero config, zero stress, we stan 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

okay so <pink>`y5 nRF51822 mbug`</pink> has on-board debug probe and IS READY for debugging 💅 you genuinely do **not** need to use/buy external debug probe. it's giving self-sufficient.

here's the compatible-tools tea ☕ (a little "—" means that cell is empty in the table, no cap):

- **`debugging_tool_blackmagic`** — on-board: — · default: —
- **`debugging_tool_cmsis-dap`** — on-board: **Yes** · default: **Yes**
- **`debugging_tool_jlink`** — on-board: — · default: —
- **`debugging_tool_stlink`** — on-board: — · default: —

### Frameworks 🧚

- **`framework_mbed`** — the mbed framework. bestie, the mbed SDK was literally designed to give you enough hardware abstraction to be intuitive and concise, yet still powerful enough to build complex projects. it sits on top of the low-level ARM CMSIS APIs, so you *can* code down to the metal if you need to. and on top of RTOS, USB and Networking libraries, the mbed Developer Community has built a whole cookbook of hundreds of reusable peripheral and module libraries. ate. 👑

---

## Nordic nRF52 🌈

**96Boards Nitrogen** 🦋

### Contents 📋

- 96Boards Nitrogen
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 🔧

Platform `platform_nordicnrf52`: the nRF52 Series are built for speed — to carry out increasingly complex tasks in the shortest possible time and then dip back to sleep, conserving that precious, precious battery power 🔋. they've got a Cortex-M4F processor and they're the most capable Bluetooth Smart SoCs on the market. periodt.

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `96Boards`

### Configuration ⚙️

pls use the `96b_nitrogen` ID for the `projectconf_env_board` option in `projectconf`:

[env:96b_nitrogen] platform = nordicnrf52 board = 96b_nitrogen


you can override the default 96Boards Nitrogen settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `96b_nitrogen.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:96b_nitrogen] platform = nordicnrf52 board = 96b_nitrogen

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


### Uploading 🚀

96Boards Nitrogen supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is `jlink`

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:96b_nitrogen] platform = nordicnrf52 board = 96b_nitrogen

upload_protocol = jlink


### Debugging 🐛

`piodebug` - "1-click" solution for debugging with a zero configuration.

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. 👀

you can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

96Boards Nitrogen does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭 you will need to use/buy one of the external probes listed below.

- **`debugging_tool_blackmagic`** — on-board: — · default: **Yes**
- **`debugging_tool_jlink`** — on-board: — · default: —
- **`debugging_tool_stlink`** — on-board: — · default: —

### Frameworks 🧚

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. ✨

---

**Adafruit Bluefruit nRF52832 Feather** 🪶

### Contents 📋

- Adafruit Bluefruit nRF52832 Feather
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 🔧

Platform `platform_nordicnrf52`: the nRF52 Series are built for speed — to carry out increasingly complex tasks in the shortest possible time and then return to sleep, conserving that precious battery power 🔋. they have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. iconic behaviour, honestly.

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `Adafruit`

### Configuration ⚙️

pls use the `adafruit_feather_nrf52832` ID for the `projectconf_env_board` option in `projectconf`:

[env:adafruit_feather_nrf52832] platform = nordicnrf52 board = adafruit_feather_nrf52832


you can override the default Adafruit Bluefruit nRF52832 Feather settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_feather_nrf52832.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:adafruit_feather_nrf52832] platform = nordicnrf52 board = adafruit_feather_nrf52832

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


### Uploading 🚀

Adafruit Bluefruit nRF52832 Feather supports the next uploading protocols:

- `jlink`
- `nrfjprog`
- `nrfutil`
- `stlink`

Default protocol is `nrfutil`

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_feather_nrf52832] platform = nordicnrf52 board = adafruit_feather_nrf52832

upload_protocol = nrfutil


### Debugging 🐛

`piodebug` - "1-click" solution for debugging with a zero configuration.

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Adafruit Bluefruit nRF52832 Feather does **not** have an on-board debug probe and **IS NOT READY for debugging**. <pink>You will need to use/buy one of the external probes listed below.</pink> 💅

- **`debugging_tool_jlink`** — no on-board probe, **Default: Yes** 👑
- **`debugging_tool_stlink`** — no on-board probe

---

### ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🌸

---

## 🦋 Adafruit Feather Bluefruit Sense

### Contents

- Adafruit Feather Bluefruit Sense
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_nordicnrf52`: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. 🔥

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `796KB`
- **RAM** — `243KB`
- **Vendor** — Adafruit

### Configuration

Please use `adafruit_feather_nrf52840_sense` ID for the `projectconf_env_board` option in `projectconf`: 🫶

[env:adafruit_feather_nrf52840_sense] platform = nordicnrf52 board = adafruit_feather_nrf52840_sense


You can override default Adafruit Feather Bluefruit Sense settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_feather_nrf52840_sense.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:adafruit_feather_nrf52840_sense] platform = nordicnrf52 board = adafruit_feather_nrf52840_sense

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


### Uploading

Adafruit Feather Bluefruit Sense supports the next uploading protocols: 💖

- `jlink`
- `nrfjprog`
- `nrfutil`
- `stlink`

Default protocol is `nrfutil`. <mint>periodt.</mint>

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_feather_nrf52840_sense] platform = nordicnrf52 board = adafruit_feather_nrf52840_sense

upload_protocol = nrfutil


### Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. 👑

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Adafruit Feather Bluefruit Sense does **not** have an on-board debug probe and **IS NOT READY for debugging**. <pink>You will need to use/buy one of the external probes listed below.</pink> 💅

- **`debugging_tool_jlink`** — no on-board probe, **Default: Yes** 👑
- **`debugging_tool_stlink`** — no on-board probe

### Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

---

## 🌈 Adafruit Feather nRF52840 Express

### Contents

- Adafruit Feather nRF52840 Express
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_nordicnrf52`: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. 🔥

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `796KB`
- **RAM** — `243KB`
- **Vendor** — Adafruit

### Configuration

Please use `adafruit_feather_nrf52840` ID for the `projectconf_env_board` option in `projectconf`: 🫶

[env:adafruit_feather_nrf52840] platform = nordicnrf52 board = adafruit_feather_nrf52840


You can override default Adafruit Feather nRF52840 Express settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_feather_nrf52840.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:adafruit_feather_nrf52840] platform = nordicnrf52 board = adafruit_feather_nrf52840

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


### Uploading

Adafruit Feather nRF52840 Express supports the next uploading protocols: 💖

- `jlink`
- `nrfjprog`
- `nrfutil`
- `stlink`

Default protocol is `nrfutil`. <mint>periodt.</mint>

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_feather_nrf52840] platform = nordicnrf52 board = adafruit_feather_nrf52840

upload_protocol = nrfutil


### Debugging 💅

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally zero setup, she just *works*.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. no cap, do this first or you'll be sitting there like 🧍

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Adafruit Feather nRF52840 Express does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭. You will need to use/buy one of the external probes listed below.

- **`debugging_tool_jlink`** — on-board: no — default: **Yes** ✨
- **`debugging_tool_stlink`** — on-board: no — default: no

---

### Frameworks 🦋

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving main character energy for makers, fr fr.

---

## 👑 Arduino Nano 33 BLE 👑

### Contents 🎀

- Arduino Nano 33 BLE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware 🌸

Platform `platform_nordicnrf52`: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. obsessed, honestly.

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `960KB`
- **RAM** — `256KB`
- **Vendor** — Arduino

---

### Configuration ✨

Please use `nano33ble` ID for the `projectconf_env_board` option in `projectconf`:

[env:nano33ble] platform = nordicnrf52 board = nano33ble


You can override default Arduino Nano 33 BLE settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `nano33ble.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nano33ble] platform = nordicnrf52 board = nano33ble

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


---

### Uploading 🫶

Arduino Nano 33 BLE supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `nrfjprog`
- `nrfutil`
- `sam-ba`

Default protocol is `sam-ba`

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nano33ble] platform = nordicnrf52 board = nano33ble

upload_protocol = sam-ba


---

### Debugging 💖

`piodebug` — the "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Arduino Nano 33 BLE does **not** have an on-board debug probe and **IS NOT READY** for debugging 💀. You will need to use/buy one of the external probes listed below.

- **`debugging_tool_cmsis-dap`** — on-board: no — default: **Yes** ⭐
- **`debugging_tool_jlink`** — on-board: no — default: no

---

### Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🦋 BL652 Development Kit 🦋

### Contents 🎀

- BL652 Development Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware 🍓

Platform `platform_nordicnrf52`: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market.

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — Laird Connectivity

---

### Configuration 🧚

Please use `laird_bl652_dvk` ID for the `projectconf_env_board` option in `projectconf`:

[env:laird_bl652_dvk] platform = nordicnrf52 board = laird_bl652_dvk


You can override default BL652 Development Kit settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `laird_bl652_dvk.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:laird_bl652_dvk] platform = nordicnrf52 board = laird_bl652_dvk

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


---

### Uploading 💜

BL652 Development Kit supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `jlink`

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:laird_bl652_dvk] platform = nordicnrf52 board = laird_bl652_dvk

upload_protocol = jlink


---

### Debugging 🔥

`piodebug` — the "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>BL652 Development Kit</pink> has an on-board debug probe and is <rainbow>READY</rainbow> for debugging. 💅 Like, it literally comes with the whole setup already. You do <bold>NOT</bold> need to use or buy an external debug probe. Bestie. Save your coins. 🎀

Here's the vibe check on which tools are compatible and what the board gives you out of the box:

- **`debugging_tool_blackmagic`** — compatible tool; the *On-board* box is empty and the *Default* box is empty too
- **`debugging_tool_cmsis-dap`** — compatible tool; *On-board*: <green>Yes</green>; *Default* box is empty
- **`debugging_tool_jlink`** — compatible tool; *On-board*: <green>Yes</green>; *Default*: <green>Yes</green> 👑
- **`debugging_tool_stlink`** — compatible tool; the *On-board* box is empty and the *Default* box is empty too

---

So yeah, `debugging_tool_jlink` is the one that's both on-board <hotpink>and</hotpink> the default, no cap. 🦋

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <pink>it's giving tiny chip, huge ambitions ✨</pink>

---

## 🎀 BL654 Development Kit 🎀

### 💖 Contents 💖

- BL654 Development Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🦋 Hardware 🦋

**Platform** `platform_nordicnrf52`: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. <cyan>sleep, slay, repeat, conserve that battery bestie 🔋</cyan>

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `Laird Connectivity`

---

### 🌸 Configuration 🌸

Please use `laird_bl654_dvk` ID for `projectconf_env_board` option in `projectconf`:

[env:laird_bl654_dvk] platform = nordicnrf52 board = laird_bl654_dvk


You can override default BL654 Development Kit settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `laird_bl654_dvk.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>literally you can just vibe in and rewrite the defaults, no cap</purple>

[env:laird_bl654_dvk] platform = nordicnrf52 board = laird_bl654_dvk

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


---

### 🌈 Uploading 🌈

BL654 Development Kit supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `jlink`. <yellow>iconic default behaviour, honestly</yellow>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:laird_bl654_dvk] platform = nordicnrf52 board = laird_bl654_dvk

upload_protocol = jlink


---

### 💅 Debugging 💅

`piodebug` — "1-click" solution for debugging with a zero configuration. <hotpink>zero config?? the way that just works 🫶</hotpink>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

BL654 Development Kit has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <mint>built-in probe?? she came PREPARED 👑</mint>

Compatible Tools:

- `debugging_tool_blackmagic` — On-board: *(not listed)*, Default: *(not listed)*
- `debugging_tool_cmsis-dap` — On-board: **Yes**, Default: *(not listed)*
- `debugging_tool_jlink` — On-board: **Yes**, Default: **Yes**
- `debugging_tool_stlink` — On-board: *(not listed)*, Default: *(not listed)*

---

### ⭐ Frameworks ⭐

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

## 🧚 Bluey nRF52832 IoT 🧚

### 🍓 Contents 🍓

- Bluey nRF52832 IoT
  - Hardware
  - Configuration
  - Uploading

- **Debugging**

  - **Frameworks**

---

## 🌸 Hardware

Platform `platform_nordicnrf52`: bestie, the nRF52 Series are built for **speed** — like, to carry out increasingly complex tasks in the shortest possible time and then *immediately* return to sleep, conserving precious battery power 💅. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. No cap. 🔥

So for the **Bluey nRF52832 IoT**, here's the vibe check on specs:

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — Electronut Labs

---

## ✨ Configuration

Please use `bluey` ID for `projectconf_env_board` option in `projectconf`:

[env:bluey] platform = nordicnrf52 board = bluey


You can override default **Bluey nRF52832 IoT** settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `bluey.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:bluey] platform = nordicnrf52 board = bluey

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


---

## 🦋 Uploading

Bluey nRF52832 IoT supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is `jlink` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:bluey] platform = nordicnrf52 board = bluey

upload_protocol = jlink


---

## 💜 Debugging

`piodebug` — the "1-click" solution for debugging with a **zero configuration** 😭👑

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Bluey nRF52832 IoT does **not** have on-board debug probe and **IS NOT READY** for debugging 💀. You will need to use/buy one of external probe listed below.

Compatible Tools:

- **`debugging_tool_blackmagic`** — On-board: *(not on-board)*, Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(not on-board)*, Default: *(not default)*
- **`debugging_tool_stlink`** — On-board: *(not on-board)*, Default: *(not default)*

---

## 🎀 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

---

# 👑 Circuit Playground Bluefruit

## Contents

- Circuit Playground Bluefruit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌸 Hardware

Platform `platform_nordicnrf52`: the nRF52 Series are built for **speed** — to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power 🔋. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market.

Specs for the Circuit Playground Bluefruit:

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `796KB`
- **RAM** — `243KB`
- **Vendor** — Adafruit

---

## ✨ Configuration

Please use `adafruit_cplaynrf52840` ID for `projectconf_env_board` option in

[env:adafruit_cplaynrf52840] platform = nordicnrf52 board = adafruit_cplaynrf52840


okay so like — you can override the default Circuit Playground Bluefruit settings <pink>per build environment</pink> using the `board_***` option, where `***` is a JSON object path straight out of the board manifest `adafruit_cplaynrf52840.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. bestie it's giving very "choose your own adventure" ✨

[env:adafruit_cplaynrf52840] platform = nordicnrf52 board = adafruit_cplaynrf52840

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


### ✨ Uploading ✨

Circuit Playground Bluefruit supports the next uploading protocols, and yes you get to pick your fighter 💅

- `jlink`
- `nrfjprog`
- `nrfutil`
- `stlink`

Default protocol is `nrfutil`. periodt.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_cplaynrf52840] platform = nordicnrf52 board = adafruit_cplaynrf52840

upload_protocol = nrfutil


### ✨ Debugging ✨

`piodebug` — the "1-click" solution for debugging with a **zero configuration**. iconic behaviour honestly 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the `projectconf_debug_tool` option in `projectconf`.

Circuit Playground Bluefruit does **not** have an on-board debug probe and is **NOT READY** for debugging 😭 you will need to use/buy one of the external probes listed below.

Compatible tools:

- **`debugging_tool_jlink`** — On-board: (nothing, hun) · Default: **Yes**
- **`debugging_tool_stlink`** — On-board: (nothing, hun) · Default: (nothing either)

### ✨ Frameworks ✨

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

---

# 💜 Delta DFBM-NQ620 💜

## Contents

- Delta DFBM-NQ620
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## ✨ Hardware ✨

Platform `platform_nordicnrf52`: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. no cap, that's a whole flex 🌈

- **Microcontroller:** `NRF52832`
- **Frequency:** `64MHz`
- **Flash:** `512KB`
- **RAM:** `64KB`
- **Vendor:** `Delta`

---

## ✨ Configuration ✨

Please use the `delta_dfbm_nq620` ID for the `projectconf_env_board` option in `projectconf`:

[env:delta_dfbm_nq620] platform = nordicnrf52 board = delta_dfbm_nq620


You can override the default Delta DFBM-NQ620 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `delta_dfbm_nq620.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:delta_dfbm_nq620] platform = nordicnrf52 board = delta_dfbm_nq620

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


---

## ✨ Uploading ✨

Delta DFBM-NQ620 supports the next uploading protocols — a whole menu, order whatever you want 😌

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

okay so the default protocol is <pink>`cmsis-dap`</pink>, that's just the vibe it ships with bestie 💅

You can change upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:delta_dfbm_nq620] platform = nordicnrf52 board = delta_dfbm_nq620

upload_protocol = cmsis-dap


---

### 💅 Debugging 💅

`piodebug` — the "1-click" solution for debugging with a zero configuration. it's giving main character energy fr fr ✨

> **WARNING:** 🫶
>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <lavender>`debugging_tools`</lavender> using the <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

<green>Delta DFBM-NQ620</green> has an on-board debug probe and **IS READY** for debugging. 🔥 You don't need to use/buy an external debug probe, periodt. 💖

Compatible tools, bestie:

- <cyan>`debugging_tool_blackmagic`</cyan> — On-board: (no), Default: (no)
- <cyan>`debugging_tool_cmsis-dap`</cyan> — On-board: **Yes**, Default: **Yes** 👑
- <cyan>`debugging_tool_jlink`</cyan> — On-board: (no), Default: (no)
- <cyan>`debugging_tool_stlink`</cyan> — On-board: (no), Default: (no)

---

### 🌸 Frameworks 🌸

the frameworks this board can run, no cap:

- <hotpink>`framework_arduino`</hotpink> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- <hotpink>`framework_mbed`</hotpink> — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🦋

---

## ✨ ElectronutLabs Blip ✨

okay bestie, this is the <rainbow>ElectronutLabs Blip</rainbow> board and she is *iconic* 🌈

**Contents**

- ElectronutLabs Blip
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Platform <purple>`platform_nordicnrf52`</purple>: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. 💀✨

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `ElectronutLabs`

---

### ⚙️ Configuration ⚙️

Please use <hotpink>`electronut_blip`</hotpink> ID for the <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:electronut_blip] platform = nordicnrf52 board = electronut_blip


You can override default ElectronutLabs Blip settings per build environment using the <lavender>`board_***`</lavender> option, where <lavender>`***`</lavender> is a JSON object path from the board manifest <lavender>`electronut_blip.json`</lavender>. For example, <lavender>`board_build.mcu`</lavender>, <lavender>`board_build.f_cpu`</lavender>, etc. 🎀

[env:electronut_blip] platform = nordicnrf52 board = electronut_blip

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


---

### 📤 Uploading 📤

ElectronutLabs Blip supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is <pink>`blackmagic`</pink> 🖤

You can change upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:electronut_blip] platform = nordicnrf52 board = electronut_blip

upload_protocol = blackmagic


---

### 💅 Debugging 💅

`piodebug` — the "1-click" solution for debugging with a zero configuration. slay 💖

> **WARNING:** 🫶
>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <lavender>`debugging_tools`</lavender> using the <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

<green>ElectronutLabs Blip</green> has an on-board debug probe and **IS READY** for debugging. 🔥 You don't need to use/buy an external debug probe, periodt. 💜

Compatible tools, bestie:

- <cyan>`debugging_tool_blackmagic`</cyan> — On-board: **Yes**, Default: **Yes** 👑
- <cyan>`debugging_tool_cmsis-dap`</cyan> — On-board: (no), Default: (no)
- <cyan>`debugging_tool_jlink`</cyan> — On-board: (no), Default: (no)
- <cyan>`debugging_tool_stlink`</cyan> — On-board: (no), Default: (no)

### ✨ Frameworks ✨

okay so here's the one framework that ships with this board, and honestly? it's a whole vibe:

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 💖

---

## 🦋 ElectronutLabs Papyr 🦋

### Contents

here's the lil map of this whole section, bestie — no skipping, we're reading all of it:

- ElectronutLabs Papyr
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🌸 Hardware 🌸

Platform <purple>`platform_nordicnrf52`</purple>: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a <cyan>Cortex-M4F</cyan> processor and are the most capable Bluetooth Smart SoCs on the market. literally iconic behavior.

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `ElectronutLabs`

---

### 🎀 Configuration 🎀

Please use <hotpink>`electronut_papyr`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:electronut_papyr] platform = nordicnrf52 board = electronut_papyr


You can override default ElectronutLabs Papyr settings per build environment using <yellow>`board_***`</yellow> option, where `***` is a JSON object path from board manifest `electronut_papyr.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. so much power fr fr.

[env:electronut_papyr] platform = nordicnrf52 board = electronut_papyr

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


---

### 🌈 Uploading 🌈

ElectronutLabs Papyr supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is <mint>`blackmagic`</mint> 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:electronut_papyr] platform = nordicnrf52 board = electronut_papyr

upload_protocol = blackmagic


---

### 💜 Debugging 💜

`piodebug` — "1-click" solution for debugging with a zero configuration. obsessed.

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this part bestie, the drivers are not gonna install themselves 😭

You can switch between debugging <purple>`debugging_tools`</purple> using `projectconf_debug_tool` option in `projectconf`.

ElectronutLabs Papyr has on-board debug probe and <green>IS READY</green> for debugging. You don't need to use/buy external debug probe. main character energy, no cap.

- **Compatible Tools:** `debugging_tool_blackmagic` — **On-board:** Yes — **Default:** Yes
- **Compatible Tools:** `debugging_tool_cmsis-dap` — **On-board:** (blank) — **Default:** (blank)
- **Compatible Tools:** `debugging_tool_jlink` — **On-board:** (blank) — **Default:** (blank)
- **Compatible Tools:** `debugging_tool_stlink` — **On-board:** (blank) — **Default:** (blank)

---

### ✨ Frameworks ✨

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 💖

---

## 🦋 Holyiot YJ-16019 🦋

### Contents

same lil map, new board, let's go:

- Holyiot YJ-16019
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🌸 Hardware 🌸

Platform <purple>`platform_nordicnrf52`</purple>: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a <cyan>Cortex-M4F</cyan> processor and are the most capable Bluetooth Smart SoCs on the market.

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `Holyiot`

---

### 🎀 Configuration 🎀

Please use <hotpink>`holyiot_yj16019`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:holyiot_yj16019] platform = nordicnrf52 board = holyiot_yj16019


You can override default Holyiot YJ-16019 settings per build environment using <yellow>`board_***`</yellow> option, where `***` is a JSON object path from board manifest `holyiot_yj16019.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:holyiot_yj16019] platform = nordicnrf52 board = holyiot_yj16019

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


---

### 🌈 Uploading 🌈

Holyiot YJ-16019 supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is <mint>`jlink`</mint> ✨ (yes, different from the Papyr, don't get it twisted)

You can change upload protocol using `projectconf_upload_protocol` option:

[env:holyiot_yj16019] platform = nordicnrf52 board = holyiot_yj16019

upload_protocol = jlink


---

### 💜 Debugging 💜

`piodebug` — "1-click" solution for debugging with a zero configuration.

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. fr fr, go get those drivers. 🙈

You can switch between debugging <purple>`debugging_tools`</purple> using `projectconf_debug_tool` option in `projectconf`.

Holyiot YJ-16019 does not have on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of external probe listed below. yeah. you gotta go shopping bestie, there's no built-in probe here 😭

- **Compatible Tools:** `debugging_tool_blackmagic` — **On-board:** (blank) — **Default:** Yes
- **Compatible Tools:** `debugging_tool_cmsis-dap` — **On-board:** (blank) — **Default:** (blank)
- **Compatible Tools:** `debugging_tool_jlink` — **On-board:** (blank) — **Default:** (blank)
- **Compatible Tools:** `debugging_tool_stlink` — **On-board:** (blank) — **Default:** (blank)

### Frameworks

- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) that supports multiple hardware architectures, is optimized for resource constrained devices, and was built with safety and security in mind. ✨

---

## 🌈 ItsyBitsy nRF52840 Express

### Contents

- ItsyBitsy nRF52840 Express
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform <purple>`platform_nordicnrf52`</purple>: the nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. 💅

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `796KB`
- **RAM** — `243KB`
- **Vendor** — `Adafruit`

### Configuration

Bestie please use `adafruit_itsybitsy_nrf52840` ID for the <cyan>`projectconf_env_board`</cyan> option in `projectconf`:

[env:adafruit_itsybitsy_nrf52840] platform = nordicnrf52 board = adafruit_itsybitsy_nrf52840


You can override default ItsyBitsy nRF52840 Express settings per build environment using the <yellow>`board_***`</yellow> option, where <yellow>`***`</yellow> is a JSON object path from board manifest `adafruit_itsybitsy_nrf52840.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:adafruit_itsybitsy_nrf52840] platform = nordicnrf52 board = adafruit_itsybitsy_nrf52840

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


### Uploading

ItsyBitsy nRF52840 Express supports the next uploading protocols:

- `jlink`
- `nrfjprog`
- `nrfutil`
- `stlink`

Default protocol is `nrfutil` — that's the one it's serving by default, no cap. 👑

You can change the upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:adafruit_itsybitsy_nrf52840] platform = nordicnrf52 board = adafruit_itsybitsy_nrf52840

upload_protocol = nrfutil


### Debugging

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. 🪄

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <purple>`debugging_tools`</purple> using the <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`.

ItsyBitsy nRF52840 Express has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Literally iconic. 💖

- **Compatible Tools:** `debugging_tool_jlink` — **On-board:** Yes — **Default:** Yes
- **Compatible Tools:** `debugging_tool_stlink` — **On-board:** (blank) — **Default:** (blank)

### Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

---

## 🦋 Makerdiary nRF52832-MDK

### Contents

- Makerdiary nRF52832-MDK
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform <purple>`platform_nordicnrf52`</purple>: the nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. 💅

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `Makerdiary`

### Configuration

Please use `nrf52832_mdk` ID for the <cyan>`projectconf_env_board`</cyan> option in `projectconf`:

[env:nrf52832_mdk] platform = nordicnrf52 board = nrf52832_mdk


You can override default Makerdiary nRF52832-MDK settings per build environment using the <yellow>`board_***`</yellow> option, where <yellow>`***`</yellow> is a JSON object path from board manifest `nrf52832_mdk.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nrf52832_mdk] platform = nordicnrf52 board = nrf52832_mdk

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


### Uploading

Makerdiary nRF52832-MDK supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `cmsis-dap` — that's the main character of the upload protocols here. 👑

You can change the upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:nrf52832_mdk] platform = nordicnrf52 board = nrf52832_mdk

upload_protocol = cmsis-dap


### Debugging

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. 🪄

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <purple>`debugging_tools`</purple> using the <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`.

Makerdiary nRF52832-MDK has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. So slay of it fr fr. 💖

- **Compatible Tools:** `debugging_tool_blackmagic` — **On-board:** (blank) — **Default:** (blank)
- **Compatible Tools:** `debugging_tool_cmsis-dap` — **On-board:** Yes — **Default:** Yes
- **Compatible Tools:** `debugging_tool_jlink` — **On-board:** (blank) — **Default:** (blank)
- **Compatible Tools:** `debugging_tool_stlink` — **On-board:** (blank) — **Default:** (blank)

okay so the framework sitch for the board above is literally a party of one, and she's eating 💅

┌──────────────────┬──────────────────────────┐ │ Name │ Description │ ├──────────────────┼──────────────────────────┤ │ framework_zephyr │ The Zephyr Project is a │ │ │ scalable real-time │ │ │ operating system (RTOS) │ │ │ supporting multiple │ │ │ hardware architectures, │ │ │ optimized for resource │ │ │ constrained devices, and │ │ │ built with safety and │ │ │ security in mind. │ └──────────────────┴──────────────────────────┘


---

## 👑 Makerdiary nRF52840-MDK 👑

### 📋 Contents

- Makerdiary nRF52840-MDK
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_nordicnrf52`: bestie, the nRF52 Series are <hotpink>built for speed</hotpink> — like, carry out increasingly complex tasks in the shortest possible time and then go straight back to sleep, conserving that precious, precious battery power 🪫✨. They've got a Cortex-M4F processor and they are the most capable Bluetooth Smart SoCs on the market. no cap.

┌─────────────────┬────────────┐ │ Microcontroller │ NRF52840 │ ├─────────────────┼────────────┤ │ Frequency │ 64MHz │ ├─────────────────┼────────────┤ │ Flash │ 1MB │ ├─────────────────┼────────────┤ │ RAM │ 256KB │ ├─────────────────┼────────────┤ │ Vendor │ Makerdiary │ └─────────────────┴────────────┘


### ⚙️ Configuration

okay so please use the `nrf52840_mdk` ID for the `projectconf_env_board` option in `projectconf`, mmk? 🫶

[env:nrf52840_mdk] platform = nordicnrf52 board = nrf52840_mdk


you can also override the default Makerdiary nRF52840-MDK settings <purple>per build environment</purple> using the `board_***` option, where `***` is a JSON object path from the board manifest `nrf52840_mdk.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:nrf52840_mdk] platform = nordicnrf52 board = nrf52840_mdk

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


### ⬆️ Uploading

Makerdiary nRF52840-MDK supports the next uploading protocols, and yes she has <mint>options</mint>:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `cmsis-dap` — that's the one she comes dressed in.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nrf52840_mdk] platform = nordicnrf52 board = nrf52840_mdk

upload_protocol = cmsis-dap


### 🐛 Debugging

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. iconic, honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Makerdiary nRF52840-MDK has an on-board debug probe and <green>IS READY</green> for debugging. You don't need to use/buy an external debug probe — she's self-sufficient, main character energy fr fr 😌

┌───────────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_blackmagic │ │ │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_cmsis-dap │ Yes │ Yes │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_jlink │ │ │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_stlink │ │ │ └───────────────────────────┴──────────┴─────────┘


### 🧚 Frameworks

one framework, one legend:

┌──────────────────┬──────────────────────────┐ │ Name │ Description │ ├──────────────────┼──────────────────────────┤ │ framework_zephyr │ The Zephyr Project is a │ │ │ scalable real-time │ │ │ operating system (RTOS) │ │ │ supporting multiple │ │ │ hardware architectures, │ │ │ optimized for resource │ │ │ constrained devices, and │ │ │ built with safety and │ │ │ security in mind. │ └──────────────────┴──────────────────────────┘


---

## 🌈 Metro nRF52840 Express 🌈

### 📋 Contents

- Metro nRF52840 Express
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_nordicnrf52`: the nRF52 Series are built for speed — carry out increasingly complex tasks in the shortest possible time and then return to sleep, conserving precious battery power 🔋. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. periodt.

┌─────────────────┬──────────┐ │ Microcontroller │ NRF52840 │ ├─────────────────┼──────────┤ │ Frequency │ 64MHz │ ├─────────────────┼──────────┤ │ Flash │ 796KB │ ├─────────────────┼──────────┤ │ RAM │ 243KB │ ├─────────────────┼──────────┤ │ Vendor │ Adafruit │ └─────────────────┴──────────┘


### ⚙️ Configuration

please use the `adafruit_metro_nrf52840` ID for the `projectconf_env_board` option in `projectconf` 💖

[env:adafruit_metro_nrf52840] platform = nordicnrf52 board = adafruit_metro_nrf52840


you can override the default Metro nRF52840 Express settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `adafruit_metro_nrf52840.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:adafruit_metro_nrf52840] platform = nordicnrf52 board = adafruit_metro_nrf52840

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


### ⬆️ Uploading

Metro nRF52840 Express supports the next uploading protocols:

- `jlink`
- `nrfjprog`
- `nrfutil`
- `stlink`

Default protocol is `nrfutil` — that's the default girlie.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:adafruit_metro_nrf52840] platform = nordicnrf52 board = adafruit_metro_nrf52840

upload_protocol = nrfutil


### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration 🐞✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Metro nRF52840 Express does <red>not</red> have an on-board debug probe and <red>IS NOT READY</red> for debugging 😭. You will need to use/buy one of the external probes listed below — no skipping this step bestie.

┌───────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├───────────────────────┼──────────┼─────────┤ │ debugging_tool_jlink │ │ Yes │ ├───────────────────────┼──────────┼─────────┤ │ debugging_tool_stlink │ │ │ └───────────────────────┴──────────┴─────────┘


- **`framework_arduino`** — <cyan>Arduino Wiring-based Framework</cyan> lets you write cross-platform software that controls devices attached to a wide range of Arduino boards, so you can build all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving ✨maker energy✨ and we love that for you 💖

---

## 🦋 <rainbow>Nordic Thingy:52 (nRF52-PCA20020)</rainbow> 🦋

### 📖 Contents

- Nordic Thingy:52 (nRF52-PCA20020)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🛠️ Hardware

Platform `platform_nordicnrf52`: the nRF52 Series are built for speed, bestie — they carry out increasingly complex tasks in the shortest possible time and then bounce right back to sleep, conserving that precious battery power 💤🔋. They've got a Cortex-M4F processor and they are <hotpink>the most capable Bluetooth Smart SoCs on the market</hotpink>. no cap.

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `Nordic`

### ⚙️ Configuration

okay so please use the `thingy_52` ID for the `projectconf_env_board` option in `projectconf`:

[env:thingy_52] platform = nordicnrf52 board = thingy_52


You can override the default Nordic Thingy:52 (nRF52-PCA20020) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `thingy_52.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:thingy_52] platform = nordicnrf52 board = thingy_52

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


### ⬆️ Uploading

Nordic Thingy:52 (nRF52-PCA20020) supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is `jlink` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:thingy_52] platform = nordicnrf52 board = thingy_52

upload_protocol = jlink


### 🐞 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally zero setup, she's low maintenance 🌸

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🚨

You can switch between `debugging` `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Nordic Thingy:52 (nRF52-PCA20020) does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. 😭 (yes, you have to go shopping, sorry bestie)

- **`debugging_tool_blackmagic`** — on-board: <red>✗</red> · default: <green>Yes</green> 👑
- **`debugging_tool_cmsis-dap`** — on-board: <red>✗</red> · default: —
- **`debugging_tool_jlink`** — on-board: <red>✗</red> · default: —
- **`debugging_tool_stlink`** — on-board: <red>✗</red> · default: —

### 🧩 Frameworks

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥 RTOS but make it ✨responsible✨

---

## 🌸 <rainbow>Nordic nRF52-DK</rainbow> 🌸

### 📖 Contents

- Nordic nRF52-DK
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🛠️ Hardware

Platform `platform_nordicnrf52`: the nRF52 Series are built for speed, so they can carry out increasingly complex tasks in the shortest possible time and then return to sleep, conserving precious battery power 💜. They have a Cortex-M4F processor and they're the most capable Bluetooth Smart SoCs on the market. iconic, honestly.

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `Nordic`

### ⚙️ Configuration

Please use the `nrf52_dk` ID for the `projectconf_env_board` option in `projectconf`:

[env:nrf52_dk] platform = nordicnrf52 board = nrf52_dk


You can override default Nordic nRF52-DK settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nrf52_dk.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:nrf52_dk] platform = nordicnrf52 board = nrf52_dk

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


### ⬆️ Uploading

Nordic nRF52-DK supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `jlink` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nrf52_dk] platform = nordicnrf52 board = nrf52_dk

upload_protocol = jlink


### 🐞 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. zero config, maximum slay 💖

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between `debugging` `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>okay bestie</pink> so the <cyan>Nordic nRF52-DK</cyan> has an <green>on-board debug probe</green> and it IS <rainbow>READY</rainbow> for debugging 💅 you literally do **not** need to use or buy an external debug probe. she's self-sufficient, main character energy, no cap 🎀

---

<h2><purple>Compatible Tools</purple> 🦋</h2>

- **`debugging_tool_blackmagic`** — on-board: —, default: —
- **`debugging_tool_cmsis-dap`** — on-board: **Yes**, default: —
- **`debugging_tool_jlink`** — on-board: **Yes**, default: **Yes** ✨
- **`debugging_tool_stlink`** — on-board: —, default: —

---

<h2><purple>Frameworks</purple> 🌸</h2>

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving crafty ✨
- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. ngl that's a lot of library lore 📚
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥

---

<h1><hotpink>Nordic nRF52840-DK</hotpink> 👑</h1>

<h2><purple>Contents</purple> 🎀</h2>

- Nordic nRF52840-DK
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

<h2><purple>Hardware</purple> 🦋</h2>

Platform `platform_nordicnrf52`: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power 🔋 They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. periodt.

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `Nordic`

---

<h2><purple>Configuration</purple> 💜</h2>

Please use the `nrf52840_dk` ID for the `projectconf_env_board` option in `projectconf`:

[env:nrf52840_dk] platform = nordicnrf52 board = nrf52840_dk


You can override default Nordic nRF52840-DK settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nrf52840_dk.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:nrf52840_dk] platform = nordicnrf52 board = nrf52840_dk

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


---

<h2><purple>Uploading</purple> 🌈</h2>

Nordic nRF52840-DK supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `jlink` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nrf52840_dk] platform = nordicnrf52 board = nrf52840_dk

upload_protocol = jlink


---

<h2><purple>Debugging</purple> 🫶</h2>

`piodebug` — "1-click" solution for debugging with a zero configuration. iconic, honestly 🌟

<purple>**WARNING:**</purple> 💀 bestie you're gonna need to install debug tool *drivers* depending on your system, fr. Please click on the compatible debug tool below for the further instructions and configuration information. Don't skip this step, I'm begging 🙏

You can switch between debugging tools using the `projectconf_debug_tool` option in projectconf. Easy peasy. ✨

<pink>Nordic nRF52840-DK has an on-board debug probe and is **READY** for debugging.</pink> 🎀 You do **not** need to use or buy an external debug probe. She comes with everything, periodt. 👑

**Compatible Tools:**

- `debugging_tool_blackmagic` — on-board: *(no)*, default: *(no)*
- `debugging_tool_cmsis-dap` — on-board: Yes, default: *(no)*
- `debugging_tool_jlink` — on-board: Yes, default: **Yes**
- `debugging_tool_stlink` — on-board: *(no)*, default: *(no)*

---

## 🌈 Frameworks 🌈

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces, or physical experiences. iykyk, it's giving maker main character energy 🦋

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. On top of that, besides RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries has been built on top of the SDK by the mbed Developer Community. so much lore honestly 💜

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource-constrained devices, and built with safety and security in mind. responsible queen 🎀

---

## 👑 Nordic nRF52840-DK (Adafruit BSP) 👑

### Contents

- Nordic nRF52840-DK (Adafruit BSP)
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### 🔧 Hardware

Platform `platform_nordicnrf52`: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. she's fast, she's efficient, she naps like a pro 😴🔥

- **Microcontroller:** `NRF52840`
- **Frequency:** `64MHz`
- **Flash:** `796KB`
- **RAM:** `243KB`
- **Vendor:** `Nordic`

---

### ⚙️ Configuration

Please use the `nrf52840_dk_adafruit` ID for the `projectconf_env_board` option in projectconf:

[env:nrf52840_dk_adafruit] platform = nordicnrf52 board = nrf52840_dk_adafruit


You can override the default Nordic nRF52840-DK (Adafruit BSP) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nrf52840_dk_adafruit.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. customize her, she won't mind 💅

[env:nrf52840_dk_adafruit] platform = nordicnrf52 board = nrf52840_dk_adafruit

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


---

### 🚀 Uploading

Nordic nRF52840-DK (Adafruit BSP) supports the next uploading protocols:

- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is `jlink` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nrf52840_dk_adafruit] platform = nordicnrf52 board = nrf52840_dk_adafruit

upload_protocol = jlink


## 💅 Debugging 💅

<rainbow>bestie</rainbow>, `piodebug` is the <hotpink>"1-click"</hotpink> solution for debugging with a zero configuration. like, you configure <mint>nothing</mint>. it just goes. 💅

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

okay so you can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. that's your little remote control for picking a probe 🎛️✨

Nordic nRF52840-DK (Adafruit BSP) has on-board debug probe and <green>IS READY</green> for debugging. You don't need to use/buy external debug probe. <rainbow>no shopping trip required, we love that</rainbow> 🛍️❌

and here's the compatible-tools tea ☕ — name, whether it's on-board, and whether it's the default:

- `debugging_tool_jlink` — On-board: <green>Yes</green>, Default: <green>Yes</green> 👑
- `debugging_tool_stlink` — On-board: *(blank)*, Default: *(blank)*

---

## 🌈 Frameworks 🌈

- **Name:** `framework_arduino`
- **Description:** Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

---

## 🦋 Particle Argon Contents 🦋

okay so now we're sliding into the <hotpink>Particle Argon</hotpink> page and this is its little table of contents, the whole itinerary 🗺️:

- Particle Argon
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔥 Hardware 🔥

**Platform** `platform_nordicnrf52`: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. ⚡👑

the spec sheet, and yes it's giving <purple>tiny but mighty</purple>:

- Microcontroller: `NRF52840`
- Frequency: `64MHz`
- Flash: `796KB`
- RAM: `243KB`
- Vendor: `Particle`

---

## 🎀 Configuration 🎀

Please use `particle_argon` ID for `projectconf_env_board` option in `projectconf`:

[env:particle_argon] platform = nordicnrf52 board = particle_argon


You can override default Particle Argon settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `particle_argon.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🧠

[env:particle_argon] platform = nordicnrf52 board = particle_argon

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


---

## 🚀 Uploading 🚀

Particle Argon supports the next uploading protocols:

- `jlink`
- `nrfjprog`
- `nrfutil`

Default protocol is `nrfutil` <yellow>(that's the one it picks if you say nothing)</yellow>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:particle_argon] platform = nordicnrf52 board = particle_argon

upload_protocol = nrfutil


---

## 💅 Debugging 💅

<rainbow>and now the remix, same energy, different board</rainbow> — `piodebug` is the <hotpink>"1-click"</hotpink> solution for debugging with a zero configuration. 💅

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`. 🎛️

Particle Argon does not have on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of external probe listed below. <peach>so yes, this one *does* require the shopping trip</peach> 🛒😭

- `debugging_tool_jlink` — On-board: *(blank)*, Default: <green>Yes</green> 👑

---

## 🌈 Frameworks 🌈

- **Name:** `framework_zephyr`
- **Description:** The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures,

…<green>optimized for resource constrained devices</green>, and <green>built with safety and security in mind</green>. ✨

---

## ✨ Particle Boron ✨

### 📦 Contents

- Particle Boron
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_nordicnrf52`: bestie, the nRF52 Series are <pink>built for speed</pink> to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a <cyan>Cortex-M4F</cyan> processor and are literally the most capable Bluetooth Smart SoCs on the market. 💅

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `796KB`
- **RAM** — `243KB`
- **Vendor** — Particle

### ⚙️ Configuration

Please use `particle_boron` ID for the `projectconf_env_board` option in `projectconf`, k? 🫶

[env:particle_boron] platform = nordicnrf52 board = particle_boron


You can override the default Particle Boron settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `particle_boron.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌈

[env:particle_boron] platform = nordicnrf52 board = particle_boron

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


### 🚀 Uploading

Particle Boron supports the next uploading protocols, no cap:

- `jlink`
- `nrfjprog`
- `nrfutil`

Default protocol is `nrfutil` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:particle_boron] platform = nordicnrf52 board = particle_boron

upload_protocol = nrfutil


### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic fr fr. ✨

> **WARNING:** 🚨
> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Particle Boron does **not** have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. 💀

- **`debugging_tool_jlink`** — On-board: (none) · Default: Yes

### 🧩 Frameworks

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🦋

---

## ✨ Particle Xenon ✨

### 📦 Contents

- Particle Xenon
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_nordicnrf52`: the nRF52 Series are <pink>built for speed</pink> to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. They have a <cyan>Cortex-M4F</cyan> processor and are the most capable Bluetooth Smart SoCs on the market. 💅

- **Microcontroller** — `NRF52840`
- **Frequency** — `64MHz`
- **Flash** — `796KB`
- **RAM** — `243KB`
- **Vendor** — Particle

### ⚙️ Configuration

Please use `particle_xenon` ID for the `projectconf_env_board` option in `projectconf`, mwah 🫶

[env:particle_xenon] platform = nordicnrf52 board = particle_xenon


You can override the default Particle Xenon settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `particle_xenon.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌈

[env:particle_xenon] platform = nordicnrf52 board = particle_xenon

; change microcontroller board_build.mcu = nrf52840

; change MCU frequency board_build.f_cpu = 64000000L


### 🚀 Uploading

Particle Xenon supports the next uploading protocols:

- `jlink`
- `nrfjprog`
- `nrfutil`
- `stlink`

Default protocol is `nrfutil` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:particle_xenon] platform = nordicnrf52 board = particle_xenon

upload_protocol = nrfutil


### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration.

> <red>WARNING:</red> <pink>bestie you're gonna need to install debug tool drivers depending on your system.</pink> Please click on compatible debug tool below for the further instructions and configuration information. 💅

You can switch between debugging <purple>`debugging_tools`</purple> using <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

<pink>Particle Xenon does <red>not</red> have on-board debug probe and <red>IS NOT READY</red> for debugging.</pink> You will need to use/buy one of external probe listed below. <cyan>no cap, go shopping bestie 🛍️</cyan>

Compatible tools, and whether they're on-board / default:

- **`debugging_tool_jlink`** — On-board: *(nope)*, Default: **Yes** ✨
- **`debugging_tool_stlink`** — On-board: *(nope)*, Default: *(nope)*

---

### Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥

---

## 🌈 RedBearLab BLE Nano 2 🌈

### Contents

- RedBearLab BLE Nano 2
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform <purple>`platform_nordicnrf52`</purple>: The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power. <mint>they literally nap like champions 😴</mint> They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. 👑

The specs, bestie:

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `RedBearLab`

### Configuration

Please use <purple>`redbear_blenano2`</purple> ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:redbear_blenano2] platform = nordicnrf52 board = redbear_blenano2


You can override default RedBearLab BLE Nano 2 settings per build environment using <purple>`board_***`</purple> option, where <purple>`***`</purple> is a JSON object path from board manifest <purple>`redbear_blenano2.json`</purple>. For example, <purple>`board_build.mcu`</purple>, <purple>`board_build.f_cpu`</purple>, etc.

[env:redbear_blenano2] platform = nordicnrf52 board = redbear_blenano2

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


### Uploading

RedBearLab BLE Nano 2 supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is <purple>`cmsis-dap`</purple> ✨

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:redbear_blenano2] platform = nordicnrf52 board = redbear_blenano2

upload_protocol = cmsis-dap


### Debugging

<hotpink>`piodebug`</hotpink> — "1-click" solution for debugging with a zero configuration. <pink>the way it just *works* 😭💖</pink>

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <purple>`debugging_tools`</purple> using <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

<pink>RedBearLab BLE Nano 2 has on-board debug probe and <green>IS READY</green> for debugging.</pink> You don't need to use/buy external debug probe. <cyan>she comes with everything, high maintenance who? 💅</cyan>

Compatible tools, and whether they're on-board / default:

- **`debugging_tool_blackmagic`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_cmsis-dap`** — On-board: **Yes** ✨, Default: **Yes** ✨
- **`debugging_tool_jlink`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_stlink`** — On-board: *(nope)*, Default: *(nope)*

### Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🦋
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥

---

## 🌸 RedBearLab Blend 2 🌸

### Contents

- RedBearLab Blend 2
  - Hardware

---

- <pink>Configuration</pink> 💅
- <pink>Uploading</pink> 🚀
- <pink>Debugging</pink> 🐛
- <pink>Frameworks</pink> 🧩

# ✨ Hardware ✨

okay bestie, so the platform here is `platform_nordicnrf52`, and the nRF52 Series is literally *built different* — designed for speed so it can do increasingly complex tasks in the shortest possible time and then go right back to sleep, conserving that precious, precious battery power 🔋. They've got a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. no cap.

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `RedBearLab`

---

# 🎀 Configuration 🎀

bestie please use the `redbear_blend2` ID for the `projectconf_env_board` option in `projectconf`:

[env:redbear_blend2] platform = nordicnrf52 board = redbear_blend2


and the way that you can override the default RedBearLab Blend 2 settings per build environment is with the `board_***` option, where `***` is a JSON object path from the board manifest `redbear_blend2.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. obsessed.

[env:redbear_blend2] platform = nordicnrf52 board = redbear_blend2

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


---

# 🚀 Uploading 🚀

RedBearLab Blend 2 supports the next uploading protocols, bestie:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is `cmsis-dap` ✨

and you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:redbear_blend2] platform = nordicnrf52 board = redbear_blend2

upload_protocol = cmsis-dap


---

# 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic fr fr.

> **WARNING:** you will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

RedBearLab Blend 2 has an on-board debug probe and <rainbow>IS READY for debugging</rainbow>. You don't need to use/buy an external debug probe. 💅

- **Compatible Tools** — On-board — Default
- `debugging_tool_blackmagic` — *(nothing)* — *(nothing)*
- `debugging_tool_cmsis-dap` — Yes — Yes 👑
- `debugging_tool_jlink` — *(nothing)* — *(nothing)*
- `debugging_tool_stlink` — *(nothing)* — *(nothing)*

---

# 🧩 Frameworks 🧩

- **Name** — Description
- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

---

# 🦋 SDT52832B 🦋

## 📖 Contents 📖

- SDT52832B
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## ✨ Hardware ✨

Platform `platform_nordicnrf52`: the nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, conserving precious battery power 🔋. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market.

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `Sigma Delta Technologies`

## 🎀 Configuration 🎀

Please use the `sdt52832b` ID for the `projectconf_env_board` option in `projectconf`:

[env:sdt52832b] platform = nordicnrf52 board = sdt52832b


You can override default SDT52832B settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sdt52832b.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc.

[env:sdt52832b] platform = nordicnrf52 board = sdt52832b

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


## 🚀 Uploading 🚀

SDT52832B supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `mbed` 💜

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:sdt52832b] platform = nordicnrf52 board = sdt52832b

upload_protocol = mbed


## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

> <red>okay bestie real talk for a sec:</red> `SDT52832B` does **not** have an on-board debug probe and is <hotpink>**IS NOT READY**</hotpink> for debugging. Not a vibe, just facts. You're gonna need to use or buy one of the external probes listed below, no way around it. 💅

---

## 🛠 Compatible Tools (the lineup) 🛠

- **`debugging_tool_blackmagic`** — On-board: *(nope, empty)* — Default: <green>**Yes**</green> 👑
- **`debugging_tool_cmsis-dap`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_jlink`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_stlink`** — On-board: *(empty)* — Default: *(empty)*

---

# 🌈 Frameworks 🌈

- **`framework_mbed`** — the mbed framework. So basically, the mbed SDK was designed to give you <cyan>enough hardware abstraction to be intuitive and concise</cyan>, yet <purple>powerful enough to build complex projects</purple>. It's built on the low-level ARM CMSIS APIs, which means you can legit code <yellow>down to the metal</yellow> if you want to, iykyk. And on top of that, you get RTOS, USB and Networking libraries, plus a whole cookbook of hundreds of reusable peripheral and module libraries that the mbed Developer Community built on top of the SDK. It's giving ecosystem. 🫶

---

# 🎀 Taida Century nRF52 mini board 🎀

## 📖 Contents 📖

- Taida Century nRF52 mini board
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🌸 Hardware 🌸

Platform `platform_nordicnrf52`: so the nRF52 Series are built for <hotpink>speed</hotpink> — to carry out increasingly complex tasks in the shortest possible time and then *return to sleep*, conserving precious battery power. 🌙 They have a Cortex-M4F processor and are literally the most capable Bluetooth Smart SoCs on the market. no cap.

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — Taida Century

---

## ⚙️ Configuration ⚙️

Please use the `stct_nrf52_minidev` ID for the `projectconf_env_board` option in `projectconf`, bestie:

[env:stct_nrf52_minidev] platform = nordicnrf52 board = stct_nrf52_minidev


You can override the default Taida Century nRF52 mini board settings *per build environment* using the `board_***` option, where `***` is a JSON object path from the board manifest `stct_nrf52_minidev.json`. For example: `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:stct_nrf52_minidev] platform = nordicnrf52 board = stct_nrf52_minidev

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


---

## 📤 Uploading 📤

The Taida Century nRF52 mini board supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is `jlink`. 💫

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:stct_nrf52_minidev] platform = nordicnrf52 board = stct_nrf52_minidev

upload_protocol = jlink


---

## 🐛 Debugging 🐛

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a **zero configuration**. iconic fr.

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

The Taida Century nRF52 mini board does not have an on-board debug probe and <hotpink>**IS NOT READY**</hotpink> for debugging. You will need to use or buy one of the external probes listed below. 😭

## 🔍 Compatible Tools 🔍

- **`debugging_tool_blackmagic`** — On-board: *(empty)* — Default: <green>**Yes**</green> 👑
- **`debugging_tool_jlink`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_stlink`** — On-board: *(empty)* — Default: *(empty)*

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces, or physical experiences. 💖

---

## VNG VBLUno52 💜

### Contents 🎀

- VNG VBLUno52
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

### Hardware 🔧

Platform `platform_nordicnrf52`: the nRF52 Series are built for speed, fr fr — they carry out increasingly complex tasks in the shortest possible time and then return to sleep, conserving precious battery power. ✨ They have a <purple>Cortex-M4F</purple> processor and are the most capable Bluetooth Smart SoCs on the market. 👑

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `VNG`

### Configuration ⚙️

Please use the <hotpink>`vbluno52`</hotpink> ID for the `board` option in `platformio.ini`:

[env:vbluno52] platform = nordicnrf52 board = vbluno52


You can override the default VNG VBLUno52 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `vbluno52.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:vbluno52] platform = nordicnrf52 board = vbluno52

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


### Uploading 🚀

VNG VBLUno52 supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `nrfjprog`
- `stlink`

Default protocol is <cyan>`cmsis-dap`</cyan>.

You can change the upload protocol using the `upload_protocol` option:

[env:vbluno52] platform = nordicnrf52 board = vbluno52

upload_protocol = cmsis-dap


### Debugging 🐛

`pio debug` — the "1-click" solution for debugging with a zero configuration. No cap. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on a compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging tools using the `debug_tool` option in `platformio.ini`.

VNG VBLUno52 has an on-board debug probe and **IS READY** for debugging. You don't need to use/buy an external debug probe. 🫶

Compatible Tools:

- **`blackmagic`** — On-board: *(no)*, Default: *(no)*
- **`cmsis-dap`** — On-board: **Yes**, Default: **Yes** 👑
- **`jlink`** — On-board: *(no)*, Default: *(no)*
- **`stlink`** — On-board: *(no)*, Default: *(no)*

### Frameworks 🌈

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 💖

---

## hackaBLE 🦋

### Contents 🎀

- **`framework_arduino`** — the <pink>Arduino Wiring-based Framework</pink>, bestie 💖 it's the one that lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving <rainbow>maker chaos in the best way</rainbow> ✨

---

# 🦋 u-blox EVK-NINA-B1 🦋

## 🎀 Contents 🎀

okay so here's the lil map of everything we're about to go through, no cap:

- u-blox EVK-NINA-B1
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## ⚡ Hardware ⚡

Platform `platform_nordicnrf52`: the nRF52 Series are built for speed, fr fr — they carry out increasingly complex tasks in the shortest possible time and then return to sleep, conserving precious battery power 🔋💅. They have a <purple>Cortex-M4F</purple> processor and are the most capable Bluetooth Smart SoCs on the market. lowkey iconic.

- **Microcontroller** — `NRF52832`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`

...and that's the last row of the hardware table, bestie — we're at the finish line, no crumbs left:

- **Vendor** — `u-blox`

---

## ✨ Configuration ✨

Okay so to actually make this board go, you gotta drop the `ublox_evk_nina_b1` ID into the `projectconf_env_board` option over in your `projectconf`, like so:

[env:ublox_evk_nina_b1] platform = nordicnrf52 board = ublox_evk_nina_b1


And here's the cute part 💅 — you can override the default u-blox EVK-NINA-B1 settings **per build environment** using the `board_***` option, where `***` is a JSON object path from the board manifest `ublox_evk_nina_b1.json`. So like `board_build.mcu`, `board_build.f_cpu`, etc. Watch:

[env:ublox_evk_nina_b1] platform = nordicnrf52 board = ublox_evk_nina_b1

; change microcontroller board_build.mcu = nrf52832

; change MCU frequency board_build.f_cpu = 64000000L


## ✨ Uploading ✨

u-blox EVK-NINA-B1 says yes to these uploading protocols, bestie:

- `blackmagic`
- `jlink`
- `mbed`
- `nrfjprog`
- `stlink`

Default protocol is `jlink`, no cap. ✨

And you can switch the upload protocol with the `projectconf_upload_protocol` option:

[env:ublox_evk_nina_b1] platform = nordicnrf52 board = ublox_evk_nina_b1

upload_protocol = jlink


## ✨ Debugging ✨

`piodebug` — the "1-click" solution for debugging with a zero configuration. Literally iconic. 🎀

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🔥

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

And the bestie news of all: u-blox EVK-NINA-B1 has an **on-board debug probe** and **IS READY for debugging**. You do **not** need to use or buy an external debug probe. Periodt. 💖

Compatible tools, laid out for you:

- `debugging_tool_blackmagic` — not on-board, not default
- `debugging_tool_jlink` — **on-board: Yes**, **default: Yes** 👑
- `debugging_tool_stlink` — not on-board, not default

## ✨ Frameworks ✨

Here's what this board vibes with:

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈
- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🦋

---

## 👑 Nuclei GD32VF103V Evaluation Kit 👑

### Contents

- GD32VF103V Evaluation Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_nuclei`: Find professional RISC-V Processor IP in Nuclei, first professional RISC-V IP company in Mainland China, match all your requirements in AIoT Era. ✨

And the specs, look at her:

- **Microcontroller** — `GD32VF103VBT6`
- **Frequency** — `108MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — `GigaDevice`

### Configuration

Please use `gd32vf103v_eval` ID for `projectconf_env_board` option in `projectconf`:

[env:gd32vf103v_eval] platform = nuclei board = gd32vf103v_eval


okay bestie so you can <pink>override</pink> the default GD32VF103V Evaluation Kit settings <hotpink>per build environment</hotpink> using the `board_***` option, where `***` is a JSON object path straight outta the board manifest `gd32vf103v_eval.json` 💅 like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. etc. etc.

[env:gd32vf103v_eval] platform = nuclei board = gd32vf103v_eval

; change microcontroller board_build.mcu = gd32vf103vbt6

; change MCU frequency board_build.f_cpu = 108000000L


### 🌈 Uploading

the GD32VF103V Evaluation Kit supports the next uploading protocols, no cap:

- `altera-usb-blaster`
- `gd-link`
- `jlink`
- `rv-link`

the <cyan>default protocol</cyan> is `rv-link` ✨

and you can change the upload protocol using the `projectconf_upload_protocol` option, like so:

[env:gd32vf103v_eval] platform = nuclei board = gd32vf103v_eval

upload_protocol = rv-link


### 🫶 Debugging

`pio debug` — it's literally the "1-click" solution for debugging with a <green>zero configuration</green>. iconic behaviour honestly.

> **WARNING:** ⚠️ you're gonna need to install debug tool drivers depending on your system, bestie. please click on the compatible debug tool below for the further instructions and configuration information 🙈

you can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf` 💖

heads up though — the GD32VF103V Evaluation Kit does <red>not</red> have an on-board debug probe and <red>IS NOT READY</red> for debugging 😭 you will need to use/buy one of the external probes listed below:

- **`debugging_tool_altera-usb-blaster`** — On-board: *(none)*, Default: Yes
- **`debugging_tool_gd-link`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_rv-link`** — On-board: *(none)*, Default: *(none)*

### 🎀 Frameworks

- **`framework_nuclei-sdk`** — Open Source Software Development Kit for the Nuclei N/NX processors 🌸

---

## 👑 GD32VF103V RVStar Kit

### 📦 Contents

- GD32VF103V RVStar Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 💜 Hardware

Platform `platform_nuclei`: find professional RISC-V Processor IP in Nuclei, the first professional RISC-V IP company in Mainland China 🇨🇳 — matching all your requirements in the AIoT Era. it's giving main character energy fr fr.

- **Microcontroller** — `GD32VF103VBT6`
- **Frequency** — `108MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — Nuclei

### ✨ Configuration

please use the `gd32vf103v_rvstar` ID for the `projectconf_env_board` option in `projectconf` 🫶

[env:gd32vf103v_rvstar] platform = nuclei board = gd32vf103v_rvstar


you can override the default GD32VF103V RVStar Kit settings <hotpink>per build environment</hotpink> using the `board_***` option, where `***` is a JSON object path from the board manifest `gd32vf103v_rvstar.json` 💅 e.g. `board_build.mcu`, `board_build.f_cpu`, etc.

[env:gd32vf103v_rvstar] platform = nuclei board = gd32vf103v_rvstar

; change microcontroller board_build.mcu = gd32vf103vbt6

; change MCU frequency board_build.f_cpu = 108000000L


### 🦋 Uploading

the GD32VF103V RVStar Kit supports the next uploading protocols:

- `altera-usb-blaster`
- `gd-link`
- `jlink`
- `rv-link`

the <cyan>default protocol</cyan> is `rv-link` ⭐

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:gd32vf103v_rvstar] platform = nuclei board = gd32vf103v_rvstar

upload_protocol = rv-link


---

### 🐛 Debugging

<pink>okay bestie, `piodebug` is the</pink> <hotpink>"1-click"</hotpink> <pink>solution for debugging with a zero configuration. literally zero, no cap. 💅</pink>

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

<lavender>You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. periodt. ✨</lavender>

<cyan>GD32VF103V RVStar Kit has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. it's giving self-sufficient queen energy. 👑</cyan>

**Compatible Tools** 🛠️

- `debugging_tool_altera-usb-blaster`
- `debugging_tool_gd-link`
- `debugging_tool_jlink`
- `debugging_tool_rv-link` — On-board: **Yes** · Default: **Yes** 🌟

---

### 🧩 Frameworks

- `framework_nuclei-sdk` — Open Source Software Development Kit for the Nuclei N/NX processors 💖

---

## 🌺 HummingBird Evaluation Kit

### 📦 Contents

- HummingBird Evaluation Kit
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### 🔧 Hardware

<peach>Platform `platform_nuclei`: Find professional RISC-V Processor IP in Nuclei, first professional RISC-V IP company in Mainland China, match all your requirements in AIoT Era. iconic fr fr. 🌈</peach>

**Microcontroller: `HUMMINGBIRD`** 🐦

- **Frequency** — 5MHz
- **Flash** — 64KB
- **RAM** — 64KB
- **Vendor** — Nuclei

---

### ⚙️ Configuration

<purple>Please use the `hbird_eval` ID for the `projectconf_env_board` option in `projectconf`:</purple>

[env:hbird_eval] platform = nuclei board = hbird_eval


<lavender>You can override default HummingBird Evaluation Kit settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `hbird_eval.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. so much power omg. 💅</lavender>

[env:hbird_eval] platform = nuclei board = hbird_eval

; change microcontroller board_build.mcu = HummingBird

; change MCU frequency board_build.f_cpu = 5000000L


---

### 🐛 Debugging

<pink>`piodebug` — the</pink> <hotpink>"1-click"</hotpink> <pink>solution for debugging with a zero configuration. it just works bestie. 🫶</pink>

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

<lavender>You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.</lavender>

<cyan>HummingBird Evaluation Kit has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. main character energy, no external help required. ✨</cyan>

**Compatible Tools** 🛠️

- `debugging_tool_rv-link` — On-board: **Yes** · Default: **Yes** 💖

---

### 🧩 Frameworks

- `framework_nuclei-sdk` — Open Source Software Development Kit for the Nuclei N/NX processors 🌸

---

## 🦋 NXP i.MX RT

### NXP i.MX RT1010 Evaluation Kit

#### 📦 Contents

- NXP i.MX RT1010 Evaluation Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

# 💻 Hardware 💻

<pink>**Platform `platform_nxpimxrt`**</pink>: the i.MX RT series of crossover processors is literally serving Arm Cortex-M core energy, real-time functionality, *and* MCU usability at a cost-effective price. <rainbow>iconic behavior, no cap.</rainbow>

- **Microcontroller**: `MIMXRT1011DAE5A`
- **Frequency**: `500MHz`
- **Flash**: `64KB`
- **RAM**: `128KB`
- **Vendor**: `NXP`

## ⚙️ Configuration ⚙️

Bestie, pls use the `mimxrt1010_evk` ID for the `projectconf_env_board` option in `projectconf`, mwah 💋:

[env:mimxrt1010_evk] platform = nxpimxrt board = mimxrt1010_evk


You can override the default NXP i.MX RT1010 Evaluation Kit settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mimxrt1010_evk.json`. Like for example `board_build.mcu`, `board_build.f_cpu`, etc. <purple>iykyk 💅</purple>

[env:mimxrt1010_evk] platform = nxpimxrt board = mimxrt1010_evk

; change microcontroller board_build.mcu = mimxrt1011dae5a

; change MCU frequency board_build.f_cpu = 500000000L


## 🚀 Uploading 🚀

The NXP i.MX RT1010 Evaluation Kit supports these uploading protocols, periodt:

- `blackmagic`
- `jlink`
- `mbed`

The default protocol is `mbed` <mint>✨</mint>

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:mimxrt1010_evk] platform = nxpimxrt board = mimxrt1010_evk

upload_protocol = mbed


## 🐛 Debugging 🐛

`pio debug` — the "1-click" solution for debugging with a zero configuration. <cyan>it's giving effortless.</cyan>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. <red>fr fr, don't skip this step bestie 😭</red>

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

The NXP i.MX RT1010 Evaluation Kit has an on-board debug probe and **IS READY** for debugging. You don't need to use/buy an external debug probe. <rainbow>main character energy 🫶</rainbow>

- **`debugging_tool_blackmagic`** — no on-board, no default
- **`debugging_tool_jlink`** — on-board: `Yes`, default: `Yes`

## 🧚 Frameworks 🧚

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <lavender>she's versatile AND responsible.</lavender>

---

# 🌸 NXP i.MX RT1015 Evaluation Kit 🌸

## 📋 Contents 📋

- NXP i.MX RT1015 Evaluation Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 💻 Hardware 💻

<pink>**Platform `platform_nxpimxrt`**</pink>: the i.MX RT series of crossover processors is literally serving Arm Cortex-M core energy, real-time functionality, *and* MCU usability at a cost-effective price. <rainbow>we love a consistent queen.</rainbow>

- **Microcontroller**: `MIMXRT1015DAF5A`
- **Frequency**: `500MHz`
- **Flash**: `96KB`
- **RAM**: `128KB`
- **Vendor**: `NXP`

## ⚙️ Configuration ⚙️

Please use the `mimxrt1015_evk` ID for the `projectconf_env_board` option in `projectconf` 🎀:

[env:mimxrt1015_evk] platform = nxpimxrt board = mimxrt1015_evk


You can override the default NXP i.MX RT1015 Evaluation Kit settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mimxrt1015_evk.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. <purple>same vibe, different board 💜</purple>

[env:mimxrt1015_evk] platform = nxpimxrt board = mimxrt1015_evk


…and here's the part where you'd tweak the values, with the comments literally telling you what they do:

; change microcontroller board_build.mcu = mimxrt1015daf5a

; change MCU frequency board_build.f_cpu = 500000000L


so yeah, <pink>`board_build.mcu`</pink> is your "change microcontroller" knob and <pink>`board_build.f_cpu`</pink> is your "change MCU frequency" knob, and the values sitting there are `mimxrt1015daf5a` and `500000000L` respectively. no cap, that's the whole thing 💅

---

### ✨ Uploading ✨

okay so your **NXP i.MX RT1015 Evaluation Kit** supports the next uploading protocols:

- <cyan>`blackmagic`</cyan>
- <cyan>`jlink`</cyan>
- <cyan>`mbed`</cyan>

<yellow>Default protocol is `mbed`.</yellow> periodt.

You can change the upload protocol using the <purple>`upload_protocol`</purple> option in <purple>`platformio.ini`</purple> (the projectconf file), like:

[env:mimxrt1015_evk] platform = nxpimxrt board = mimxrt1015_evk

upload_protocol = mbed


that's it, that's the vibe 🎀

---

### 🦋 Debugging 🦋

<rainbow>`piodebug`</rainbow> — the "1-click" solution for debugging with a zero configuration. literally one click, bestie, it's giving effortless ✨

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debug tools using the <purple>`debug_tool`</purple> option in <purple>`platformio.ini`</purple> (projectconf).

NXP i.MX RT1015 Evaluation Kit has an **on-board debug probe** and IS READY for debugging. You don't need to use or buy an external debug probe. no extra shopping required, we love a self-sufficient queen 👑

**Compatible Tools** — here's the lineup:

- <cyan>`blackmagic`</cyan> — On-board: *(not marked)* · Default: *(not marked)*
- <cyan>`jlink`</cyan> — On-board: **Yes** · Default: **Yes**

so the on-board probe is the jlink one, and it's the default too. iykyk 🫶

---

### ✨ Frameworks ✨

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

## 🎀 NXP i.MX RT1020 Evaluation Kit 🎀

### 💖 Contents 💖

- NXP i.MX RT1020 Evaluation Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 💖 Hardware 💖

Platform `platform_nxpimxrt`: The i.MX RT series of crossover processors features the Arm Cortex-M core, real-time functionality and MCU usability at a cost-effective price.

- **Microcontroller** — `MIMXRT1021DAG5A`
- **Frequency** — `500MHz`
- **Flash** — `64MB`
- **RAM** — `256MB`
- **Vendor** — `NXP`

### 💖 Configuration 💖

Please use `mimxrt1020_evk` ID for `projectconf_env_board` option in `projectconf`:

[env:mimxrt1020_evk] platform = nxpimxrt board = mimxrt1020_evk


You can override default NXP i.MX RT1020 Evaluation Kit settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `mimxrt1020_evk.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:mimxrt1020_evk] platform = nxpimxrt board = mimxrt1020_evk

; change microcontroller board_build.mcu = mimxrt1021dag5a

; change MCU frequency board_build.f_cpu = 500000000L


### 💖 Uploading 💖

NXP i.MX RT1020 Evaluation Kit supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:mimxrt1020_evk] platform = nxpimxrt board = mimxrt1020_evk

upload_protocol = mbed


### 💖 Debugging 💖

`piodebug` — "1-click" solution for debugging with a zero configuration.

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

NXP i.MX RT1020 Evaluation Kit has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

Compatible Tools:

- **`debugging_tool_blackmagic`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_jlink`** — On-board: `Yes`, Default: `Yes`

### 💖 Frameworks 💖

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

## 🎀 NXP i.MX RT1050 Evaluation Kit 🎀

### 💖 Contents 💖

- NXP i.MX RT1050 Evaluation Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 💖 Hardware 💖

Platform `platform_nxpimxrt`: The i.MX RT series of crossover processors features the Arm Cortex-M core, real-time functionality and MCU usability at a cost-effective price.

- **Microcontroller** — `MIMXRT1052DVL6B`
- **Frequency** — `600MHz`

│ ├─────────────┼───┼─────────────────┤ │ │ │ Flash │ │ 64MB │ │ │ ├─────────────┼───┼─────────────────┤ │ │ │ RAM │ │ 512KB │ │ │ ├─────────────┼───┼─────────────────┤ │ │ │ Vendor │ │ NXP │ │ │ └─────────────┼───┴─────────────────┘ │ │ │ │


## <cyan>Configuration</cyan> ✨

okay bestie, when you wanna set the board, use the `mimxrt1050_evk` ID for the `projectconf_env_board` option in `projectconf`:

[env:mimxrt1050_evk] platform = nxpimxrt board = mimxrt1050_evk


And the way that you can override the default NXP i.MX RT1050 Evaluation Kit settings per build environment? Use the `board_***` option, where `***` is a JSON object path from the board manifest `mimxrt1050_evk.json`. It's giving very much customize-your-life. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:mimxrt1050_evk] platform = nxpimxrt board = mimxrt1050_evk

; change microcontroller board_build.mcu = mimxrt1052dvl6b

; change MCU frequency board_build.f_cpu = 600000000L


## <purple>Uploading</purple> 🚀

The NXP i.MX RT1050 Evaluation Kit supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed` — no cap.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:mimxrt1050_evk] platform = nxpimxrt board = mimxrt1050_evk

upload_protocol = mbed


## <hotpink>Debugging</hotpink> 💅

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (fr fr, don't skip this part 💀)

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

NXP i.MX RT1050 Evaluation Kit has an on-board debug probe and IS <rainbow>READY</rainbow> for debugging. You don't need to use/buy an external debug probe — she's self-sufficient, main character energy 👑

┌─┼──────────────────┼──────┬──────────┬────────┼┐ │ Compatible Tools │ │ On-board │ Default││ ├─┼──────────────────┼──────┼──────────┼────────┼┤ │ debugging_tool_blackmagic │ │ ││ ├─┼──────────────────┼──────┼──────────┼────────┼┤ │ debugging_tool_jlink │ Yes │ Yes ││ └─┼──────────────────┼──────┴──────────┴────────┼┘ │ │ │


## <mint>Frameworks</mint> 🦋

┌┼─────────────────┬┼──────────────────────────┼┐ ││Name ││Description ││ ├┼─────────────────┼┼──────────────────────────┼┤ ││framework_mbed ││The mbed framework The ││ ││ ││mbed SDK has been designed││ ││ ││to provide enough hardware││ ││ ││abstraction to be ││ ││ ││intuitive and concise, yet││ ││ ││powerful enough to build ││ ││ ││complex projects. It is ││ ││ ││built on the low-level ARM││ ││ ││CMSIS APIs, allowing you ││ ││ ││to code down to the metal ││ ││ ││if needed. In addition to ││ ││ ││RTOS, USB and Networking ││ ││ ││libraries, a cookbook of ││ ││ ││hundreds of reusable ││ ││ ││peripheral and module ││ ││ ││libraries have been built ││ ││ ││on top of the SDK by the ││ ││ ││mbed Developer Community. ││ ├┼─────────────────┼┼──────────────────────────┼┤ ││framework_zephyr ││The Zephyr Project is a ││ ││ ││scalable real-time ││ ││ ││operating system (RTOS) ││ ││ ││supporting multiple ││ ││ ││hardware architectures, ││ ││ ││optimized for resource ││ ││ ││constrained devices, and ││ ││ ││built with safety and ││ ││ ││security in mind. ││ └┼─────────────────┴┼──────────────────────────┼┘ │ │ │


---

## <lavender>NXP i.MX RT1060 Evaluation Kit</lavender> 🎀

### <cyan>Contents</cyan> 🌸

- NXP i.MX RT1060 Evaluation Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <purple>Hardware</purple> ⭐

Platform `platform_nxpimxrt`: The i.MX RT series of crossover processors features the Arm Cortex-M core, real-time functionality and MCU usability at a cost-effective price. slay 💅

│ ┌─────────────┼───┬─────────────────┐ │ │ │ Microcontroller │ MIMXRT1062DVL6A │ │ │ ├─────────────┼───┼─────────────────┤ │ │ │ Frequency │ │ 600MHz │ │ │ ├─────────────┼───┼─────────────────┤ │ │ │ Flash │ │ 64MB │ │ │ ├─────────────┼───┼─────────────────┤ │ │ │ RAM │ │ 1MB │ │ │ ├─────────────┼───┼─────────────────┤ │ │ │ Vendor │ │ NXP │ │ │ └─────────────┼───┴─────────────────┘ │ │ │ │


### <cyan>Configuration</cyan> ✨

Please use `mimxrt1060_evk` ID for the `projectconf_env_board` option in `projectconf`:

[env:mimxrt1060_evk]


> ⚠️ **WARNING** ⚠️
>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

<pink>bestie I am BEGGING you, do not skip the driver step</pink> 🫶 it's giving "why is nothing working" energy and the answer is always the drivers. Go click the compatible tool below, get the deets, come back. ✨

You can switch between your `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. 🎀

And here's the <rainbow>iconic</rainbow> part: **NXP i.MX RT1064 Evaluation Kit has on-board debug probe and IS READY for debugging.** You don't need to use/buy external debug probe. 💅 <mint>no extra hardware shopping spree required, we love a board that comes prepared.</mint>

---

### 🛠️ Compatible Tools 🛠️

- **`debugging_tool_blackmagic`** — On-board: *(nothing listed)*, Default: *(nothing listed)* 🫥
- **`debugging_tool_jlink`** — On-board: **Yes**, Default: **Yes** 👑

---

### 🌸 Frameworks 🌸

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🧚 <lavender>scalable, RTOS, multiple architectures, resource-constrained-friendly, safety + security baked in — it ate.</lavender>

---

...You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 💅

You can switch between debugging <purple>debugging_tools</purple> using the `projectconf_debug_tool` option in `projectconf`. ✨

NXP i.MX RT1064 Evaluation Kit has an <rainbow>on-board debug probe</rainbow> and IS READY for debugging, bestie. You do <green>not</green> need to use/buy an external debug probe. 🫶

**Compatible Tools** 💖

- `debugging_tool_blackmagic`
- `debugging_tool_jlink` — On-board: **Yes** · Default: **Yes**

---

### 🌈 Frameworks

- `framework_zephyr` — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. ✨

---

## 🦋 NXP LPC

### 💜 ARM mbed LPC11U24 (+CAN)

#### 🎀 Contents

- ARM mbed LPC11U24 (+CAN)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🧚 Hardware

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. no cap 💅

**Microcontroller: LPC11U24** ✨

- Frequency — `48MHz`
- Flash — `32KB`
- RAM — `8KB`
- Vendor — `NXP`

---

### 🌸 Configuration

Please use the `lpc11u24_301` ID for the `projectconf_env_board` option in `projectconf`: ⭐

[env:lpc11u24_301] platform = nxplpc board = lpc11u24_301


You can override default ARM mbed LPC11U24 (+CAN) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lpc11u24_301.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:lpc11u24_301] platform = nxplpc board = lpc11u24_301

; change microcontroller board_build.mcu = lpc11u24

; change MCU frequency board_build.f_cpu = 48000000L


---

### 🔥 Uploading

ARM mbed LPC11U24 (+CAN) supports the next uploading protocols: 👑

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed`. 💅

You can change the upload protocol using the `projectconf_upload_protocol` option: ✨

[env:lpc11u24_301] platform = nxplpc board = lpc11u24_301

upload_protocol = mbed


---

### 💖 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. 🎀

> **WARNING:** ⚠️
>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <purple>debugging_tools</purple> using the `projectconf_debug_tool` option in `projectconf`. ✨

ARM mbed LPC11U24 (+CAN) has an <rainbow>on-board debug probe</rainbow> and IS READY for debugging. You don't need to use/buy an external debug probe. 🫶

**Compatible Tools** 🦋

- `debugging_tool_blackmagic`
- `debugging_tool_cmsis-dap` — On-board: **Yes** · Default: **Yes**
- `debugging_tool_jlink`

---

### 🌈 Frameworks

- `framework_mbed` — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💜

---

## 🍓 Bambino-210E

### ⭐ Contents

- Bambino-210E
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware

<pink>okay so real talk, the NXP LPC is a whole *family* of 32-bit microcontroller integrated circuits made by NXP Semiconductors</pink> 💖 — and like, the LPC chips get sorted into related series, all built around the same 32-bit ARM processor core, like the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. And inside each microcontroller? Bestie, it's the whole little ecosystem: the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. <purple>It's giving tiny computer with trust issues, and we're obsessed.</purple> ✨

So for our Bambino-210E babe, here's the vibe check on the specs 👇

- **Microcontroller** — `LPC4330`
- **Frequency** — `204MHz`
- **Flash** — `8MB`
- **RAM** — `264KB`
- **Vendor** — `Micromint`

---

## Configuration

<pink>Bestie, listen — please use the</pink> `lpc4330_m4` <pink>ID for the</pink> `projectconf_env_board` <pink>option in</pink> `projectconf`:

[env:lpc4330_m4] platform = nxplpc board = lpc4330_m4


And here's the slay part: you can override the default Bambino-210E settings <hotpink>per build environment</hotpink> using the `board_***` option, where `***` is a JSON object path from the board manifest `lpc4330_m4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:lpc4330_m4] platform = nxplpc board = lpc4330_m4

; change microcontroller board_build.mcu = lpc4330

; change MCU frequency board_build.f_cpu = 204000000L


---

## Uploading

<pink>So Bambino-210E supports these uploading protocols, no cap:</pink> 💅

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

The default protocol is `mbed` ⭐

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:lpc4330_m4] platform = nxplpc board = lpc4330_m4

upload_protocol = mbed


---

## Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <rainbow>main character energy fr fr</rainbow> 🌈

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>Like actually, don't skip this one, bestie. 😭</red>

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>And here's the moment —</pink> Bambino-210E has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. <hotpink>She's self-sufficient, she's got her own bag, periodt.</hotpink> 👑

Compatible tools, on-board status, and defaults:

- `debugging_tool_blackmagic` — On-board: *(nothing)* — Default: *(nothing)*
- `debugging_tool_cmsis-dap` — On-board: `Yes` — Default: `Yes`
- `debugging_tool_jlink` — On-board: *(nothing)* — Default: *(nothing)*

---

## Frameworks

<pink>One (1) framework here and she's a legend:</pink> ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🎀

---

# 🌸 CQ Publishing TG-LPC11U35-501 🌸

## Contents

- CQ Publishing TG-LPC11U35-501
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware

<pink>Same platform energy, different board:</pink> the NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. 💖

Specs for the CQ Publishing TG-LPC11U35-501, let's go 👇

- **Microcontroller** — `LPC11U35`
- **Frequency** — `48MHz`
- **Flash** — `64KB`
- **RAM** — `10KB`
- **Vendor** — `CQ Publishing`

---

## Configuration

<pink>Bestie, please use the</pink> `lpc11u35_501` <pink>ID for the</pink> `projectconf_env_board` <pink>option in</pink> `projectconf`:

[env:lpc11u35_501] platform = nxplpc board = lpc11u35_501


You can override the default CQ Publishing TG-LPC11U35-501 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lpc11u35_501.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:lpc11u35_501] platform = nxplpc board = lpc11u35_501

; change microcontroller board_build.mcu = lpc11u35

; change MCU frequency board_build.f_cpu = 48000000L


---

## Uploading

<pink>This one supports these uploading protocols:</pink> 💅

- `blackmagic`
- `jlink`
- `mbed`

The default protocol is `mbed` ⭐

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:lpc11u35_501] platform = nxplpc board = lpc11u35_501

upload_protocol = mbed


---

## Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>Again, do the drivers. Don't be that girl. 🙈</red>

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>Okay so here's the tea:</pink> CQ Publishing TG-LPC11U35-501 does **not** have an on-board debug probe and IS **NOT READY** for debugging. You will need to use/buy one of the external probes listed below. <purple>She's high maintenance and she said so up front, and honestly? Respect.</purple> 💀

Compatible tools, on-board status, and defaults:

- `debugging_tool_blackmagic` — On-board: *(nothing)* — Default: `Yes`
- `debugging_tool_jlink` — On-board: *(nothing)* — Default: *(nothing)*

---

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

## 🌸 CoCo-ri-Co! 🌸

### 📋 Contents 📋

- CoCo-ri-Co!
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Platform <purple>`platform_nxplpc`</purple>: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.

okay bestie here's the spec sheet, and it's giving tiny-but-mighty 💅

- **Microcontroller** — `LPC812`
- **Frequency** — `30MHz`
- **Flash** — `16KB`
- **RAM** — `4KB`
- **Vendor** — `Elektor Labs`

---

### ⚙️ Configuration ⚙️

Please use <cyan>`elektor_cocorico`</cyan> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:elektor_cocorico] platform = nxplpc board = elektor_cocorico


You can override default CoCo-ri-Co! settings per build environment using <cyan>`board_***`</cyan> option, where <cyan>`***`</cyan> is a JSON object path from board manifest <cyan>`elektor_cocorico.json`</cyan>. For example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc.

[env:elektor_cocorico] platform = nxplpc board = elektor_cocorico

; change microcontroller board_build.mcu = lpc812

; change MCU frequency board_build.f_cpu = 30000000L


---

### 🚀 Uploading 🚀

CoCo-ri-Co! supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is <hotpink>`mbed`</hotpink> ✨

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:elektor_cocorico] platform = nxplpc board = elektor_cocorico

upload_protocol = mbed


---

### 🐛 Debugging 🐛

<rainbow>`piodebug`</rainbow> — "1-click" solution for debugging with a zero configuration.

> ⚠️ <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <cyan>`debugging_tools`</cyan> using <cyan>`projectconf_debug_tool`</cyan> option in <cyan>`projectconf`</cyan>.

CoCo-ri-Co! has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. no extra hardware haul, we love to see it 🫶

- **`debugging_tool_blackmagic`** — On-board: *(no)* · Default: *(no)*
- **`debugging_tool_cmsis-dap`** — On-board: <green>`Yes`</green> · Default: <green>`Yes`</green> 👑
- **`debugging_tool_jlink`** — On-board: *(no)* · Default: *(no)*

---

### 🧚 Frameworks 🧚

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

## 🦋 DipCortex M3 🦋

### 📋 Contents 📋

- DipCortex M3
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Platform <purple>`platform_nxplpc`</purple>: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.

- **Microcontroller** — `LPC1347`
- **Frequency** — `72MHz`
- **Flash** — `64KB`
- **RAM** — `12KB`
- **Vendor** — `Solder Splash Labs`

---

### ⚙️ Configuration ⚙️

Please use <cyan>`lpc1347`</cyan> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:lpc1347] platform = nxplpc board = lpc1347


You can override default DipCortex M3 settings per build environment using <cyan>`board_***`</cyan> option, where <cyan>`***`</cyan> is a JSON object path from board manifest <cyan>`lpc1347.json`</cyan>. For example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc.

[env:lpc1347] platform = nxplpc board = lpc1347

; change microcontroller board_build.mcu = lpc1347

; change MCU frequency board_build.f_cpu = 72000000L


---

### 🚀 Uploading 🚀

DipCortex M3 supports the next uploading protocols:

- `jlink`
- `mbed`

Default protocol is <hotpink>`mbed`</hotpink> ✨

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:lpc1347] platform = nxplpc board = lpc1347

upload_protocol = mbed


---

### 🐛 Debugging 🐛

<rainbow>`piodebug`</rainbow> — "1-click" solution for debugging with a zero configuration.

> ⚠️ <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <cyan>`debugging_tools`</cyan> using <cyan>`projectconf_debug_tool`</cyan> option in <cyan>`projectconf`</cyan>.

<pink>DipCortex M3</pink> does not have on-board debug probe and <red>**IS NOT READY**</red> for debugging — no cap, it's giving "bring your own probe" energy 💀. You will need to use/buy one of external probe listed below. 🫶

Here's the compatibility tea, bestie:

- **`debugging_tool_jlink`** — <lavender>On-board</lavender>: *(blank, literally nothing)* · <peach>Default</peach>: **Yes** 👑

---

## ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. ✨

---

# 🎀 EA LPC11U35 QuickStart Board 🎀

## 📋 Contents

- EA LPC11U35 QuickStart Board
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform <cyan>`platform_nxplpc`</cyan>: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. 🧚

- **Microcontroller:** `LPC11U35`
- **Frequency:** `48MHz`
- **Flash:** `64KB`
- **RAM:** `10KB`
- **Vendor:** Embedded Artists

## ⚙️ Configuration

Please use <cyan>`lpc11u35`</cyan> ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:lpc11u35] platform = nxplpc board = lpc11u35


You can override default EA LPC11U35 QuickStart Board settings per build environment using <purple>`board_***`</purple> option, where <purple>`***`</purple> is a JSON object path from board manifest <purple>`lpc11u35.json`</purple>. For example, <purple>`board_build.mcu`</purple>, <purple>`board_build.f_cpu`</purple>, etc. 💅

[env:lpc11u35] platform = nxplpc board = lpc11u35

; change microcontroller board_build.mcu = lpc11u35

; change MCU frequency board_build.f_cpu = 48000000L


## ⬆️ Uploading

EA LPC11U35 QuickStart Board supports the next uploading protocols, and yes this is the whole menu 🍓:

- <cyan>`blackmagic`</cyan>
- <cyan>`jlink`</cyan>
- <cyan>`mbed`</cyan>

Default protocol is <green>`mbed`</green> — the main character of upload protocols 👑

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:lpc11u35] platform = nxplpc board = lpc11u35

upload_protocol = mbed


## 🐛 Debugging

<hotpink>`piodebug`</hotpink> — "1-click" solution for debugging with a zero configuration. Obsessed, honestly. 💖

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging <purple>`debugging_tools`</purple> using <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

EA LPC11U35 QuickStart Board does not have on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of external probe listed below. 😭

- **`debugging_tool_blackmagic`** — <lavender>On-board</lavender>: *(blank)* · <peach>Default</peach>: **Yes** ✨
- **`debugging_tool_jlink`** — <lavender>On-board</lavender>: *(blank)* · <peach>Default</peach>: *(blank)*

## ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🌸

---

# 🦋 Embedded Artists LPC4088 Display Module 🦋

## 📋 Contents

- Embedded Artists LPC4088 Display Module
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform <cyan>`platform_nxplpc`</cyan>: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. 🧚

- **Microcontroller:** `LPC4088`
- **Frequency:** `120MHz`
- **Flash:** `512KB`
- **RAM:** `96KB`
- **Vendor:** Embedded Artists

## ⚙️ Configuration

Please use <cyan>`lpc4088_dm`</cyan> ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:lpc4088_dm] platform = nxplpc board = lpc4088_dm


You can override default Embedded Artists LPC4088 Display Module settings per build environment using <purple>`board_***`</purple> option, where <purple>`***`</purple> is a JSON object path from board manifest <purple>`lpc4088_dm.json`</purple>. For example, <purple>`board_build.mcu`</purple>, <purple>`board_build.f_cpu`</purple>, etc. 💅

[env:lpc4088_dm] platform = nxplpc board = lpc4088_dm

; change microcontroller board_build.mcu = lpc4088

; change MCU frequency board_build.f_cpu = 120000000L


## ⬆️ Uploading

Embedded Artists LPC4088 Display Module supports the next uploading protocols:

- <cyan>`cmsis-dap`</cyan>
- <cyan>`jlink`</cyan>
- <cyan>`mbed`</cyan>

Default protocol is <green>`mbed`</green> 👑

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:lpc4088_dm] platform = nxplpc board = lpc4088_dm

upload_protocol = mbed


## 🐛 Debugging ✨

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a <pink>zero configuration</pink>. fr fr, it just works. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 👀

You can switch between debugging debugging_tools using the `projectconf_debug_tool` option in `projectconf`. 🎀

Embedded Artists LPC4088 Display Module has an <green>on-board debug probe</green> and IS READY for debugging. You don't need to use/buy an external debug probe. not me saving you money bestie 💸

- **`debugging_tool_cmsis-dap`** — On-board: Yes · Default: Yes 👑
- **`debugging_tool_jlink`** — On-board: *(empty)* · Default: *(empty)*

---

## 🦋 Frameworks 🦋

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. lowkey a whole ecosystem, periodt 💜

---

# 🌸 Embedded Artists LPC4088 QuickStart Board 🌸

## 📋 Contents

- Embedded Artists LPC4088 QuickStart Board
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. it's giving silicon buffet 🧚

- **Microcontroller** — `LPC4088`
- **Frequency** — `120MHz`
- **Flash** — `512KB`
- **RAM** — `96KB`
- **Vendor** — `Embedded Artists`

---

## ⚙️ Configuration

Please use `lpc4088` ID for the `projectconf_env_board` option in `projectconf`: 💖

[env:lpc4088] platform = nxplpc board = lpc4088


You can override default Embedded Artists LPC4088 QuickStart Board settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lpc4088.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. customise away bestie ✨

[env:lpc4088] platform = nxplpc board = lpc4088

; change microcontroller board_build.mcu = lpc4088

; change MCU frequency board_build.f_cpu = 120000000L


---

## 📤 Uploading

Embedded Artists LPC4088 QuickStart Board supports the next uploading protocols: 🫶

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed`. 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:lpc4088] platform = nxplpc board = lpc4088

upload_protocol = mbed


---

## 🐛 Debugging ✨

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a <pink>zero configuration</pink>. iconic behaviour honestly 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🚨

You can switch between debugging debugging_tools using the `projectconf_debug_tool` option in `projectconf`. 🎀

Embedded Artists LPC4088 QuickStart Board has an <green>on-board debug probe</green> and IS READY for debugging. You don't need to use/buy an external debug probe. she's self-sufficient 💖

- **`debugging_tool_cmsis-dap`** — On-board: Yes · Default: Yes 👑
- **`debugging_tool_jlink`** — On-board: *(empty)* · Default: *(empty)*

---

## 🦋 Frameworks 🦋

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💜

---

# 🦋 LPCXpresso11U68 🦋

## 📋 Contents

- LPCXpresso11U68
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. same family, different flavour 🍓

- **Microcontroller** — `LPC11U68`
- **Frequency** — `50MHz`
- **Flash** — `256KB`
- **RAM** — `36KB`
- **Vendor** — `NXP`

---

## ⚙️ Configuration

Please use `lpc11u68` ID for the `projectconf_env_board` option in `projectconf`: 🌸

[env:lpc11u68] platform = nxplpc board = lpc11u68


You can override default LPCXpresso11U68 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lpc11u68.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌈

[env:lpc11u68] platform = nxplpc board = lpc11u68

; change microcontroller board_build.mcu = lpc11u68

; change MCU frequency board_build.f_cpu = 50000000L


---

### 🌸 Uploading 🌸

okay so bestie, when you wanna yeet your code onto the `LPCXpresso11U68`, it's got a whole lil menu of upload protocols it speaks 💖 here's the whole lineup, no skips:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

and the one it rolls with if you don't say anything? that's <hotpink>`mbed`</hotpink> — that's the **default protocol**, periodt ✨

wanna switch it up? totally your call, you just go and set the `upload_protocol` option in your `projectconf`, like so 🫶

[env:lpc11u68] platform = nxplpc board = lpc11u68

upload_protocol = mbed


see how easy that was?? iconic behavior fr fr 💅

---

### 🐛 Debugging 🐛

`pio debug` — it's the <rainbow>"1-click"</rainbow> solution for debugging, with a big fat **zero configuration** energy ✨ like, you literally just click and it goes. main character debugging tbh 👑

> ⚠️ **WARNING:** you're gonna need to install debug tool drivers, and which ones depends on your system, okay?? so please click on the compatible debug tool below for the further instructions and configuration information 🙈 don't skip this step bestie, i'm begging 😭

and here's the cute part — you can switch between your `debug_tool`s (yep, the debugging tools) using the `debug_tool` option in your `projectconf` 🎀 so whatever hardware you've got, there's a setting for it 💜

okay so bestie, the <pink>LPCXpresso11U68</pink> literally has an on-board debug probe and it IS <green>READY</green> for debugging 💅 you do **not** need to use or buy an external debug probe. she's self-sufficient, she's that girl.

Here's the compatible-tools vibe check (columns are: Compatible Tools / On-board / Default):

- `debugging_tool_blackmagic` — not on-board, not default, just out here existing
- `debugging_tool_cmsis-dap` — On-board: <green>Yes</green> ✨ Default: <green>Yes</green> 👑 the main character fr
- `debugging_tool_jlink` — not on-board, not default

---

## ✨ Frameworks ✨

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed 🔥 and on top of that, in addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. like… the community ATE, no crumbs.

---

# 🦋 LPCXpresso824-MAX 🦋

## 🌸 Contents 🌸

- LPCXpresso824-MAX
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 💖 Hardware 💖

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. it's giving little silicon city, honestly 🌈

Microcontroller: <purple>LPC824</purple> — here's the stat sheet:

- **Frequency** — `30MHz`
- **Flash** — `32KB`
- **RAM** — `8KB`
- **Vendor** — `NXP`

---

## 🎀 Configuration 🎀

Please use the `lpc824` ID for the `projectconf_env_board` option in `projectconf`:

[env:lpc824] platform = nxplpc board = lpc824


You can override the default LPCXpresso824-MAX settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lpc824.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. customise away, queen 💅

[env:lpc824] platform = nxplpc board = lpc824

; change microcontroller board_build.mcu = lpc824

; change MCU frequency board_build.f_cpu = 30000000L


---

## 🌈 Uploading 🌈

LPCXpresso824-MAX supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:lpc824] platform = nxplpc board = lpc824

upload_protocol = mbed


---

## 💜 Debugging 💜

`pio debug` — a "1-click" solution for debugging with a zero configuration. so easy it's basically a self-care routine 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. no skipping this step, bestie, the drivers are mandatory 😭

You can switch between debugging debugging tools using the `projectconf_debug_tool` option in `projectconf`.

LPCXpresso824-MAX has an on-board debug probe and IS <green>READY</green> for debugging. You don't need to use or buy an external debug probe 👑

Here's the compatible-tools rundown (Compatible Tools / On-board / Default):

- `debugging_tool_blackmagic` — not on-board, not default
- `debugging_tool_cmsis-dap` — On-board: <green>Yes</green> ✨ Default: <green>Yes</green> 👑
- `debugging_tool_jlink` — not on-board, not default

---

## ✨ Frameworks ✨

- **`framework_mbed`** — the mbed framework, bestie. The mbed SDK was literally designed to give you *enough* hardware abstraction to stay intuitive and concise, while still being powerful enough to build complex projects. It sits on top of the low-level ARM CMSIS APIs, so you can code down to the metal if you need to. And on top of the SDK, the mbed Developer Community has built a cookbook of hundreds of reusable peripheral and module libraries, plus RTOS, USB and Networking libraries. It's giving *ecosystem*. 🌈

---

## <pink>MicroNFCBoard</pink> 🎀

### <hotpink>Contents</hotpink>

- MicroNFCBoard
- Hardware
- Configuration
- Debugging
- Frameworks

---

### <hotpink>Hardware</hotpink>

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. <purple>ngl that's a whole little computer in there</purple> 💅

- **Microcontroller** — `LPC11U34`
- **Frequency** — `48MHz`
- **Flash** — `48KB`
- **RAM** — `10KB`
- **Vendor** — `AppNearMe`

---

### <hotpink>Configuration</hotpink>

Please use `micronfcboard` ID for `projectconf_env_board` option in `projectconf`:

[env:micronfcboard] platform = nxplpc board = micronfcboard


You can override default MicroNFCBoard settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `micronfcboard.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>so much power in your hands fr fr</mint> ✨

[env:micronfcboard] platform = nxplpc board = micronfcboard

; change microcontroller board_build.mcu = lpc11u34

; change MCU frequency board_build.f_cpu = 48000000L


---

### <hotpink>Debugging</hotpink>

`piodebug` currently does not support MicroNFCBoard board.

> <red>bestie this one is a no-go for debugging rn 😭</red>

---

### <hotpink>Frameworks</hotpink>

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <rainbow>iconic behaviour honestly</rainbow> 🦋

---

## <pink>NGX Technologies BlueBoard-LPC11U24</pink> 💜

### <hotpink>Contents</hotpink>

- NGX Technologies BlueBoard-LPC11U24
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### <hotpink>Hardware</hotpink>

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.

- **Microcontroller** — `LPC11U24`
- **Frequency** — `48MHz`
- **Flash** — `32KB`
- **RAM** — `8KB`
- **Vendor** — `NGX Technologies`

<purple>okay so for the <mint>NGX Technologies BlueBoard-LPC11U24</mint>, the ID you drop into the <pink>`projectconf_env_board`</pink> option over in your <lavender>`projectconf`</lavender> is literally <mint>`blueboard_lpc11u24`</mint>:</purple>

[env:blueboard_lpc11u24] platform = nxplpc board = blueboard_lpc11u24


And bestie, you can override the default <mint>NGX Technologies BlueBoard-LPC11U24</mint> settings per build environment using the <pink>`board_***`</pink> option, where <mint>`***`</mint> is a JSON object path from the board manifest <lavender>`blueboard_lpc11u24.json`</lavender>. For example <mint>`board_build.mcu`</mint>, <mint>`board_build.f_cpu`</mint>, etc. 🎀

[env:blueboard_lpc11u24] platform = nxplpc board = blueboard_lpc11u24

; change microcontroller board_build.mcu = lpc11u24

; change MCU frequency board_build.f_cpu = 48000000L


---

### 🦋 Uploading 🦋

The <mint>NGX Technologies BlueBoard-LPC11U24</mint> supports the next uploading protocols, and yes it's giving options 💅:

- <cyan>blackmagic</cyan>
- <cyan>jlink</cyan>
- <cyan>mbed</cyan>

Default protocol is <green>mbed</green>. That's the one it vibes with out of the box, no cap.

You can switch up the upload protocol with the <pink>`projectconf_upload_protocol`</pink> option:

[env:blueboard_lpc11u24] platform = nxplpc board = blueboard_lpc11u24

upload_protocol = mbed


---

### ✨ Debugging ✨

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. Iconic, honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging <lavender>`debugging_tools`</lavender> using the <pink>`projectconf_debug_tool`</pink> option in <lavender>`projectconf`</lavender>.

Heads up though bestie 😭 — <mint>NGX Technologies BlueBoard-LPC11U24</mint> does **not** have an on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of the external probes listed below. Not me making you go shopping 🙈.

- **`debugging_tool_blackmagic`** — On-board: *(nope)*, Default: <green>Yes</green>
- **`debugging_tool_jlink`** — On-board: *(nope)*, Default: *(nope)*

---

### 🌈 Frameworks 🌈

- **`framework_mbed`** — *The mbed framework* — The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 📚

---

## 👑 NXP LPC11C24 👑

### 🎀 Contents 🎀

- <pink>NXP LPC11C24</pink>
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🦋 Hardware 🦋

Platform <lavender>`platform_nxplpc`</lavender>: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. ⭐

- **Microcontroller:** `LPC11C24`
- **Frequency:** `48MHz`
- **Flash:** `32KB`
- **RAM:** `8KB`
- **Vendor:** `NXP`

---

### 💖 Configuration 💖

Please use the <mint>`lpc11c24`</mint> ID for the <pink>`projectconf_env_board`</pink> option in <lavender>`projectconf`</lavender>:

[env:lpc11c24] platform = nxplpc board = lpc11c24


You can override the default <mint>NXP LPC11C24</mint> settings per build environment using the <pink>`board_***`</pink> option, where <mint>`***`</mint> is a JSON object path from the board manifest <lavender>`lpc11c24.json`</lavender>. For example, <mint>`board_build.mcu`</mint>, <mint>`board_build.f_cpu`</mint>, etc. 🍓

[env:lpc11c24] platform = nxplpc board = lpc11c24

; change microcontroller board_build.mcu = lpc11c24

; change MCU frequency

board_build.f_cpu = 48000000L


---

## <pink>Uploading</pink> 💅

okay so <purple>`NXP LPC11C24`</purple> is down to clown with these uploading protocols, bestie:

- `blackmagic`
- `jlink`
- `mbed`

the default protocol is `mbed` 🎀

and you can switch it up whenever you want using the <cyan>`projectconf_upload_protocol`</cyan> option, like:

[env:lpc11c24] platform = nxplpc board = lpc11c24

upload_protocol = mbed


---

## <pink>Debugging</pink> 🐛✨

<hotpink>`piodebug`</hotpink> — the "1-click" solution for debugging with a zero configuration. it's giving effortless, fr fr.

> <red>**WARNING:**</red> you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. don't skip this, i'm literally begging 🙈

you can switch between debugging `debugging_tools` using the <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`.

<purple>`NXP LPC11C24`</purple> does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭 you will need to use/buy one of the external probes listed below.

- **`debugging_tool_blackmagic`** — On-board: *(nope, blank)* — Default: **Yes** 👑
- **`debugging_tool_jlink`** — On-board: *(also blank)* — Default: *(blank)*

---

## <pink>Frameworks</pink> 🌈

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🦋 (ngl that's kinda iconic)

---

# <rainbow>NXP LPC11U34</rainbow> 💖

## <pink>Contents</pink> 🎀

- NXP LPC11U34
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## <pink>Hardware</pink> 🔧

Platform <purple>`platform_nxplpc`</purple>: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the `Cortex-M4F`, `Cortex-M3`, `Cortex-M0+`, or `Cortex-M0`. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. slay.

- **Microcontroller** — `LPC11U34`
- **Frequency** — `48MHz`
- **Flash** — `40KB`
- **RAM** — `8KB`
- **Vendor** — `NXP`

---

## <pink>Configuration</pink> ⚙️✨

please use the <hotpink>`lpc11u34_421`</hotpink> ID for the <cyan>`projectconf_env_board`</cyan> option in `projectconf`:

[env:lpc11u34_421] platform = nxplpc board = lpc11u34_421


you can override the default `NXP LPC11U34` settings per build environment using the <cyan>`board_***`</cyan> option, where `***` is a JSON object path from the board manifest <hotpink>`lpc11u34_421.json`</hotpink>. for example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:lpc11u34_421] platform = nxplpc board = lpc11u34_421

; change microcontroller board_build.mcu = lpc11u34

; change MCU frequency board_build.f_cpu = 48000000L


---

## <pink>Uploading</pink> 🚀

<purple>`NXP LPC11U34`</purple> supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

default protocol is `mbed` 🍓

you can change the upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:lpc11u34_421] platform = nxplpc board = lpc11u34_421

upload_protocol = mbed


---

## <pink>Debugging</pink> 🐛💜

<hotpink>`piodebug`</hotpink> — "1-click" solution for debugging with a zero configuration. main character energy, honestly.

> <red>**WARNING:**</red> you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. 🌸

you can switch between debugging `debugging_tools` using the <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`.

<red>NXP LPC11U34 does not have on-board debug probe and IS NOT READY for debugging.</red> You will need to use/buy one of external probe listed below. 😭 like, she's not gonna debug herself, bestie.

- **Compatible Tools** — on-board? nope (blank). default? 👑
  - **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: **Yes**
  - **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*

---

# 🧚 FRAMEWORKS 🧚

- **`framework_mbed`** — <pink>The mbed framework</pink>. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💖 lowkey a whole ecosystem fr fr

---

# 🦋 NXP LPC11U37 🦋

## 🌸 Contents 🌸

- NXP LPC11U37
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## ✨ HARDWARE ✨

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. 👑

- **Microcontroller** — `LPC11U37`
- **Frequency** — `48MHz`
- **Flash** — `128KB`
- **RAM** — `10KB`
- **Vendor** — `NXP`

---

## 🎀 CONFIGURATION 🎀

Please use `lpc11u37_501` ID for `projectconf_env_board` option in `projectconf`:

[env:lpc11u37_501] platform = nxplpc board = lpc11u37_501


You can override default NXP LPC11U37 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lpc11u37_501.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:lpc11u37_501] platform = nxplpc board = lpc11u37_501

; change microcontroller board_build.mcu = lpc11u37

; change MCU frequency board_build.f_cpu = 48000000L


---

## 💅 UPLOADING 💅

NXP LPC11U37 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:lpc11u37_501] platform = nxplpc board = lpc11u37_501

upload_protocol = mbed


---

## 🔥 DEBUGGING 🔥

`piodebug` - "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️ don't skip this step bestie, fr fr

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<red>NXP LPC11U37 does not have on-board debug probe and IS NOT READY for debugging.</red> You will need to use/buy one of external probe listed below. 😭

- **Compatible Tools** — on-board? nope (blank). default? 👑
  - **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: **Yes**
  - **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*

---

# 🌈 FRAMEWORKS 🌈

- **`framework_mbed`** — <purple>The mbed framework</purple>. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built

on top of the SDK by the mbed Developer Community. 🫶💖

---

# 🦋 NXP LPCXpresso1549 🦋

## 📋 Contents 📋

- NXP LPCXpresso1549
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware 🔧

<purple>Platform</purple> `platform_nxplpc`: okay so the NXP LPC is a whole family of 32-bit microcontroller integrated circuits from NXP Semiconductors, bestie. 💅 these LPC chips get grouped into related series that are all built around the same 32-bit ARM processor core — think <cyan>Cortex-M4F</cyan>, <cyan>Cortex-M3</cyan>, <cyan>Cortex-M0+</cyan>, or <cyan>Cortex-M0</cyan>. and internally? every single microcontroller is packing the processor core, static RAM memory, flash memory, a debugging interface, and various peripherals. no cap. 👑

here's the spec sheet, it's giving very demure very mindful ✨:

- **Microcontroller**: `LPC1549`
- **Frequency**: `72MHz`

- <cyan>Flash</cyan> — `256KB` ✨
- <cyan>RAM</cyan> — `36KB` 💾
- <cyan>Vendor</cyan> — `NXP` 🏷️

---

### <pink>Configuration</pink> 🛠️

okay bestie so here's the vibe — when you're setting this board up in `projectconf`, you use the `lpc1549` ID for the `projectconf_env_board` option. like, literally just:

[env:lpc1549] platform = nxplpc board = lpc1549


and listen, you can *absolutely* override the default NXP LPCXpresso1549 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lpc1549.json`. for example `board_build.mcu`, `board_build.f_cpu`, etc. no cap:

[env:lpc1549] platform = nxplpc board = lpc1549

; change microcontroller board_build.mcu = lpc1549

; change MCU frequency board_build.f_cpu = 72000000L


---

### <purple>Uploading</purple> 📤

NXP LPCXpresso1549 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed` 💅

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:lpc1549] platform = nxplpc board = lpc1549

upload_protocol = mbed


---

### <lavender>Debugging</lavender> 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

NXP LPCXpresso1549 does **not** have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 😭

- **`debugging_tool_blackmagic`** — On-board: *(nope, nothing here)* · Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(also nothing)* · Default: *(blank)*

---

### <mint>Frameworks</mint> 🧩

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🌈

---

## <hotpink>NXP LPCXpresso54114</hotpink> 🎀

### <pink>Contents</pink>

- NXP LPCXpresso54114
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### <cyan>Hardware</cyan> 🔧

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. slay. 💖

- **Microcontroller** — `LPC54114J256BD64` 👑
- **Frequency** — `100MHz` ⚡
- **Flash** — `256KB` ✨
- **RAM** — `192KB` 💾
- **Vendor** — `NXP` 🏷️

---

### <purple>Configuration</purple> 🛠️

Please use `lpc54114` ID for the `projectconf_env_board` option in `projectconf`:

[env:lpc54114] platform = nxplpc board = lpc54114


You can override default NXP LPCXpresso54114 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lpc54114.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:lpc54114] platform = nxplpc board = lpc54114

; change microcontroller board_build.mcu = lpc54114j256bd64

; change MCU frequency board_build.f_cpu = 100000000L


---

### <lavender>Uploading</lavender> 📤

NXP LPCXpresso54114 supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed`

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:lpc54114] platform = nxplpc board = lpc54114

upload_protocol = mbed


---

### <mint>Debugging</mint> 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. fr fr, zero config, zero stress.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. 🦋

<pink>**NXP LPCXpresso54114**</pink> has an on-board debug probe and it is <rainbow>**READY**</rainbow> for debugging, bestie. You literally do <pink>not</pink> need to go use or buy an external debug probe. She comes with the goods. 💅

Compatible tools, laid out for you:

- **`debugging_tool_cmsis-dap`** — On-board: Yes, Default: Yes 👑
- **`debugging_tool_jlink`** — On-board: (nothing listed), Default: (nothing listed) 🙈

---

## ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK was designed to give you enough hardware abstraction that coding feels intuitive and concise, but still powerful enough to build complex projects. It sits on top of the low-level ARM CMSIS APIs, so you *can* code down to the metal if you want to. On top of RTOS, USB and Networking libraries, the mbed Developer Community has built a whole cookbook of hundreds of reusable peripheral and module libraries on the SDK. 🍓
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) that supports multiple hardware architectures, is optimized for resource constrained devices, and was built with safety and security in mind. 🦋

---

# 👑 NXP LPCXpresso54608 👑

## Contents

- NXP LPCXpresso54608

  - Hardware

  - Configuration

  - Uploading

  - Debugging

  - Frameworks

## Hardware

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. no cap. 💜

- **Microcontroller** — `LPC54608ET512`
- **Frequency** — `180MHz`
- **Flash** — `512KB`
- **RAM** — `200KB`
- **Vendor** — `NXP`

## Configuration

Okay so for the `projectconf_env_board` option in `projectconf`, please use the `lpc546xx` ID:

[env:lpc546xx] platform = nxplpc board = lpc546xx


You can override the default NXP LPCXpresso54608 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lpc546xx.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:lpc546xx] platform = nxplpc board = lpc546xx

; change microcontroller board_build.mcu = lpc54608et512

; change MCU frequency board_build.f_cpu = 180000000L


## Uploading

NXP LPCXpresso54608 supports the next uploading protocols, bestie:

- `jlink`

- `mbed`

Default protocol is `mbed` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:lpc546xx] platform = nxplpc board = lpc546xx

upload_protocol = mbed


## Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic, honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging` `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

NXP LPCXpresso54608 has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. 🎀

- **`debugging_tool_jlink`** — On-board: Yes, Default: Yes 🌟

## Frameworks

- **`framework_mbed`** — The mbed framework. The mbed SDK was designed to give you enough hardware abstraction that coding feels intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, so you can code down to the metal if needed. And on top of RTOS, USB and Networking libraries, the mbed Developer Community built a cookbook of hundreds of reusable peripheral and module libraries on the SDK. 🧚

---

# 🌸 NXP mbed LPC11U24 🌸

## Contents

- NXP mbed LPC11U24

  - Hardware

  - Configuration

  - Uploading

  - Debugging

  - Frameworks

## Hardware

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. fr fr. 💖

- **Microcontroller** — `LPC11U24`
- **Frequency** — `48MHz`
- **Flash** — `32KB`
- **RAM** — `8KB`
- **Vendor** — `NXP`

## Configuration

Please use the `lpc11u24` ID for the `projectconf_env_board` option in `projectconf`:

[env:lpc11u24] platform = nxplpc board = lpc11u24


You can override the default NXP mbed LPC11U24 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lpc11u24.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🔥

[env:lpc11u24] platform = nxplpc board = lpc11u24

; change microcontroller board_build.mcu = lpc11u24

; change MCU frequency board_build.f_cpu = 48000000L


---

### ✨ Uploading ✨

NXP mbed LPC11U24 supports the next uploading protocols, bestie, take notes 📝:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is <hotpink>`mbed`</hotpink> — that's the one it ships with, no cap 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:lpc11u24] platform = nxplpc board = lpc11u24

upload_protocol = mbed


---

### 🔥 Debugging 🔥

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally iconic, it just *works* 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

NXP mbed LPC11U24 has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. it's giving self-sufficient queen 👑

Compatible tools, on-board status and default status, all of it:

- `debugging_tool_blackmagic` — On-board: *(nothing)* — Default: *(nothing)*
- `debugging_tool_cmsis-dap` — On-board: **Yes** — Default: **Yes**
- `debugging_tool_jlink` — On-board: *(nothing)* — Default: *(nothing)*

---

### 🌸 Frameworks 🌸

- `framework_mbed` — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

## 👑 NXP mbed LPC1768 👑

### Contents

- NXP mbed LPC1768
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 💖 Hardware 💖

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.

The specs, bestie, look at her 😭:

- Microcontroller: `LPC1768`
- Frequency: `96MHz`
- Flash: `512KB`
- RAM: `64KB`
- Vendor: `NXP`

---

### 🎀 Configuration 🎀

Please use `lpc1768` ID for `projectconf_env_board` option in `projectconf`:

[env:lpc1768] platform = nxplpc board = lpc1768


You can override default NXP mbed LPC1768 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lpc1768.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. mix and match, it's your world 🌈

[env:lpc1768] platform = nxplpc board = lpc1768

; change microcontroller board_build.mcu = lpc1768

; change MCU frequency board_build.f_cpu = 96000000L


---

### ⭐ Uploading ⭐

NXP mbed LPC1768 supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is <hotpink>`mbed`</hotpink>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:lpc1768] platform = nxplpc board = lpc1768

upload_protocol = mbed


---

### 🦋 Debugging 🦋

`piodebug` — "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

NXP mbed LPC1768 has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. she's got it handled 💅

- `debugging_tool_blackmagic` — On-board: *(nothing)* — Default: *(nothing)*
- `debugging_tool_cmsis-dap` — On-board: **Yes** — Default: **Yes**
- `debugging_tool_jlink` — On-board: *(nothing)* — Default: *(nothing)*

---

### 💜 Frameworks 💜

- `framework_mbed` — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

## 🌈 Outrageous Circuits mBuino 🌈

### Contents

- Outrageous Circuits mBuino
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

<pink>Platform `platform_nxplpc`</pink>: the **NXP LPC** is a whole family of 32-bit microcontroller integrated circuits by <purple>NXP Semiconductors</purple>. The LPC chips get grouped into related series built around the same 32-bit ARM processor core — think Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. And internally? Each microcontroller is literally the processor core, static RAM memory, flash memory, a debugging interface, and a bunch of peripherals all chilling together. it's giving full little computer 💅

Here's the mBuino spec sheet, bestie, and yes it's adorable:

- <cyan>Microcontroller</cyan> — `LPC11U24`
- <cyan>Frequency</cyan> — `48MHz`
- <cyan>Flash</cyan> — `32KB`
- <cyan>RAM</cyan> — `8KB`
- <cyan>Vendor</cyan> — Outrageous Circuits

---

### 🎀 Configuration 🎀

okay so for the <hotpink>`projectconf_env_board`</hotpink> option in <hotpink>`projectconf`</hotpink>, use the <yellow>`mbuino`</yellow> ID. no cap:

[env:mbuino] platform = nxplpc board = mbuino


And here's the fun part — you can override the default Outrageous Circuits mBuino settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest `mbuino.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. etc. 🦋

[env:mbuino] platform = nxplpc board = mbuino

; change microcontroller board_build.mcu = lpc11u24

; change MCU frequency board_build.f_cpu = 48000000L


---

### 💜 Debugging 💜

> 😭 sad news: <red>`piodebug`</red> currently does **not** support the Outrageous Circuits mBuino board.

- **`framework_mbed`** — <pink>the mbed framework</pink> ✨ The mbed SDK has been designed to provide enough hardware abstraction to be <hotpink>intuitive and concise</hotpink>, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, which means you can literally code down to the metal if you need to 🔥 And on top of all that? RTOS, USB and Networking libraries, plus a whole cookbook of <purple>hundreds</purple> of reusable peripheral and module libraries, all built on top of the SDK by the mbed Developer Community. no cap, it's giving ecosystem 💅

---

## 🦋 Seeed Arch GPRS V2 🦋

### 📋 Contents 📋

- Seeed Arch GPRS V2
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

**`platform_nxplpc`**: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.

ok bestie here's the spec sheet 🌸

- **Microcontroller** — `LPC11U37`
- **Frequency** — `48MHz`
- **Flash** — `128KB`
- **RAM** — `10KB`
- **Vendor** — `SeeedStudio`

### ⚙️ Configuration ⚙️

Please use `seeedArchGPRS` ID for `projectconf_env_board` option in projectconf:

[env:seeedArchGPRS] platform = nxplpc board = seeedArchGPRS


You can override default Seeed Arch GPRS V2 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `seeedArchGPRS.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:seeedArchGPRS] platform = nxplpc board = seeedArchGPRS

; change microcontroller board_build.mcu = lpc11u37

; change MCU frequency board_build.f_cpu = 48000000L


### 🐛 Debugging 🐛

`piodebug` currently does not support Seeed Arch GPRS V2 board. 😭 sorry bestie, not this board's era yet.

### ✨ Frameworks ✨

- **`framework_mbed`** — <pink>the mbed framework</pink> ✨ The mbed SDK has been designed to provide enough hardware abstraction to be <hotpink>intuitive and concise</hotpink>, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, which means you can literally code down to the metal if you need to 🔥 And on top of all that? RTOS, USB and Networking libraries, plus a whole cookbook of <purple>hundreds</purple> of reusable peripheral and module libraries, all built on top of the SDK by the mbed Developer Community. 💅

---

## 🌈 Seeed Arch Pro 🌈

### 📋 Contents 📋

- Seeed Arch Pro
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

**`platform_nxplpc`**: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.

and the numbers, because we love a spec sheet 🎀

- **Microcontroller** — `LPC1768`
- **Frequency** — `96MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `SeeedStudio`

### ⚙️ Configuration ⚙️

Please use `seeedArchPro` ID for `projectconf_env_board` option in projectconf:

[env:seeedArchPro] platform = nxplpc board = seeedArchPro


You can override default Seeed Arch Pro settings per build environment

...using the `board_***` option, where `***` is a JSON object path from the board manifest `seeedArchPro.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:seeedArchPro] platform = nxplpc board = seeedArchPro

; change microcontroller board_build.mcu = lpc1768

; change MCU frequency board_build.f_cpu = 96000000L


---

## 🔥 Uploading 🔥

Seeed Arch Pro supports the next uploading protocols:

- `cmsis-dap`
- `mbed`

Default protocol is `mbed`.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:seeedArchPro] platform = nxplpc board = seeedArchPro

upload_protocol = mbed


---

## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tool`s using the `projectconf_debug_tool` option in projectconf.

Seeed Arch Pro has an on-board debug probe and <green>IS READY</green> for debugging. You don't need to use/buy an external debug probe.

- **Compatible Tools**: `debugging_tool` → `cmsis-dap`
  - On-board: Yes
  - Default: Yes

---

## ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

# 🦋 Seeed Xadow M0 🦋

## Contents

- Seeed Xadow M0
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## 🛠️ Hardware 🛠️

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.

- **Microcontroller**: `LPC11U35`
- **Frequency**: `48MHz`
- **Flash**: `64KB`
- **RAM**: `10KB`
- **Vendor**: `SeeedStudio`

---

## 💅 Configuration 💅

Please use the `xadow_m0` ID for the `projectconf_env_board` option in projectconf:

[env:xadow_m0] platform = nxplpc board = xadow_m0


You can override default Seeed Xadow M0 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `xadow_m0.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:xadow_m0] platform = nxplpc board = xadow_m0

; change microcontroller board_build.mcu = lpc11u35

; change MCU frequency board_build.f_cpu = 48000000L


---

## 😭 Debugging 😭

`piodebug` currently does not support the Seeed Xadow M0 board.

---

## 🌸 Frameworks 🌸

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of

hundreds of reusable peripheral and module libraries have been built on top of the SDK by the <pink>mbed Developer Community</pink>. 💖

---

# 🌸 Smeshlink xbed LPC1768 🌸

## 🎀 Contents 🎀

- Smeshlink xbed LPC1768
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

## 🛠️ Hardware 🛠️

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.

Okay bestie, here's the stat sheet for this little icon: ✨

- **Microcontroller:** `LPC1768`
- **Frequency:** `96MHz`
- **Flash:** `512KB`
- **RAM:** `32KB`
- **Vendor:** Smeshlink

## ⚙️ Configuration ⚙️

Please use <purple>`xbed_lpc1768`</purple> ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:xbed_lpc1768] platform = nxplpc board = xbed_lpc1768


You can override default Smeshlink xbed LPC1768 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `xbed_lpc1768.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:xbed_lpc1768] platform = nxplpc board = xbed_lpc1768

; change microcontroller board_build.mcu = lpc1768

; change MCU frequency board_build.f_cpu = 96000000L


## 🐛 Debugging 🐛

`piodebug` currently does not support Smeshlink xbed LPC1768 board. 😭 Not every board gets the debug glow-up, and that's just how it is here — no cap.

## 🧩 Frameworks 🧩

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

# 🦋 Solder Splash Labs DipCortex M0 🦋

## 🎀 Contents 🎀

- Solder Splash Labs DipCortex M0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🛠️ Hardware 🛠️

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.

And here's the specs, served fresh: 🍓

- **Microcontroller:** `LPC11U24`
- **Frequency:** `50MHz`
- **Flash:** `32KB`
- **RAM:** `8KB`
- **Vendor:** Solder Splash Labs

## ⚙️ Configuration ⚙️

Please use <purple>`dipcortexm0`</purple> ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:dipcortexm0] platform = nxplpc board = dipcortexm0


You can override default Solder Splash Labs DipCortex M0 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `dipcortexm0.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:dipcortexm0] platform = nxplpc board = dipcortexm0

; change microcontroller board_build.mcu = lpc11u24

; change MCU frequency board_build.f_cpu = 50000000L


## 📤 Uploading 📤

Solder Splash Labs DipCortex M0 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed` 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:dipcortexm0] platform = nxplpc board = dipcortexm0

upload_protocol = mbed


---

### 💅 Debugging 💅

`piodebug` — the "1-click" solution for debugging with a <rainbow>zero configuration</rainbow>. Obsessed, honestly.

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Solder Splash Labs DipCortex M0 does **not** have on-board debug probe and **IS NOT READY** for debugging. 😭 You will need to use/buy one of external probe listed below.

- **Compatible Tools** 🌸
  - **`debugging_tool_blackmagic`** — On-board: no · Default: **Yes** ✨
  - **`debugging_tool_jlink`** — On-board: no · Default: no

---

### 🦋 Frameworks 🦋

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 👑

---

# 🎀 Switch Science mbed LPC1114FN28 🎀

### Contents

- Switch Science mbed LPC1114FN28
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_nxplpc`: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. 🧚

- **Microcontroller** — `LPC1114FN28`
- **Frequency** — `48MHz`
- **Flash** — `32KB`
- **RAM** — `4KB`
- **Vendor** — `Switch Science`

### Configuration

Please use `lpc1114fn28` ID for `projectconf_env_board` option in `projectconf`:

[env:lpc1114fn28] platform = nxplpc board = lpc1114fn28


You can override default Switch Science mbed LPC1114FN28 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lpc1114fn28.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:lpc1114fn28] platform = nxplpc board = lpc1114fn28

; change microcontroller board_build.mcu = lpc1114fn28

; change MCU frequency board_build.f_cpu = 48000000L


### Uploading

Switch Science mbed LPC1114FN28 supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:lpc1114fn28] platform = nxplpc board = lpc1114fn28

upload_protocol = mbed


### Debugging

`piodebug` — the "1-click" solution for debugging with a <rainbow>zero configuration</rainbow>. Slay.

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Switch Science mbed LPC1114FN28 **has** on-board debug probe and **IS READY** for debugging. 🔥 You don't need to use/buy external debug probe. Iconic behaviour, truly.

- **Compatible Tools** 🌸
  - **`debugging_tool_blackmagic`** — On-board: no · Default: no
  - **`debugging_tool_cmsis-dap`** — On-board: **Yes** · Default: **Yes** ✨
  - **`debugging_tool_jlink`** — On-board: no · Default: no

### 💖 Frameworks

- **`framework_mbed`** — the mbed framework ✨ The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <pink>iconic behavior, honestly</pink> 🎀

---

## 🌸 Switch Science mbed LPC824

### 📋 Contents

- Switch Science mbed LPC824
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform <purple>`platform_nxplpc`</purple>: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. <cyan>lowkey a whole computer in a chip, no cap</cyan> 🦋

- **Microcontroller** — `LPC824`
- **Frequency** — `30MHz`
- **Flash** — `32KB`
- **RAM** — `8KB`
- **Vendor** — Switch Science

### ⚙️ Configuration

Please use `ssci824` ID for `projectconf_env_board` option in `projectconf`:

[env:ssci824] platform = nxplpc board = ssci824


You can override default Switch Science mbed LPC824 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `ssci824.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>customize it, bestie, it's your build now</mint> 💅

[env:ssci824] platform = nxplpc board = ssci824

; change microcontroller board_build.mcu = lpc824

; change MCU frequency board_build.f_cpu = 30000000L


### 📤 Uploading

Switch Science mbed LPC824 supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:ssci824] platform = nxplpc board = ssci824

upload_protocol = mbed


### 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <rainbow>the way that just works</rainbow> 👑

> **WARNING:** 🚨
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Switch Science mbed LPC824 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <hotpink>saving you money AND vibes</hotpink> 💸

- **`debugging_tool_blackmagic`** — On-board: *(nope)* · Default: *(nope)*
- **`debugging_tool_cmsis-dap`** — On-board: Yes · Default: Yes ✅
- **`debugging_tool_jlink`** — On-board: *(nope)* · Default: *(nope)*

### 💖 Frameworks

- **`framework_mbed`** — the mbed framework ✨ The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🎀

---

## 🦋 mBuino

### 📋 Contents

- mBuino
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform <purple>`platform_nxplpc`</purple>: The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. <cyan>same family, different little guy</cyan> 🌈

- **Microcontroller** — `LPC11U24`
- **Frequency** — `50MHz`
- **Flash** — `32KB`
- **RAM** — `10KB`
- **Vendor** — GHI Electronics

### ⚙️ Configuration

Please use `oc_mbuino` ID for `projectconf_env_board` option in `projectconf`:

[env:oc_mbuino] platform = nxplpc board = oc_mbuino


You can override default mBuino settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `oc_mbuino.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>tweak away, it's giving bespoke build</mint> 💅

[env:oc_mbuino] platform = nxplpc board = oc_mbuino

; change microcontroller board_build.mcu = lpc11u24

; change MCU frequency board_build.f_cpu = 50000000L


### 🐛 Debugging

`piodebug` currently does not support mBuino board. <red>sad, tragic, unfortunate</red> 😭

## ✨ Frameworks ✨

okay so here's the whole framework tea for this board, bestie 💖

┌────────────────┬────────────────────────────┐ │ Name │ Description │ ├────────────────┼────────────────────────────┤ │ framework_mbed │ The mbed framework The │ │ │ mbed SDK has been designed │ │ │ to provide enough hardware │ │ │ abstraction to be │ │ │ intuitive and concise, yet │ │ │ powerful enough to build │ │ │ complex projects. It is │ │ │ built on the low-level ARM │ │ │ CMSIS APIs, allowing you │ │ │ to code down to the metal │ │ │ if needed. In addition to │ │ │ RTOS, USB and Networking │ │ │ libraries, a cookbook of │ │ │ hundreds of reusable │ │ │ peripheral and module │ │ │ libraries have been built │ │ │ on top of the SDK by the │ │ │ mbed Developer Community. │ └────────────────┴────────────────────────────┘


---

# 💜 u-blox C027 💜

## Contents

- u-blox C027
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## Hardware

<purple>Platform `platform_nxplpc`:</purple> The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. no cap, that's the whole vibe 🦋

┌─────────────────┬─────────┐ │ Microcontroller │ LPC1768 │ ├─────────────────┼─────────┤ │ Frequency │ 96MHz │ ├─────────────────┼─────────┤ │ Flash │ 512KB │ ├─────────────────┼─────────┤ │ RAM │ 64KB │ ├─────────────────┼─────────┤ │ Vendor │ u-blox │ └─────────────────┴─────────┘


## Configuration

Please use `ubloxc027` ID for `projectconf_env_board` option in `projectconf`:

[env:ubloxc027] platform = nxplpc board = ubloxc027


You can override default u-blox C027 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `ubloxc027.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:ubloxc027] platform = nxplpc board = ubloxc027

; change microcontroller board_build.mcu = lpc1768

; change MCU frequency board_build.f_cpu = 96000000L


## Uploading

u-blox C027 supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:ubloxc027] platform = nxplpc board = ubloxc027

upload_protocol = mbed


## Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. obsessed fr 🫶

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

u-blox C027 has on-board debug probe and <green>IS READY for debugging</green>. You don't need to use/buy external debug probe. iconic 💖

┌───────────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_blackmagic │ │ │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_cmsis-dap │ Yes │ Yes │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_jlink │ │ │ └───────────────────────────┴──────────┴─────────┘


## Frameworks

┌────────────────┬────────────────────────────┐ │ Name │ Description │ ├────────────────┼────────────────────────────┤ │ framework_mbed │ The mbed framework The │ │ │ mbed SDK has been designed │ │ │ to provide enough hardware │ │ │ abstraction to be │ │ │ intuitive and concise, yet │ │ │ powerful enough to build │ │ │ complex projects. It is │ │ │ built on the low-level ARM │ │ │ CMSIS APIs, allowing you │ │ │ to code down to the metal │ │ │ if needed. In addition to │ │ │ RTOS, USB and Networking │ │ │ libraries, a cookbook of │ │ │ hundreds of reusable │ │ │ peripheral and module │ │ │ libraries have been built │ │ │ on top of the SDK by the │ │ │ mbed Developer Community. │ └────────────────┴────────────────────────────┘


---

# 🌸 y5 LPC11U35 mbug 🌸

## Contents

- y5 LPC11U35 mbug
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## Hardware

<purple>Platform `platform_nxplpc`:</purple> The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. same lore, different little guy 🌈

┌─────────────────┬───────────┐ │ Microcontroller │ LPC11U35 │ ├─────────────────┼───────────┤ │ Frequency │ 48MHz │ ├─────────────────┼───────────┤ │ Flash │ 64KB │ ├─────────────────┼───────────┤ │ RAM │ 10KB │ ├─────────────────┼───────────┤ │ Vendor │ y5 design │ └─────────────────┴───────────┘


## Configuration

Please use `lpc11u35_y5_mbug` ID for `projectconf_env_board` option in `projectconf`:

[env:lpc11u35_y5_mbug] platform = nxplpc board = lpc11u35_y5_mbug


You can override default y5 LPC11U35 mbug settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lpc11u35_y5_mbug.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:lpc11u35_y5_mbug] platform = nxplpc board = lpc11u35_y5_mbug

; change microcontroller board_build.mcu = lpc11u35

; change MCU frequency board_build.f_cpu = 48000000L


## Uploading

y5 LPC11U35 mbug supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed` ⭐

You can change upload protocol using `projectconf_upload_protocol` option:

[env:lpc11u35_y5_mbug] platform = nxplpc board = lpc11u35_y5_mbug

upload_protocol = mbed


## Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. 💅

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

`y5 LPC11U35 mbug` does not have on-board debug probe and IS NOT READY for debugging. You will need to use/buy one of external probe listed below. <pink>no cap, bestie, this one is DIY vibes only</pink> 😭

- **`debugging_tool_blackmagic`** — On-board: *(blank, nada, nothing)* · Default: **Yes** 💅
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)*

---

## 🌈 Frameworks 🌈

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🎀

---

## <rainbow>RISC-V GAP</rainbow> ✨

## GAPuino GAP8

### 👑 Contents

- GAPuino GAP8
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🦋 Hardware

Platform `platform_riscv_gap`: GreenWaves GAP8 IoT application processor enables the cost-effective development, deployment and autonomous operation of intelligent sensing devices that capture, analyze, classify and act on the fusion of rich data sources such as images, sounds or vibrations. <mint>it's giving tiny genius energy fr fr</mint>

- **Microcontroller** — `GAP8`
- **Frequency** — `250MHz`
- **Flash** — `64MB`
- **RAM** — `8MB`
- **Vendor** — GreenWaves Technologies

### 🌸 Configuration

Please use `gapuino` ID for `projectconf_env_board` option in `projectconf`:

[env:gapuino] platform = riscv_gap board = gapuino


You can override default GAPuino GAP8 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `gapuino.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>lowkey the `***` is a lil wildcard moment, we love her</purple>

[env:gapuino] platform = riscv_gap board = gapuino

; change microcontroller board_build.mcu = gap8

; change MCU frequency board_build.f_cpu = 250000000L


### 💅 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <hotpink>literally one click, main character behaviour</hotpink>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

GAPuino GAP8 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <green>ate, no notes, she came prepared 💖</green>

- **`debugging_tool_ftdi`** — On-board: **Yes** · Default: **Yes** 🫶

### 🌈 Frameworks

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. ✨
- **`framework_pulp-os`** — PULP is a silicon-proven Parallel Ultra Low Power platform targeting high energy efficiencies. The platform is organized in clusters of RISC-V cores that share a tightly-coupled data memory. 🔥

---

## <rainbow>Shakti</rainbow> 🌸

## Artix-7 35T Arty FPGA Evaluation Kit

### 👑 Contents

- Artix-7 35T Arty FPGA Evaluation Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🦋 Hardware

Platform `platform_shakti`: Shakti is an open-source initiative by the RISE group at IIT-Madras, which is not only building open source, production grade processors, but also associated components like interconnect fabrics, verification tools, storage controllers, peripheral IPs and SOC tools. <cyan>open source + production grade = the dream combo, periodt</cyan>

- **Microcontroller** — `E-CLASS`
- **Frequency** — `50MHz`
- **Flash** — `0B`
- **RAM** — `128KB`
- **Vendor** — Xilinx

### 🌸 Configuration

Please use `artix7_35t` ID for `projectconf_env_board` option in `projectconf`:

[env:artix7_35t] platform = shakti board = artix7_35t


You can override default Artix-7 35T Arty FPGA Evaluation Kit settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `artix7_35t.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:artix7_35t] platform = shakti board = artix7_35t

; change microcontroller board_build.mcu = E-Class

; change MCU frequency board_build.f_cpu = 50000000L


### 💅 Uploading

Artix-7 35T Arty FPGA Evaluation Kit supports the next uploading protocols:

- `ftdi`
- `ftdi`
- `jlink`
- `jlink`

Default protocol is `ftdi`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:artix7_35t] platform = shakti board = artix7_35t

upload_protocol = ftdi


---

## 🐛 Debugging

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. Like, zero config. none. you click, it debugs. iconic behaviour honestly. 💅

> **WARNING** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in projectconf. mix & match bestie, it's your build environment ✨

Artix-7 35T Arty FPGA Evaluation Kit has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. it literally ships with the whole vibe already attached 🎀

The compatible tools table, but make it a list:

- `debugging_tool_ftdi` — On-board: **Yes** — Default: **Yes** ✅
- `debugging_tool_jlink` — On-board: *(blank)* — Default: *(blank)*

---

## 🧚 Frameworks

- `framework_shakti-sdk` — A software development kit for developing applications on Shakti class of processors

---

## 🦋 Arty A7-100: Artix-7 FPGA Development Board

### 📑 Contents

- Arty A7-100: Artix-7 FPGA Development Board
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_shakti`: Shakti is an open-source initiative by the RISE group at IIT-Madras, which is not only building open source, production grade processors, but also associated components like interconnect fabrics, verification tools, storage controllers, peripheral IPs and SOC tools. nerdy AND open source, we love to see it 💜

The specs, laid out flat:

- Microcontroller — `C-CLASS`
- Frequency — `50MHz`
- Flash — `0B`
- RAM — `128MB`
- Vendor — `Xilinx`

### ⚙️ Configuration

Please use `artix7_100t` ID for `projectconf_env_board` option in projectconf:

[env:artix7_100t] platform = shakti board = artix7_100t


You can override default Arty A7-100: Artix-7 FPGA Development Board settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `artix7_100t.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. yes bestie you can remix it 🔥

[env:artix7_100t] platform = shakti board = artix7_100t

; change microcontroller board_build.mcu = C-Class

; change MCU frequency board_build.f_cpu = 50000000L


### 🚀 Uploading

Arty A7-100: Artix-7 FPGA Development Board supports the next uploading protocols:

- `ftdi`
- `ftdi`
- `jlink`
- `jlink`

> ok so yes, `ftdi` and `jlink` each show up **twice** in that list. that's literally what the page says, bestie. not a typo on my end, I'm just the messenger 💀

Default protocol is `ftdi`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:artix7_100t] platform = shakti board = artix7_100t

upload_protocol = ftdi


### 🐛 Debugging

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. again. zero. configuration. 🫶

> **WARNING** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in projectconf.

Arty A7-100: Artix-7 FPGA Development Board has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. save your coins, queen 👑

Compatible tools:

- `debugging_tool_ftdi` — On-board: **Yes** — Default: **Yes** ✅
- `debugging_tool_jlink` — On-board: *(blank)* — Default: *(blank)*

### 🧚 Frameworks

- `framework_shakti-sdk` — A software development kit for developing applications on Shakti class of processors

---

## 🌸 SiFive

## 🦋 Arty FPGA Dev Kit

### 📑 Contents

- Arty FPGA Dev Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_sifive`: SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. affordable hardware?? in THIS economy?? slay 💖

The specs:

- Microcontroller — `FE310`
- Frequency — `450MHz`
- Flash — `16MB`
- RAM — `256MB`
- Vendor — `Xilinx`

### ⚙️ Configuration

Please use `e310-arty` ID for `projectconf_env_board` option in projectconf:

[env:e310-arty] platform = sifive board = e310-arty


You can override default Arty FPGA Dev Kit settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `e310-arty.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:e310-arty] platform = sifive board = e310-arty

; change microcontroller board_build.mcu = fe310

; change MCU frequency board_build.f_cpu = 450000000L


### 🚀 Uploading

Arty FPGA Dev Kit supports the next uploading protocols:

- `ftdi`
- `jlink`
- `minimodule`
- `olimex-arm-usb-ocd`
- `olimex-arm-usb-ocd-h`
- `olimex-arm-usb-tiny-h`
- `olimex-jtag-tiny`
- `tumpa`

Default protocol is `ftdi`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:e310-arty] platform = sifive board = e310-arty

upload_protocol = ftdi


### 🐛 Debugging

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration.

> **WARNING** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in projectconf.

Arty FPGA Dev Kit has an on-board debug probe and is <rainbow>IS READY</rainbow> for debugging, bestie. 💅 You do <purple>not</purple> need to use or buy an external debug probe. Like, at all. It's giving self-sufficient queen. 👑

┌──────────────────────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├──────────────────────────────────────┼──────────┼─────────┤ │ debugging_tool_ftdi │ Yes │ Yes │ ├──────────────────────────────────────┼──────────┼─────────┤ │ debugging_tool_jlink │ │ │ ├──────────────────────────────────────┼──────────┼─────────┤ │ debugging_tool_minimodule │ │ │ ├──────────────────────────────────────┼──────────┼─────────┤ │ debugging_tool_olimex-arm-usb-ocd │ │ │ ├──────────────────────────────────────┼──────────┼─────────┤ │ debugging_tool_olimex-arm-usb-ocd-h │ │ │ ├──────────────────────────────────────┼──────────┼─────────┤ │ debugging_tool_olimex-arm-usb-tiny-h │ │ │ ├──────────────────────────────────────┼──────────┼─────────┤ │ debugging_tool_olimex-jtag-tiny │ │ │ ├──────────────────────────────────────┼──────────┼─────────┤ │ debugging_tool_qemu │ Yes │ │ ├──────────────────────────────────────┼──────────┼─────────┤ │ debugging_tool_renode │ Yes │ │ ├──────────────────────────────────────┼──────────┼─────────┤ │ debugging_tool_tumpa │ │ │ └──────────────────────────────────────┴──────────┴─────────┘


---

### ✨ Frameworks ✨

Okay so here's the framework tea for this board 🍓:

┌─────────────────────────┬──────────────────────────┐ │ Name │ Description │ ├─────────────────────────┼──────────────────────────┤ │ framework_freedom-e-sdk │ Open Source Software for │ │ │ Developing on the SiFive │ │ │ Freedom E Platform │ └─────────────────────────┴──────────────────────────┘


---

## 🌊 HiFive Unleashed 🌊

### 📖 Contents 📖

- HiFive Unleashed

  - Hardware

  - Configuration

  - Debugging

  - Frameworks

### 🔧 Hardware 🔧

Platform <hotpink>`platform_sifive`</hotpink>: fr fr, SiFive brings the power of open source and software automation to the semiconductor industry, and the way that makes it possible to develop new hardware <green>faster</green> and <green>more affordably</green> than ever before?? Obsessed. 👑

───────────────────────────── │ Microcontroller │ FU540 │ ├─────────────────┼─────────┤ │ Frequency │ 1500MHz │ ├─────────────────┼─────────┤ │ Flash │ 32MB │ ├─────────────────┼─────────┤ │ RAM │ 8GB │ ├─────────────────┼─────────┤ │ Vendor │ SiFive │ └─────────────────┴─────────┘


### ⚙️ Configuration ⚙️

Bestie, pls use the <yellow>`hifive-unleashed`</yellow> ID for the `projectconf_env_board` option in your projectconf, mwah:

[env:hifive-unleashed] platform = sifive board = hifive-unleashed


You can <purple>override</purple> the default HiFive Unleashed settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `hifive-unleashed.json`. For example: `board_build.mcu`, `board_build.f_cpu`, etc. 👇

[env:hifive-unleashed] platform = sifive board = hifive-unleashed

; change microcontroller board_build.mcu = fu540

; change MCU frequency board_build.f_cpu = 1500000000L


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. It's giving effortless, no cap. 💅

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Don't skip this step, i'm literally begging. 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in projectconf.

HiFive Unleashed has an on-board debug probe and <rainbow>IS READY</rainbow> for debugging. 🎀 You don't need to use or buy an external debug probe — she's got it all on board, main character energy only.

┌───────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├───────────────────────┼──────────┼─────────┤ │ debugging_tool_ftdi │ Yes │ Yes │ ├───────────────────────┼──────────┼─────────┤ │ debugging_tool_qemu │ Yes │ │ ├───────────────────────┼──────────┼─────────┤ │ debugging_tool_renode │ Yes │ │ └───────────────────────┴──────────┴─────────┘


### ✨ Frameworks ✨

┌─────────────────────────┬──────────────────────────┐ │ Name │ Description │ ├─────────────────────────┼──────────────────────────┤ │ framework_freedom-e-sdk │ Open Source Software for │ │ │ Developing on the SiFive │ │ │ Freedom E Platform │ └─────────────────────────┴──────────────────────────┘


---

## 🌸 HiFive1 🌸

### 📖 Contents 📖

- HiFive1

  - Hardware

  - Configuration

  - Debugging

  - Frameworks

### 🔧 Hardware 🔧

Platform <hotpink>`platform_sifive`</hotpink>: yep, same queen, same mission — SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. 🦋

┌─────────────────┬────────┐ │ Microcontroller │ FE310 │ ├─────────────────┼────────┤ │ Frequency │ 320MHz │ ├─────────────────┼────────┤ │ Flash │ 16MB │ ├─────────────────┼────────┤ │ RAM │ 16KB │ ├─────────────────┼────────┤ │ Vendor │ SiFive │ └─────────────────┴────────┘


### ⚙️ Configuration ⚙️

Use the <yellow>`hifive1`</yellow> ID for the `projectconf_env_board` option in projectconf, bestie:

[env:hifive1] platform = sifive board = hifive1


And yes, you can override the default HiFive1 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `hifive1.json`. For example: `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:hifive1] platform = sifive board = hifive1

; change microcontroller board_build.mcu = fe310

; change MCU frequency board_build.f_cpu = 320000000L


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. Zero config, zero stress, we love to see it. ✨

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. This part is not optional, i fear. 💀

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in projectconf.

HiFive1 has an on-board debug probe and is <rainbow>READY for debugging</rainbow> 💅 you literally do not need to use or buy an external debug probe, bestie, it's all just... there 🫶

**Compatible Tools** — on-board / default vibes:

- `debugging_tool_ftdi` — on-board: Yes; default: Yes ✅
- `debugging_tool_qemu` — on-board: Yes; default: *(nothing)*
- `debugging_tool_renode` — on-board: Yes; default: *(nothing)*

---

## ✨ Frameworks ✨

- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform 🌸
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🧚

---

## 👑 HiFive1 Rev B 👑

### 🎀 Contents 🎀

- HiFive1 Rev B
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 💖 Hardware 💖

Platform `platform_sifive`: SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. No cap.

- **Microcontroller** — `FE310`
- **Frequency** — `320MHz`
- **Flash** — `16MB`
- **RAM** — `16KB`
- **Vendor** — `SiFive`

### 🌸 Configuration 🌸

Please use <hotpink>`hifive1-revb`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:hifive1-revb] platform = sifive board = hifive1-revb


You can override default HiFive1 Rev B settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `hifive1-revb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:hifive1-revb] platform = sifive board = hifive1-revb

; change microcontroller board_build.mcu = fe310

; change MCU frequency board_build.f_cpu = 320000000L


### 💅 Debugging 💅

`piodebug` — the "1-click" solution for debugging with a zero configuration. It's giving effortless, fr fr.

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

HiFive1 Rev B has an on-board debug probe and <rainbow>IS READY for debugging</rainbow> 💖 You don't need to use/buy an external debug probe.

**Compatible Tools** — on-board / default vibes:

- `debugging_tool_jlink` — on-board: Yes; default: Yes ✅
- `debugging_tool_renode` — on-board: Yes; default: *(nothing)*

### 🦋 Frameworks 🦋

- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform 🌈
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. ⭐

---

## 🌟 SparkFun RED-V RedBoard 🌟

### 🎀 Contents 🎀

- SparkFun RED-V RedBoard
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 💜 Hardware 💜

Platform `platform_sifive`: SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. Obsessed, honestly.

- **Microcontroller** — `FE310`
- **Frequency** — `320MHz`
- **Flash** — `16MB`
- **RAM** — `16KB`
- **Vendor** — `SparkFun`

### 🍓 Configuration 🍓

Please use <hotpink>`sparkfun_redboard_v`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:sparkfun_redboard_v] platform = sifive board = sparkfun_redboard_v


You can override default SparkFun RED-V RedBoard settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `sparkfun_redboard_v.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💫

[env:sparkfun_redboard_v] platform = sifive board = sparkfun_redboard_v

; change microcontroller board_build.mcu = fe310

; change MCU frequency board_build.f_cpu = 320000000L


### 💀 Debugging 💀

`piodebug` — the "1-click" solution for debugging with a zero configuration. Zero setup, main character energy 😌

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

SparkFun RED-V RedBoard has an on-board debug probe and <rainbow>IS READY for debugging</rainbow> 🫶 You don't need to use/buy an external debug probe.

**Compatible Tools** — on-board / default vibes:

- `debugging_tool_jlink` — on-board: Yes; default: Yes 🔥
- `debugging_tool_renode` — on-board: Yes; default: *(nothing)*

- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform 💅
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. ✨

---

# 🦋 SparkFun RED-V Thing Plus 🦋

## 📋 Contents

- SparkFun RED-V Thing Plus
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_sifive`: SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. no cap, that's the whole pitch 💜

- **Microcontroller** — `FE310`
- **Frequency** — `320MHz`
- **Flash** — `16MB`
- **RAM** — `16KB`
- **Vendor** — `SparkFun`

---

## ⚙️ Configuration

Bestie, pls use the <pink>`sparkfun_thing_plus_v`</pink> ID for the `projectconf_env_board` option in `projectconf`:

[env:sparkfun_thing_plus_v] platform = sifive board = sparkfun_thing_plus_v


You can override the default SparkFun RED-V Thing Plus settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sparkfun_thing_plus_v.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:sparkfun_thing_plus_v] platform = sifive board = sparkfun_thing_plus_v

; change microcontroller board_build.mcu = fe310

; change MCU frequency board_build.f_cpu = 320000000L


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally iconic 🎀

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

SparkFun RED-V Thing Plus has an on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy an external debug probe. slay, built-in 💅

- **`debugging_tool_jlink`** — On-board: **Yes** · Default: **Yes**
- **`debugging_tool_renode`** — On-board: **Yes** · Default: *(none)*

---

## 🌸 Frameworks

- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🧚

---

# 🌈 Silicon Labs EFM32 🌈

## 🦎 EFM32GG-STK3700 Giant Gecko 🦎

### 📋 Contents

- EFM32GG-STK3700 Giant Gecko
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_siliconlabsefm32`: the Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption. it's giving battery-life main character energy fr fr 🔋

- **Microcontroller** — `EFM32GG990F1024`
- **Frequency** — `48MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `Silicon Labs`

---

## ⚙️ Configuration

Please use the <pink>`efm32gg_stk3700`</pink> ID for the `projectconf_env_board` option in `projectconf`:

[env:efm32gg_stk3700] platform = siliconlabsefm32 board = efm32gg_stk3700


You can override the default EFM32GG-STK3700 Giant Gecko settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `efm32gg_stk3700.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:efm32gg_stk3700] platform = siliconlabsefm32 board = efm32gg_stk3700

; change microcontroller board_build.mcu = efm32gg990f1024

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🚀 Uploading

EFM32GG-STK3700 Giant Gecko supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:efm32gg_stk3700] platform = siliconlabsefm32 board = efm32gg_stk3700

upload_protocol = mbed


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed 💖

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

EFM32GG-STK3700 Giant Gecko has an on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy an external debug probe. 💅

- **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_jlink`** — On-board: **Yes** · Default: **Yes**

---

## 🌸 Frameworks

*(the frameworks table for this board carries on in the next part, bestie — don't scroll away 🫶)*

### Frameworks 💖

Okay bestie, here's the framework tea for this one — it's a whole table in the original but imma give it to you as a list so it's readable, no cap:

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

## EFM32LG-STK3600 Leopard Gecko 🦎✨

### Contents 📑

- EFM32LG-STK3600 Leopard Gecko
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware 💻

Platform `platform_siliconlabsefm32`: Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption.

And here's the spec sheet, cutie — rendered as bullets because we don't do tables in this house:

- **Microcontroller** — `EFM32LG990F256`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Silicon Labs`

---

### Configuration ⚙️

Please use `efm32lg_stk3600` ID for `projectconf_env_board` option in `projectconf`:

[env:efm32lg_stk3600] platform = siliconlabsefm32 board = efm32lg_stk3600


You can override default EFM32LG-STK3600 Leopard Gecko settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `efm32lg_stk3600.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:efm32lg_stk3600] platform = siliconlabsefm32 board = efm32lg_stk3600

; change microcontroller board_build.mcu = efm32lg990f256

; change MCU frequency board_build.f_cpu = 48000000L


---

### Uploading 🚀

EFM32LG-STK3600 Leopard Gecko supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:efm32lg_stk3600] platform = siliconlabsefm32 board = efm32lg_stk3600

upload_protocol = mbed


---

### Debugging 🐛🔍

`piodebug` - "1-click" solution for debugging with a zero configuration.

> ⚠️ **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

EFM32LG-STK3600 Leopard Gecko has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

Compatible tools, bestie:

- **`debugging_tool_blackmagic`** — On-board: (no), Default: (no)
- **`debugging_tool_jlink`** — On-board: Yes, Default: Yes

---

### Frameworks 💖

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

---

## EFM32WG-STK3800 Wonder Gecko 🦎🌈

### Contents 📑

- EFM32WG-STK3800 Wonder Gecko
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware 💻

Platform `platform_siliconlabsefm32`: Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption.

Specs, served fresh:

- **Microcontroller** — `EFM32WG990F256`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Silicon Labs`

---

### Configuration ⚙️

Please use `efm32wg_stk3800` ID for `projectconf_env_board` option in `projectconf`:

[env:efm32wg_stk3800] platform = siliconlabsefm32 board = efm32wg_stk3800


You can override default EFM32WG-STK3800 Wonder Gecko settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `efm32wg_stk3800.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:efm32wg_stk3800] platform = siliconlabsefm32 board = efm32wg_stk3800

; change microcontroller board_build.mcu = efm32wg990f256

; change MCU frequency board_build.f_cpu = 48000000L


---

### Uploading 🚀

EFM32WG-STK3800 Wonder Gecko supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:efm32wg_stk3800] platform = siliconlabsefm32 board = efm32wg_stk3800

upload_protocol = mbed


---

### Debugging 🐛🔍

`piodebug` - "1-click" solution for debugging with a zero configuration.

> ⚠️ **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

So like, the Wonder Gecko's compatible debug tools? Here's the tea 🫖 — two of them, and only one is actually on-board:

- **`debugging_tool_blackmagic`** — not on-board (blank), and not the default either 🙈
- **`debugging_tool_jlink`** — on-board? **Yes** ✨ default? **Yes** 👑

---

### Frameworks (Wonder Gecko edition 💅)

- **`framework_mbed`** — it's the mbed framework, bestie. The mbed SDK was literally designed to give you enough hardware abstraction to be intuitive and concise, but still powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, so you can absolutely code down to the metal if you want to 🔥. And on top of the SDK, the mbed Developer Community has built RTOS, USB and Networking libraries *plus* a whole cookbook of hundreds of reusable peripheral and module libraries. It's giving ecosystem.
- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) that supports multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Periodt. 🛡️

---

## 🦋 EFM32ZG-STK3200 Zero Gecko

### Contents

- EFM32ZG-STK3200 Zero Gecko
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_siliconlabsefm32`: the Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption. No cap, it's built different 💜

- **Microcontroller** — `EFM32ZG222F32`
- **Frequency** — `24MHz`
- **Flash** — `32KB`
- **RAM** — `4KB`
- **Vendor** — `Silicon Labs`

### Configuration

Okay so use the `efm32zg_stk3200` ID for the `projectconf_env_board` option in `projectconf`:

[env:efm32zg_stk3200] platform = siliconlabsefm32 board = efm32zg_stk3200


You can override the default EFM32ZG-STK3200 Zero Gecko settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `efm32zg_stk3200.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:efm32zg_stk3200] platform = siliconlabsefm32 board = efm32zg_stk3200

; change microcontroller board_build.mcu = efm32zg222f32

; change MCU frequency board_build.f_cpu = 24000000L


### Uploading

EFM32ZG-STK3200 Zero Gecko supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:efm32zg_stk3200] platform = siliconlabsefm32 board = efm32zg_stk3200

upload_protocol = mbed


### Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed, honestly 🎀

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Don't skip this step bestie, fr fr 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

EFM32ZG-STK3200 Zero Gecko has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. Slay 💅

- **`debugging_tool_blackmagic`** — not on-board (blank), not default
- **`debugging_tool_jlink`** — on-board? **Yes** ✨ default? **Yes** 👑

### Frameworks

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. Iconic behavior honestly 🧚

---

## 🌈 SLSTK3400A USB-enabled Happy Gecko

### Contents

- SLSTK3400A USB-enabled Happy Gecko
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🦋 Hardware 🦋

<pink>Okay bestie, meet the Silicon Labs EFM32 Gecko 💖</pink> — it's a 32-bit microcontroller (MCU) family, and the devices in it come with flash memory configurations up to <purple>`256 kB`</purple>, <purple>`32 kB`</purple> of RAM, and CPU speeds up to <purple>`48 MHz`</purple>. It's built on the powerful <cyan>ARM Cortex-M</cyan> core, and the Gecko family is out here doing innovative low energy techniques, short wake-up time from energy saving modes, and a whole wide selection of peripherals. Which makes it *literally* ideal for battery operated applications and other systems that need high performance AND low-energy consumption. Main character energy fr fr 👑✨

┌─────────────────┬───────────────┐ │ Microcontroller │ EFM32HG322F64 │ ├─────────────────┼───────────────┤ │ Frequency │ 25MHz │ ├─────────────────┼───────────────┤ │ Flash │ 64KB │ ├─────────────────┼───────────────┤ │ RAM │ 8KB │ ├─────────────────┼───────────────┤ │ Vendor │ Silicon Labs │ └─────────────────┴───────────────┘


---

## 🎀 Configuration 🎀

<purple>Bestie listen,</purple> please use the <cyan>`efm32hg_stk3400`</cyan> ID for the <cyan>`projectconf_env_board`</cyan> option in `projectconf`:

[env:efm32hg_stk3400] platform = siliconlabsefm32 board = efm32hg_stk3400


You can also override the default <hotpink>SLSTK3400A USB-enabled Happy Gecko</hotpink> settings per build environment using the <cyan>`board_***`</cyan> option — where <cyan>`***`</cyan> is a JSON object path from the board manifest <cyan>`efm32hg_stk3400.json`</cyan>. Like, for example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc. Slay 💅

[env:efm32hg_stk3400] platform = siliconlabsefm32 board = efm32hg_stk3400

; change microcontroller board_build.mcu = efm32hg322f64

; change MCU frequency board_build.f_cpu = 25000000L


---

## 🌈 Uploading 🌈

The <hotpink>SLSTK3400A USB-enabled Happy Gecko</hotpink> supports these uploading protocols, no cap:

- <purple>`blackmagic`</purple>
- <purple>`jlink`</purple>
- <purple>`mbed`</purple>

The default protocol is <cyan>`mbed`</cyan> ✨

You can change the upload protocol using the <cyan>`projectconf_upload_protocol`</cyan> option:

[env:efm32hg_stk3400] platform = siliconlabsefm32 board = efm32hg_stk3400

upload_protocol = mbed


---

## 💜 Debugging 💜

<pink>`piodebug`</pink> — it's the "1-click" solution for debugging with a zero configuration. So iconic of it honestly 🫶

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Don't skip this part bestie, I'm begging 😭

You can switch between debugging `debugging_tools` using the <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`. ✨

<pink>SLSTK3400A USB-enabled Happy Gecko</pink> has an on-board debug probe and is <green>**READY**</green> for debugging. You do <red>not</red> need to use or buy an external debug probe. periodt 💅

**Compatible Tools** ─ **On-board** ─ **Default**

- `debugging_tool_blackmagic` — *(no on-board, no default marked)* 🙈
- `debugging_tool_jlink` — on-board: `Yes`, default: `Yes` ✅

---

## 🌈 Frameworks 🌈

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🧚 like, it's giving *everything*

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥 safety AND security, we love to see it

---

# 👑 SLSTK3401A Pearl Gecko PG1 👑

## 📜 Contents 📜

- SLSTK3401A Pearl Gecko PG1
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_siliconlabsefm32`: Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to `256 kB`, `32 kB` of RAM and CPU speeds up to `48 MHz`. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption. 🔋✨

- **Microcontroller** — `EFM32PG1B200F256GM48`
- **Frequency** — `40MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `Silicon Labs`

---

## ⚙️ Configuration ⚙️

Bestie, please use `efm32pg_stk3401` as the ID for the `projectconf_env_board` option in your projectconf 🫶

[env:efm32pg_stk3401] platform = siliconlabsefm32 board = efm32pg_stk3401


You can override the default SLSTK3401A Pearl Gecko PG1 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `efm32pg_stk3401.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:efm32pg_stk3401] platform = siliconlabsefm32 board = efm32pg_stk3401

; change microcontroller board_build.mcu = efm32pg1b200f256gm48

; change MCU frequency board_build.f_cpu = 40000000L


---

## 🚀 Uploading 🚀

SLSTK3401A Pearl Gecko PG1 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:efm32pg_stk3401] platform = siliconlabsefm32 board = efm32pg_stk3401

upload_protocol = mbed


---

## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic behaviour honestly 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 😭 don't skip this step bestie

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in projectconf.

SLSTK3401A Pearl Gecko PG1 has an on-board debug probe and is <green>**READY**</green> for debugging. You don't need to use or buy an external debug probe. 🎀

**Compatible Tools** ─ **On-board** ─ **Default**

- `debugging_tool_blackmagic`

- **`debugging_tool_jlink`** — on-board: **Yes** 💖 · default: **Yes** ✨

---

### 🧩 Frameworks 🧩

- **`framework_mbed`** — *The mbed framework.* The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💜

---

## 🦋 Thunderboard Sense 2 Sensor-to-Cloud Advanced IoT 🦋

### 📋 Contents 📋

- Thunderboard Sense 2 Sensor-to-Cloud Advanced IoT
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Platform `platform_siliconlabsefm32`: Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption. <mint>slay, honestly 🫶</mint>

- **Microcontroller** — `EFR32MG12P432F1024`
- **Frequency** — `40MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — Silicon Labs

---

### ⚙️ Configuration ⚙️

Please use <hotpink>`tb_sense_12`</hotpink> ID for `projectconf_env_board` option in projectconf:

[env:tb_sense_12] platform = siliconlabsefm32 board = tb_sense_12


You can override default Thunderboard Sense 2 Sensor-to-Cloud Advanced IoT settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `tb_sense_12.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:tb_sense_12] platform = siliconlabsefm32 board = tb_sense_12

; change microcontroller board_build.mcu = EFR32MG12P432F1024

; change MCU frequency board_build.f_cpu = 40000000L


---

### 🚀 Uploading 🚀

Thunderboard Sense 2 Sensor-to-Cloud Advanced IoT supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is <purple>`mbed`</purple> 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:tb_sense_12] platform = siliconlabsefm32 board = tb_sense_12

upload_protocol = mbed


---

### 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. <cyan>iconic behaviour fr fr</cyan>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in projectconf.

Thunderboard Sense 2 Sensor-to-Cloud Advanced IoT has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. <rainbow>no extra hardware needed, we love that for us ✨</rainbow>

- **`debugging_tool_blackmagic`** — on-board: — · default: —
- **`debugging_tool_jlink`** — on-board: **Yes** 💖 · default: **Yes** ✨

---

### 🧩 Frameworks 🧩

- **`framework_mbed`** — *The mbed framework.* The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet

<purple>powerful enough to</purple> build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code <hotpink>down to the metal</hotpink> if needed 🛠️. And on top of all that? In addition to RTOS, USB and Networking libraries, a <yellow>cookbook of hundreds</yellow> of reusable peripheral and module libraries have been built on top of the SDK by the <rainbow>mbed Developer Community</rainbow>. the community ATE, fr fr 💅✨

---

## 🌸 ST STM32 1Bitsy 🌸

okay bestie, new board dropped and she's <pink>adorable</pink> 🎀 here's the whole rundown:

**Contents** 🦋

- 1Bitsy
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### ✨ Hardware ✨

**Platform** `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <cyan>like… she does it ALL, no notes 💖</cyan>

Here's the spec sheet, look at her go 👑

- **Microcontroller** — `STM32F415RGT`
- **Frequency** — `168MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `1BitSquared`

---

### 💜 Configuration 💜

Please use <hotpink>`1bitsy_stm32f415rgt`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:1bitsy_stm32f415rgt] platform = ststm32 board = 1bitsy_stm32f415rgt


and YES you can override the default 1Bitsy settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `1bitsy_stm32f415rgt.json` 🌈. For example, `board_build.mcu`, `board_build.f_cpu`, etc. it's giving <purple>customization main character energy</purple> ✨

[env:1bitsy_stm32f415rgt] platform = ststm32 board = 1bitsy_stm32f415rgt

; change microcontroller board_build.mcu = stm32f415rgt

; change MCU frequency board_build.f_cpu = 168000000L


---

### 🦋 Uploading 🦋

1Bitsy supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is <hotpink>`blackmagic`</hotpink> 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:1bitsy_stm32f415rgt] platform = ststm32 board = 1bitsy_stm32f415rgt

upload_protocol = blackmagic


---

### 🎀 Debugging 🎀

`piodebug` — the "1-click" solution for debugging with a <rainbow>zero configuration</rainbow>. iconic behaviour honestly 👑

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. <red>do NOT skip this step bestie, i'm begging 😭</red>

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

🚨 <red>**1Bitsy does not have on-board debug probe and IS NOT READY for debugging.**</red> You will need to use/buy one of the external probes listed below. no cap, she simply does not come with one 💀

**Compatible Tools:**

- **`debugging_tool_blackmagic`** — on-board: *(none)*, default: <green>Yes</green> ✅
- **`debugging_tool_jlink`** — on-board: *(none)*, default: *(none)*
- **`debugging_tool_stlink`** — on-board: *(none)*, default: *(none)*

---

### ⭐ Frameworks ⭐

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. <purple>she's the whole blueprint fr fr</purple> 📐✨

---

and there's <hotpink>more rows</hotpink> in this frameworks lineup, so don't go anywhere 👀💅

- **`framework_libopencm3`** — bestie, this one's whole thing is building a <green>free/libre/open-source</green> firmware library for a whole bunch of ARM <purple>Cortex-M0(+)/M3/M4</purple> microcontrollers 💅 and the lineup includes ST STM32, Ti Tiva and Stellaris, NXP LPC `11xx`, `13xx`, `15xx`, `17xx` parts, Atmel SAM3, Energy Micro EFM32 and others. it's giving community-built, no cap 🫶

- **`framework_spl`** — the ST Standard Peripheral Library hands you a set of functions for wrangling the peripherals on the STM32 Cortex-M3 family ✨ and the whole point? saving you (especially if you're new here, welcome 🎀) from having to poke the registers directly. iconic behavior honestly.

- **`framework_stm32cube`** — STM32Cube embedded software libraries, which bundle: the <cyan>HAL</cyan> hardware abstraction layer that lets you move between different STM32 devices using standardized API calls 🌈 and the <cyan>Low-Layer (LL)</cyan> APIs, which are light-weight, optimized, expert-oriented and built for both performance and runtime efficiency 🔥

---

# 🌸 32F412GDISCOVERY 🌸

## 💖 Contents 💖

- `32F412GDISCOVERY`
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🦋 Hardware 🦋

Platform <purple>`platform_ststm32`</purple>: the STM32 family of <green>32-bit Flash MCUs</green> based on the ARM Cortex-M processor was designed to give MCU users a whole new level of freedom ✨ It serves up a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development intact 💅

Here's the spec sheet, bestie, and yes it ate:

- **Microcontroller** — `STM32F412ZGT6`
- **Frequency** — `100MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `ST`

---

## 🎀 Configuration 🎀

okay so literally just use the `disco_f412zg` ID for the <purple>`projectconf_env_board`</purple> option in your projectconf 🫶 like this:

[env:disco_f412zg] platform = ststm32 board = disco_f412zg


You can also override the default `32F412GDISCOVERY` settings per build environment using the <purple>`board_***`</purple> option, where `***` is a JSON object path from the board manifest `disco_f412zg.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:disco_f412zg] platform = ststm32 board = disco_f412zg

; change microcontroller board_build.mcu = stm32f412zgt6

; change MCU frequency board_build.f_cpu = 100000000L


---

## ⭐ Uploading ⭐

`32F412GDISCOVERY` supports the next uploading protocols, no cap:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is <cyan>`stlink`</cyan> ✨

You can switch up the upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:disco_f412zg] platform = ststm32 board = disco_f412zg

upload_protocol = stlink


---

## 💜 Debugging 💜

`piodebug` — the "1-click" solution for debugging with a zero configuration 🧚

> **WARNING:** you will need to install debug tool drivers depending on your system 😭 Please click on the compatible debug tool below for the further instructions and configuration information 🙈

You can switch between debugging tools using the <purple>`projectconf_debug_tool`</purple> option in projectconf.

`32F412GDISCOVERY` has an on-board debug probe and IS READY for debugging 👑 You don't need to use/buy an external debug probe, bestie, it's already iconic.

Compatible Tools:

- `debugging_tool_blackmagic` — On-board: — , Default: —
- `debugging_tool_jlink` — On-board: — , Default: —
- `debugging_tool_stlink` — On-board: `Yes`, Default: `Yes`

---

- **`framework_mbed`** — the mbed framework ✨ The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <pink>coding down to the metal?? bestie that's main character energy fr</pink> 🔥

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <mint>standardized API calls = portability slay 💅</mint>

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <lavender>safety AND security?? she's so responsible 🎀</lavender>

---

## 🦋 32F723EDISCOVERY

### 📋 Contents

- 32F723EDISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <cyan>low-power AND low-voltage while still being high performance?? the way that she does it all 💖</cyan>

- **Microcontroller** — `STM32F723IEK6`
- **Frequency** — `216MHz`
- **Flash** — `512KB`
- **RAM** — `192KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration

Please use `disco_f723ie` ID for `projectconf_env_board` option in `projectconf`:

[env:disco_f723ie] platform = ststm32 board = disco_f723ie


You can override default 32F723EDISCOVERY settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_f723ie.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <pink>yes bestie you can customize her ✨</pink>

[env:disco_f723ie] platform = ststm32 board = disco_f723ie

; change microcontroller board_build.mcu = stm32f723iek6

; change MCU frequency board_build.f_cpu = 216000000L


---

### 🚀 Uploading

32F723EDISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_f723ie] platform = ststm32 board = disco_f723ie

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <rainbow>one click. ZERO config. iconic behavior tbh</rainbow> 😭

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

32F723EDISCOVERY has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <mint>she comes with the probe built in, no shopping spree required 🛍️✨</mint>

- **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_stlink`** — On-board: `Yes` · Default: `Yes` 👑

---

### 🎀 Frameworks

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <lavender>resource constrained devices deserve nice things too 🫶</lavender>

---

## 🌈 3D Printer Controller

### 📋 Contents

- 3D Printer Controller
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🛠️ Hardware

<pink>Platform</pink> `ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>iconic</rainbow> ✨

And here's the whole spec sheet, no gatekeeping:

- **Microcontroller** — `STM32F407VET6`
- **Frequency** — `168MHz`
- **Flash** — `512KB`
- **RAM** — `192KB`
- **Vendor** — Armed

---

### ⚙️ Configuration

Bestie, please use the `armed_v1` ID for the `projectconf_env_board` option in `projectconf`:

[env:armed_v1] platform = ststm32 board = armed_v1


You can override the default 3D Printer Controller settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `armed_v1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:armed_v1] platform = ststm32 board = armed_v1

; change microcontroller board_build.mcu = stm32f407vet6

; change MCU frequency board_build.f_cpu = 168000000L


### 🚀 Uploading

3D Printer Controller supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` <hotpink>periodt</hotpink> 👑

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:armed_v1] platform = ststm32 board = armed_v1

upload_protocol = stlink


### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

3D Printer Controller does **not** have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. 😭

Compatible tools, one row each:

- `debugging_tool_blackmagic` — On-board: *(blank)*, Default: **Yes**
- `debugging_tool_jlink` — On-board: *(blank)*, Default: *(blank)*
- `debugging_tool_stlink` — On-board: *(blank)*, Default: *(blank)*

### 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

## 🖨️ 3D Printer control board

### 📑 Contents

- 3D Printer control board
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🛠️ Hardware

<pink>Platform</pink> `ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 🌈

The specs, served fresh:

- **Microcontroller** — `STM32F446RET6`
- **Frequency** — `180MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — RUMBA

### ⚙️ Configuration

Please use the `rumba32_f446ve` ID for the `projectconf_env_board` option in `projectconf`:

[env:rumba32_f446ve] platform = ststm32 board = rumba32_f446ve


You can override the default 3D Printer control board settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `rumba32_f446ve.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:rumba32_f446ve] platform = ststm32 board = rumba32_f446ve

; change microcontroller board_build.mcu = stm32f446ret6

; change MCU frequency board_build.f_cpu = 180000000L


### 🚀 Uploading

3D Printer control board supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:rumba32_f446ve] platform = ststm32 board = rumba32_f446ve

upload_protocol = stlink


### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. 🦋

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

> ⚠️ Heads up bestie, this is the moment of truth: your **3D Printer control board does not have on-board debug probe and IS NOT READY for debugging.** Like, not even a little. 💀 You will need to use/buy one of external probe listed below.

<pink>The compatible-tools vibe check:</pink>

- **`debugging_tool_blackmagic`** — On-board: *(nope, blank)* · Default: **Yes** ✅
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: *(blank)* · Default: *(blank)*

---

## Frameworks 🧚

<purple>The framework lineup, aka your toolbox of choices:</purple>

- **`framework_arduino`** — Arduino Wiring-based Framework, and what it does is allow writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. <lavender>It's giving artsy AND technical, we love a versatile queen.</lavender> ✨

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <cyan>Expert oriented, so bestie, bring your thinking cap 🧠</cyan>

---

## 3D printer controller 🖨️

<hotpink>Okay so this is the section for the 3D printer controller platform. Here's everything it's packing:</hotpink>

### Contents 📋

- 3D printer controller
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

> 🎀 Not me leaving this as a lil map so you know exactly where you're going — every one of those bullet points has its own whole thing going on. iykyk.

## 🎀 Hardware 🎀

<cyan>Platform</cyan> `platform_ststm32`: bestie, the STM32 family of 32-bit Flash MCUs is built on the ARM Cortex-M processor, and it was literally designed to give MCU users brand-new degrees of freedom. ✨ It serves up a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, all while keeping full integration and ease of development. no cap. 💖

- **Microcontroller** — `STM32F765VIT6`
- **Frequency** — `216MHz`
- **Flash** — `2MB`
- **RAM** — `512KB`
- **Vendor** — `RemRam`

---

## ⚙️ Configuration ⚙️

Please use the `remram_v1` ID for the `projectconf_env_board` option in `projectconf`:

[env:remram_v1] platform = ststm32 board = remram_v1


You can override the default 3D printer controller settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `remram_v1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:remram_v1] platform = ststm32 board = remram_v1

; change microcontroller board_build.mcu = stm32f765vit6

; change MCU frequency board_build.f_cpu = 216000000L


---

## 🚀 Uploading 🚀

This 3D printer controller supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink`. 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:remram_v1] platform = ststm32 board = remram_v1

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic behavior, honestly. 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

The 3D printer controller has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. periodt. 🔥

**Compatible Tools**

- **`debugging_tool_blackmagic`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: `Yes` · Default: `Yes` 💖

---

## 🧩 Frameworks 🧩

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. ✨

---

# 🖨️ 3DP001V1 Evaluation board for 3D printer 🖨️

## 📋 Contents 📋

- 3DP001V1 Evaluation board for 3D printer

  - Hardware

  - Configuration

  - Uploading

  - Debugging

  - Frameworks

---

## 🎀 Hardware 🎀

<cyan>Platform</cyan> `platform_ststm32`: the STM32 family of 32-bit Flash MCUs is based on the ARM Cortex-M processor and is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 🌈

- **Microcontroller** — `STM32F401VGT6`
- **Frequency** — `84MHz`
- **Flash** — `512KB`
- **RAM** — `96KB`
- **Vendor** — `ST`

### ⚙️ Configuration

okay bestie, listen — when you're wiring this board up in your `platformio.ini`, you use the `st3dp001_eval` ID for the `projectconf_env_board` option in `projectconf`:

[env:st3dp001_eval] platform = ststm32 board = st3dp001_eval


and the way that you can <pink>override</pink> the default 3DP001V1 Evaluation board for 3D printer settings per build environment is with the `board_***` option, where `***` is a JSON object path from the board manifest `st3dp001_eval.json` 🌸. like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. — no cap, that's the whole trick:

[env:st3dp001_eval] platform = ststm32 board = st3dp001_eval

; change microcontroller board_build.mcu = stm32f401vgt6

; change MCU frequency board_build.f_cpu = 84000000L


---

### 🚀 Uploading

so the 3DP001V1 Evaluation board for 3D printer supports the next uploading protocols, and I'm obsessed:

- `blackmagic`
- `jlink`
- `stlink`

the default protocol is `stlink` 💅 — and if you wanna switch it up, you do that with the `projectconf_upload_protocol` option:

[env:st3dp001_eval] platform = ststm32 board = st3dp001_eval

upload_protocol = stlink


---

### 🐛 Debugging

`pio debug` — it's giving "1-click" solution for debugging with a zero configuration ✨. literally iconic.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

(that one's important, don't skip it, bestie 🫶)

you can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

and here's the cute part: the 3DP001V1 Evaluation board for 3D printer has an **on-board debug probe** and IS READY for debugging 🔥. You don't need to use/buy an external debug probe. ate.

**Compatible Tools**

- **`debugging_tool_blackmagic`** — On-board: *(blank)*, Default: *(blank)*
- **`debugging_tool_jlink`** — On-board: *(blank)*, Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: **Yes**, Default: **Yes** 👑

---

### 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. ⚡

---

## 🦋 96Boards Argonkey (STEVAL-MKI187V1)

### 📖 Contents

- 96Boards Argonkey (STEVAL-MKI187V1)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💜

the deets, fr fr:

- **Microcontroller**: `STM32F412CG`
- **Frequency**: `100MHz`
- **Flash**: `1MB`
- **RAM**: `256KB`
- **Vendor**: `96Boards`

---

### ⚙️ Configuration

Please use the `b96b_argonkey` ID for the `projectconf_env_board` option in `projectconf`:

[env:b96b_argonkey] platform = ststm32 board = b96b_argonkey


and you can override the default 96Boards Argonkey (STEVAL-MKI187V1) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `b96b_argonkey.json` 🌸. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:b96b_argonkey] platform = ststm32 board = b96b_argonkey

; change microcontroller board_build.mcu = stm32f412cg

; change MCU frequency board_build.f_cpu = 100000000L


### ✨ Uploading ✨

okay so <pink>96Boards Argonkey (STEVAL-MKI187V1)</pink> supports the next uploading protocols, bestie:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink> 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:b96b_argonkey] platform = ststm32 board = b96b_argonkey

upload_protocol = stlink


---

### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a <rainbow>zero configuration</rainbow>. iconic behavior honestly 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ngl, this one's a little sad: <peach>96Boards Argonkey (STEVAL-MKI187V1)</peach> does **not** have an on-board debug probe and <red>**IS NOT READY for debugging**</red>. You will need to use/buy one of the external probes listed below 😭

- **`debugging_tool_blackmagic`** — on-board probe: ✗ (no on-board probe here), **Default: Yes** 👑
- **`debugging_tool_jlink`** — on-board probe: ✗ (no on-board probe here), Default: *(nothing marked)*
- **`debugging_tool_stlink`** — on-board probe: ✗ (no on-board probe here), Default: *(nothing marked)*

---

### 🧚 Frameworks 🧚

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. lowkey a whole buffet of APIs 🍓
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. RTOS girlies rise 🌈

---

# 💜 96Boards B96B-F446VE 💜

### 📖 Contents 📖

- 96Boards B96B-F446VE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. ✨

- **Microcontroller** — `STM32F446VET6`
- **Frequency** — `168MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `96Boards`

---

### ⚙️ Configuration ⚙️

Please use `b96b_f446ve` ID for `projectconf_env_board` option in `projectconf`:

[env:b96b_f446ve] platform = ststm32 board = b96b_f446ve


You can override default 96Boards B96B-F446VE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `b96b_f446ve.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:b96b_f446ve] platform = ststm32 board = b96b_f446ve

; change microcontroller board_build.mcu = stm32f446vet6

; change MCU frequency board_build.f_cpu = 168000000L


---

### 🌸 Uploading 🌸

96Boards B96B-F446VE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink> 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:b96b_f446ve] platform = ststm32 board = b96b_f446ve


- `debugging_tool_blackmagic` — not on-board, not the default, no cap 💅
- `debugging_tool_jlink` — also not on-board, also not the default
- `debugging_tool_stlink` — **on-board: Yes**, **default: Yes** ✨ the moment

---

# 🌈 Frameworks

okay bestie here's the framework menu, pick your fighter 🎀

- **`framework_mbed`** — The <pink>mbed framework</pink>. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🧚

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 👑

---

# 🦋 96Boards Neonkey

## Contents

- 96Boards Neonkey
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💖

- **Microcontroller** — `STM32F411CE`
- **Frequency** — `100MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `96Boards`

## Configuration

Please use `b96b_neonkey` ID for `projectconf_env_board` option in `projectconf`:

[env:b96b_neonkey] platform = ststm32 board = b96b_neonkey


You can override default 96Boards Neonkey settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `b96b_neonkey.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:b96b_neonkey] platform = ststm32 board = b96b_neonkey

; change microcontroller board_build.mcu = stm32f411ce

; change MCU frequency board_build.f_cpu = 100000000L


## Uploading

96Boards Neonkey supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:b96b_neonkey] platform = ststm32 board = b96b_neonkey

upload_protocol = stlink


## Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. 🎀

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<purple>96Boards Neonkey does **not** have on-board debug probe and **IS NOT READY** for debugging.</purple> You will need to use/buy one of external probe listed below. 😭

- **`debugging_tool_blackmagic`** — not on-board, **default: Yes**
- **`debugging_tool_jlink`** — not on-board, not the default
- **`debugging_tool_stlink`** — not on-board, not the default

## 🌸 Frameworks 🌸

- **`framework_stm32cube`** — STM32Cube embedded software libraries, and bestie it comes with a LOT: there's the HAL hardware abstraction layer, which lets you port between different STM32 devices using standardized API calls 🫶, plus the Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency ✨
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind 🔥

---

# 👑 Adafruit Feather STM32F405 👑

## Contents

- Adafruit Feather STM32F405
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development 💅

- **Microcontroller** — `STM32F405RGT6`
- **Frequency** — `168MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `Adafruit`

## Configuration

Please use `adafruit_feather_f405` ID for `projectconf_env_board` option in `projectconf`:

[env:adafruit_feather_f405] platform = ststm32 board = adafruit_feather_f405


You can override default Adafruit Feather STM32F405 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `adafruit_feather_f405.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:adafruit_feather_f405] platform = ststm32 board = adafruit_feather_f405

; change microcontroller board_build.mcu = stm32f405rgt6

; change MCU frequency board_build.f_cpu = 168000000L


## Uploading

Adafruit Feather STM32F405 supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:adafruit_feather_f405] platform = ststm32 board = adafruit_feather_f405

upload_protocol = stlink


## Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. Obsessed honestly 💖

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using `projectconf_debug_tool` option in `projectconf`.

Adafruit Feather STM32F405 does not have on-board debug probe and **IS NOT READY** for debugging 😭 You will need to use/buy one of external probe listed below.

- **`debugging_tool_blackmagic`** — On-board: (none), Default: **Yes**
- **`debugging_tool_jlink`** — On-board: (none), Default: (none)
- **`debugging_tool_stlink`** — On-board: (none), Default: (none)

## Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🌈
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices 🧚
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 💅

---

# 🦋 AfroFlight Rev5 (8MHz) 🦋

## Contents

- AfroFlight Rev5 (8MHz)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## Hardware

## Configuration

## Uploading

## Debugging

## Frameworks

### 🧚 Hardware

<pink>Okay bestie, gather round</pink> — Platform <purple>`platform_ststm32`</purple>: the STM32 fam of 32-bit Flash MCUs built on the ARM Cortex-M processor, designed to hand MCU users whole new degrees of freedom. It's giving a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while keeping full integration and ease of development intact. <rainbow>iconic behavior honestly</rainbow> ✨

- **Microcontroller:** `STM32F103CBT6`
- **Frequency:** `72MHz`
- **Flash:** `128KB`
- **RAM:** `20KB`
- **Vendor:** `AfroFlight`

---

### 🌸 Configuration

<pink>Bestie, listen</pink> — please use the `afroflight_f103cb` ID for the `projectconf_env_board` option in `projectconf`:

[env:afroflight_f103cb] platform = ststm32 board = afroflight_f103cb


You can override the default AfroFlight Rev5 (8MHz) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `afroflight_f103cb.json`. Like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:afroflight_f103cb] platform = ststm32 board = afroflight_f103cb

; change microcontroller board_build.mcu = stm32f103cbt6

; change MCU frequency board_build.f_cpu = 72000000L


---

### 💅 Uploading

AfroFlight Rev5 (8MHz) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `serial` <pink>(the moment of truth)</pink>

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:afroflight_f103cb] platform = ststm32 board = afroflight_f103cb

upload_protocol = serial


---

### 👑 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <mint>literally no setup, we love to see it</mint> ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

AfroFlight Rev5 (8MHz) does **not** have an on-board debug probe and **IS NOT READY** for debugging. <red>no cap, she said NOT READY</red> 😭 You will need to use/buy one of the external probes listed below.

- **`debugging_tool_blackmagic`** — On-board: *(none)*; Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(none)*; Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)*; Default: *(none)*

---

### 🌈 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

## 🦋 Armstrap Eagle 1024

### ✨ Contents

- Armstrap Eagle 1024
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🧚 Hardware

<pink>Same energy, new board</pink> — Platform <purple>`platform_ststm32`</purple>: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💖

- **Microcontroller:** `STM32F417VGT6`
- **Frequency:** `168MHz`
- **Flash:** `1MB`
- **RAM:** `192KB`
- **Vendor:** `Armstrap`

---

### 🌸 Configuration

Please use the `armstrap_eagle1024` ID for the `projectconf_env_board` option in `projectconf`:

[env:armstrap_eagle1024] platform = ststm32 board = armstrap_eagle1024


You can override the default Armstrap Eagle 1024 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `armstrap_eagle1024.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>iykyk</mint> 🫶

[env:armstrap_eagle1024] platform = ststm32 board = armstrap_eagle1024

; change microcontroller board_build.mcu = stm32f417vgt6

; change MCU frequency board_build.f_cpu = 168000000L


---

### 💅 Uploading

Armstrap Eagle 1024 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `blackmagic` <pink>spooky name, slay behavior</pink> 🔥

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:armstrap_eagle1024] platform = ststm32 board = armstrap_eagle1024

upload_protocol = blackmagic


---

### 👑 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <purple>the way it just works…</purple> ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

<pink>okay so</pink> bestie, you can <purple>switch between</purple> your `debugging_tools` using the `projectconf_debug_tool` option over in <cyan>projectconf</cyan>. ✨ That's it, that's the whole mechanic. 💅

---

<pink>Now the tea on the <hotpink>Armstrap Eagle 1024</hotpink>:</pink> it has an <green>on-board debug probe</green> and it is <rainbow>IS READY for debugging</rainbow>. 🎀 Like, literally ready. You do <red>NOT</red> need to use or buy an external debug probe. Save your coins, queen. 💸👑

Here's the compatibility lineup, laid out all cute for you — <lavender>Compatible Tools</lavender> · <lavender>On-board</lavender> · <lavender>Default</lavender>:

- **`debugging_tool_blackmagic`** — On-board: `Yes` · Default: `Yes` 👑
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: *(blank)* · Default: *(blank)*

So yeah, `<pink>`debugging_tool_blackmagic`</pink>` is the one holding it down — it's the on-board one AND the default one. The other two are just... sitting there in the table with empty cells, no on-board, no default. 🙈

> ngl, the blank cells are giving "not applicable here" energy — the original table just leaves them empty, so I'm not gonna invent a whole story about them. iykyk. 🦋

---

## ✨ Frameworks ✨

okay bestie, here's the whole roster of frameworks you can pull into a build — each one is a whole different vibe, so pick your fighter 💖

- **`framework_cmsis`** — this is the ARM Cortex Microcontroller Software Interface Standard (CMSIS): a vendor-independent hardware abstraction layer for the Cortex-M processor series that also specifies debugger interfaces. It hands you consistent, simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. Bonus: it simplifies software re-use, shrinks the learning curve for new microcontroller devs, and cuts time-to-market for devices. 🧚
- **`framework_spl`** — the ST Standard Peripheral Library, which gives you a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The whole point? Saving you (especially if you're a brand-new user 👋) from having to deal directly with the registers. 🙈
- **`framework_stm32cube`** — the STM32Cube embedded software libraries, which include: the HAL hardware abstraction layer, so you get portability between different STM32 devices via standardized API calls; plus the Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

## 👑 Armstrap Eagle 2048 👑

**Contents** 🌈

- Armstrap Eagle 2048
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🛠️ Hardware

**Platform** `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor, designed to offer new degrees of freedom to MCU users. It brings you a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development. ✨

- **Microcontroller** — `STM32F427VIT6`
- **Frequency** — `168MHz`
- **Flash** — `1.99MB`
- **RAM** — `256KB`
- **Vendor** — `Armstrap`

---

### ⚙️ Configuration

Please use the `armstrap_eagle2048` ID for the `projectconf_env_board` option in `projectconf`:

[env:armstrap_eagle2048] platform = ststm32 board = armstrap_eagle2048


You can override the default Armstrap Eagle 2048 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `armstrap_eagle2048.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:armstrap_eagle2048] platform = ststm32 board = armstrap_eagle2048

; change microcontroller board_build.mcu = stm32f427vit6

; change MCU frequency board_build.f_cpu = 168000000L


---

### 📤 Uploading

Armstrap Eagle 2048 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `blackmagic` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:armstrap_eagle2048] platform = ststm32 board = armstrap_eagle2048

upload_protocol = blackmagic


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic, honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. ⚠️ don't skip this, fr fr.

You can switch between debugging tools using the `projectconf_debug_tool` option in `projectconf`.

Armstrap Eagle 2048 has an on-board debug probe and **IS READY** for debugging. You don't need to use or buy an external debug probe. 🎀 no cap, that's a whole glow-up.

Compatible Tools:

- **`debugging_tool_blackmagic`** — On-board: Yes · Default: Yes 👑
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: *(blank)* · Default: *(blank)*

### 🌈 Frameworks 🌈

Okay bestie, here's the framework lineup and honestly? It's giving ✨options✨. Every entry has a `Name` and a `Description`, so let's go one by one 💅

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a <purple>vendor-independent</purple> hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. fr fr, it's the "let me not relearn everything" framework 🧚
- **`framework_spl`** — The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers. no cap, that's the whole vibe 🫶
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. highkey iconic 🌸

---

## 💖 Armstrap Eagle 512 💖

### 📜 Contents 📜

- Armstrap Eagle 512
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. main character energy, honestly 👑

The specs, laid out for u bestie:

- **Microcontroller** — `STM32F407VET6`
- **Frequency** — `168MHz`
- **Flash** — `512KB`
- **RAM** — `192KB`
- **Vendor** — `Armstrap`

---

### ⚙️ Configuration ⚙️

Please use `armstrap_eagle512` ID for `projectconf_env_board` option in `projectconf`:

[env:armstrap_eagle512] platform = ststm32 board = armstrap_eagle512


You can override default Armstrap Eagle 512 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `armstrap_eagle512.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. it's giving ✨customization✨

[env:armstrap_eagle512] platform = ststm32 board = armstrap_eagle512

; change microcontroller board_build.mcu = stm32f407vet6

; change MCU frequency board_build.f_cpu = 168000000L


---

### 📤 Uploading 📤

Armstrap Eagle 512 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `blackmagic` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:armstrap_eagle512] platform = ststm32 board = armstrap_eagle512

upload_protocol = blackmagic


---

### 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. obsessed 😭

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this one bestie, driver chaos is real 🙈

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Armstrap Eagle 512 has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. not me saving u money 🎀

Compatible Tools table, but make it a vibe check:

- **Compatible Tools** — `debugging_tool_blackmagic`
- **On-board** — Yes
- **Default** — Yes

- **`debugging_tool_jlink`** — the J-Link debug probe, sitting pretty in the debugging tool lineup 💅
- **`debugging_tool_stlink`** — and its ST-Link bestie, right there in the same row 🫶

---

## ✨ Frameworks ✨

Okay so these are the software libraries you can build on top of, and they each have a whole personality:

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. <cyan>(translation: vendor-neutral glow-up for your Cortex-M, no cap ✨)</cyan>

- **`framework_spl`** — The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers. <lavender>(so you're not out here raw-dogging register addresses, bestie 😭)</lavender>

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <mint>(portable AND fast, it's giving main character energy 👑)</mint>

---

## 🌈 Black STM32F407VE Contents 🌈

- Black STM32F407VE
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🦋 Hardware 🦋

**Platform `platform_ststm32`:** The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

And here's the spec sheet, cutie:

- **Microcontroller** — `STM32F407VET6`
- **Frequency** — `168MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `ST`

---

## 🎀 Configuration 🎀

Please use `black_f407ve` ID for `projectconf_env_board` option in `projectconf`:

[env:black_f407ve] platform = ststm32 board = black_f407ve


You can override default Black STM32F407VE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `black_f407ve.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:black_f407ve] platform = ststm32 board = black_f407ve

; change microcontroller board_build.mcu = stm32f407vet6

; change MCU frequency board_build.f_cpu = 168000000L


> not me changing the MCU frequency like it's a Spotify playlist 🙈 just don't typo the `L` okay

---

## 💜 Uploading 💜

Black STM32F407VE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` <pink>(she's the default for a reason, she ate 💅)</pink>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:black_f407ve] platform = ststm32 board = black_f407ve

upload_protocol = stlink


---

## 🔥 Debugging 🔥

`piodebug` — "1-click" solution for debugging with a zero configuration. <rainbow>zero config debugging?? iconic behavior fr fr ✨</rainbow>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>(yes really, the drivers are not optional, go get them before you start crying in the group chat 😭)</red>

You can switch between debugging `debugging_tools` using the `debugging_tools` option 💖

- <pink>`projectconf_debug_tool`</pink> option in `projectconf`.

---

<hotpink>Black STM32F407VE</hotpink> does <red>NOT</red> have an on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of the external probes listed below. 😭

**Compatible Tools** — On-board — Default

- **`debugging_tool_blackmagic`** — On-board: *(empty)* — Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(empty)* — Default: *(empty)*
- **`debugging_tool_stlink`** — On-board: *(empty)* — Default: *(empty)*

---

## ✨ Frameworks ✨

**Name** — **Description**

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *art installation* energy fr.

- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) 👑 it's a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. lowkey iconic.

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls 🦋 and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. slay.

---

# 🎀 Black STM32F407VG 🎀

**Contents**

- Black STM32F407VG
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## ✨ Hardware ✨

**Platform `platform_ststm32`:** the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users 💅 It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. obsessed.

**Microcontroller** — `STM32F407VGT6`

**Frequency** — `168MHz`

**Flash** — `512KB`

**RAM** — `128KB`

**Vendor** — `ST`

---

## ✨ Configuration ✨

Please use <pink>`black_f407vg`</pink> ID for the <pink>`projectconf_env_board`</pink> option in `projectconf`:

[env:black_f407vg] platform = ststm32 board = black_f407vg


You can override default Black STM32F407VG settings per build environment using <hotpink>`board_***`</hotpink> option, where `***` is a JSON object path from board manifest `black_f407vg.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:black_f407vg] platform = ststm32 board = black_f407vg

; change microcontroller board_build.mcu = stm32f407vgt6

; change MCU frequency board_build.f_cpu = 168000000L


---

## ✨ Uploading ✨

Black STM32F407VG supports the next uploading protocols 🌈

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is <pink>`stlink`</pink> ✨

You can change the upload protocol using the <hotpink>`projectconf_upload_protocol`</hotpink> option:

[env:black_f407vg] platform = ststm32 board = black_f407vg

upload_protocol = stlink


---

## ✨ Debugging ✨

`piodebug` — the "1-click" solution for debugging with a zero configuration. no cap 🫶

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using the <pink>`projectconf_debug_tool`</pink> option in `projectconf`. 💅

- **`framework_arduino`** — bestie, this is the Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards. The whole point? Making all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving *art installation energy* ✨
- **`framework_cmsis`** — okay so the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, which reduces the learning curve for new microcontroller developers *and* cuts the time-to-market for devices. Iconic behavior honestly 👑
- **`framework_stm32cube`** — the STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. Two for one, we love to see it 💅

---

# 🦋 Black STM32F407ZE 🦋

## 📋 Contents

- Black STM32F407ZE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

<rainbow>Platform `platform_ststm32`</rainbow>: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. No cap — it offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, all while maintaining full integration and ease of development. She does it all 💖

- **Microcontroller** — `STM32F407ZET6`
- **Frequency** — `168MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use the <pink>`black_f407ze`</pink> ID for the <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:black_f407ze] platform = ststm32 board = black_f407ze


You can override default Black STM32F407ZE settings per build environment using the <purple>`board_***`</purple> option, where <purple>`***`</purple> is a JSON object path from the board manifest <pink>`black_f407ze.json`</pink>. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:black_f407ze] platform = ststm32 board = black_f407ze

; change microcontroller board_build.mcu = stm32f407zet6

; change MCU frequency board_build.f_cpu = 168000000L


---

## 📤 Uploading

Black STM32F407ZE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink> 🎀

You can change the upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:black_f407ze] platform = ststm32 board = black_f407ze

upload_protocol = stlink


---

## 🐛 Debugging

<cyan>`piodebug`</cyan> — the "1-click" solution for debugging with a zero configuration. Literally one click, we're obsessed 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 😭 don't skip this step bestie

You can switch between debugging `debugging_tools` using the <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

Black STM32F407ZE <red>does not have on-board debug probe</red> and <red>IS NOT READY for debugging</red>. You will need to use/buy one of the external probe listed below. 💀

- **`debugging_tool_blackmagic`** — on-board: *(nothing listed)*, default: **Yes** ✨
- **`debugging_tool_jlink`** — on-board: *(nothing listed)*, default: *(nothing listed)*
- **`debugging_tool_stlink`** — on-board: *(nothing listed)*, default: *(nothing listed)*

- **`framework_arduino`** — the Arduino Wiring-based Framework 💖 bestie this one lets you write cross-platform software that controls devices attached to a *huge* range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving artsy and also engineering, iconic behavior ✨

- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) 🎀 it's a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it also specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. it simplifies software re-use, reduces the learning curve for new microcontroller developers, and cuts the time-to-market for devices. so basically it's the social lubricant of the embedded world 🫶

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. expert oriented fr fr, know what you're doing before you touch it 💅

---

# 👑 Black STM32F407ZE 👑

## 🦋 Contents

- Black STM32F407ZE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌸 Hardware

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users 💖 it offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. like… it does everything. main character energy no cap 🔥

- **Microcontroller** — `STM32F407ZGT6`
- **Frequency** — `168MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `ST`

---

## 🎀 Configuration

Please use `black_f407zg` ID for `projectconf_env_board` option in `projectconf`:

[env:black_f407zg] platform = ststm32 board = black_f407zg


You can override default Black STM32F407ZE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `black_f407zg.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:black_f407zg] platform = ststm32 board = black_f407zg

; change microcontroller board_build.mcu = stm32f407zgt6

; change MCU frequency board_build.f_cpu = 168000000L


---

## 💜 Uploading

Black STM32F407ZE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:black_f407zg] platform = ststm32 board = black_f407zg

upload_protocol = stlink


---

## 🧚 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. so you literally just click. slay 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🔥

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Black STM32F407ZE does **not** have on-board debug probe and **IS NOT READY** for debugging 😭 You will need to use/buy one of external probe listed below. no cap, this is not a drill.

- **`debugging_tool_blackmagic`** — On-board: *(blank)*, Default: `Yes` ⭐
- **`debugging_tool_jlink`** — On-board: *(blank)*, Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: *(blank)*, Default: *(blank)*

## ✨ Frameworks ✨

okay so here's the framework menu bestie, and every single one of these is a whole vibe 💅

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving art-school-but-make-it-electrical 🎨
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. no cap, it's the "everyone agrees on the same plug shape" of the embedded world 🔌
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. HAL for the girlies who want it to just work, LL for the girlies who count cycles 🧮

---

# 🖤 BlackPill F103C8 🖤

## Contents

- BlackPill F103C8
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>iconic behavior honestly</rainbow> ✨

- Microcontroller: `STM32F103C8T6`
- Frequency: `72MHz`
- Flash: `64KB`
- RAM: `20KB`
- Vendor: `Generic`

---

## Configuration

bestie please use the `blackpill_f103c8` ID for the `projectconf_env_board` option in `projectconf`, like:

[env:blackpill_f103c8] platform = ststm32 board = blackpill_f103c8


You can override default BlackPill F103C8 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `blackpill_f103c8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. lowkey the most useful thing ever 🫶

[env:blackpill_f103c8] platform = ststm32 board = blackpill_f103c8

; change microcontroller board_build.mcu = stm32f103c8t6

; change MCU frequency board_build.f_cpu = 72000000L


---

## Uploading

BlackPill F103C8 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:blackpill_f103c8] platform = ststm32 board = blackpill_f103c8

upload_protocol = stlink


---

## Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. obsessed 🎀

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

BlackPill F103C8 does not have on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of external probe listed below. literally no probe, you gotta go shopping 😭

Compatible Tools — and here's the tea on the On-board / Default situation:

- **`debugging_tool_blackmagic`** — On-board: *(empty)*, Default: *(empty)*
- **`debugging_tool_jlink`** — On-board: *(empty)*, Default: *(empty)*
- **`debugging_tool_stlink`** — On-board: *(empty)*, Default: **Yes** ✅

so yeah, `stlink` is the default one, and none of them live on the board. external probe only, bestie 💜

## Frameworks 🧚✨

okay bestie, here's the framework menu for this platform — pick your fighter 💅

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a <pink>wide range of Arduino boards</pink>, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving "make anything, plug anything in" energy fr fr 🎀
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a <cyan>vendor-independent hardware abstraction layer</cyan> for the Cortex-M processor series and it specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. lowkey the responsible adult of the group 🫶
- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a <green>free/libre/open-source</green> firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. iconic, open, no cap 🌈
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. two layers, one slay ✨
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. tiny chip, huge main character energy 👑

---

# 🦋 BlackPill F103C8 (128k) 🦋

## Contents 📜

- BlackPill F103C8 (128k)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware 🔧

**Platform `platform_ststm32`**: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. obsessed, honestly 💖

- **Microcontroller**: `STM32F103C8T6`
- **Frequency**: `72MHz`
- **Flash**: `128KB`
- **RAM**: `20KB`
- **Vendor**: `Generic`

---

## Configuration ⚙️

Please use `blackpill_f103c8_128` ID for `projectconf_env_board` option in `projectconf`:

[env:blackpill_f103c8_128] platform = ststm32 board = blackpill_f103c8_128


You can override default BlackPill F103C8 (128k) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `blackpill_f103c8_128.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. customize away bestie 🎀

[env:blackpill_f103c8_128] platform = ststm32 board = blackpill_f103c8_128

; change microcontroller board_build.mcu = stm32f103c8t6

; change MCU frequency board_build.f_cpu = 72000000L


---

## Uploading 📤

BlackPill F103C8 (128k) supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:blackpill_f103c8_128] platform = ststm32 board = blackpill_f103c8_128

upload_protocol = stlink


---

## Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. literally no setup, just vibes and breakpoints 😭🔥

> **WARNING:** you will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

💅 okay so, no cap, the debug situation here is a *little* involved and we're gonna be so real about it:

- You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.
- <red>BlackPill F103C8 (128k) does not have on-board debug probe and **IS NOT READY** for debugging.</red> You will need to use/buy one of the external probes listed below. Like, it is *giving* "bring your own probe" energy. 😭

Here's the compatible tools lineup — columns are **On-board** and **Default**, and the only row that has anything filled in at all is `debugging_tool_stlink`, which is rocking a `Yes`:

- **`debugging_tool_blackmagic`** — on-board: (blank) · default: (blank)
- **`debugging_tool_jlink`** — on-board: (blank) · default: (blank)
- **`debugging_tool_stlink`** — the only one with a `Yes` in its row ✨

---

## ✨ Frameworks ✨

The framework menu, bestie, is *stacked*:

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS). It's a vendor-independent hardware abstraction layer for the Cortex-M processor series and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, which reduces the learning curve for new microcontroller developers and cuts the time-to-market for devices. Very "we're all on the same page" of it all. 🫶
- **`framework_libopencm3`** — the libOpenCM3 framework, whose whole goal is creating a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. The range?? Unmatched. 🔥
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. Efficiency queen 👑
- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Safety AND security? She said "both." 🦋

---

## 💜 BlackPill F303CC

### Contents 🎀

1. BlackPill F303CC
2. Hardware
3. Configuration
4. Uploading
5. Debugging
6. Frameworks

### Hardware 🌸

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. It's the whole package, honestly.

The specs, served fresh:

- **Microcontroller** — `STM32F303CCT6`
- **Frequency** — `72MHz`
- **Flash** — `256KB`
- **RAM** — `40KB`
- **Vendor** — `RobotDyn`

### Configuration ⭐

Please use the `robotdyn_blackpill_f303cc` ID for the `projectconf_env_board` option in `projectconf`:

[env:robotdyn_blackpill_f303cc]

[env:robotdyn_blackpill_f303cc] platform = ststm32 board = robotdyn_blackpill_f303cc


---

<pink>okay so</pink> you can <purple>override</purple> the default <hotpink>BlackPill F303CC</hotpink> settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `robotdyn_blackpill_f303cc.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>it's giving</cyan> ✨ <rainbow>full customization era</rainbow> ✨

[env:robotdyn_blackpill_f303cc] platform = ststm32 board = robotdyn_blackpill_f303cc

; change microcontroller board_build.mcu = stm32f303cct6

; change MCU frequency board_build.f_cpu = 72000000L


---

## <purple>Uploading</purple> 💅

<pink>BlackPill F303CC</pink> supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink`. <mint>slay</mint> 🎀

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:robotdyn_blackpill_f303cc] platform = ststm32 board = robotdyn_blackpill_f303cc

upload_protocol = stlink


---

## <hotpink>Debugging</hotpink> 🦋

<purple>piodebug</purple> — the "1-click" solution for debugging with a zero configuration. <cyan>no cap, zero config is the vibe</cyan> ✨

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>BlackPill F303CC</pink> does <red>not</red> have an on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of the external probes listed below. 😭

- **`debugging_tool_blackmagic`** — on-board: *(nothing)* · default: `Yes` 👑
- **`debugging_tool_jlink`** — on-board: *(nothing)* · default: *(nothing)*
- **`debugging_tool_stlink`** — on-board: *(nothing)* · default: *(nothing)*

---

## <lavender>Frameworks</lavender> 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

# <purple>BlackPill F401CC</purple> 👑

## <hotpink>Contents</hotpink> 🎀

- BlackPill F401CC
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## <cyan>Hardware</cyan> 💖

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <mint>iconic</mint> ✨

- **Microcontroller** — `STM32F401CCT6`
- **Frequency** — `84MHz`
- **Flash** — `256KB`
- **RAM** — `64KB`
- **Vendor** — `ST`

---

## <lavender>Configuration</lavender> 🌸

Please use the `blackpill_f401cc` ID for the `projectconf_env_board` option in `projectconf`:

[env:blackpill_f401cc] platform = ststm32 board = blackpill_f401cc


You can override the default <pink>BlackPill F401CC</pink> settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `blackpill_f401cc.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>bestie you have so much power here</cyan> 💅

[env:blackpill_f401cc] platform = ststm32

board = blackpill_f401cc

; change microcontroller board_build.mcu = stm32f401cct6

; change MCU frequency board_build.f_cpu = 84000000L


---

### 🚀 Uploading

okay so the <pink>BlackPill F401CC</pink> is lowkey flexible bestie, it supports these uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

The default protocol is `stlink`. ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:blackpill_f401cc] platform = ststm32 board = blackpill_f401cc

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. it's giving effortless, no cap 💅

> <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using the `projectconf_debug_tool` option in projectconf.

soooo <yellow>BlackPill F401CC does not have on-board debug probe and IS NOT READY for debugging.</yellow> 😭 You will need to use/buy one of external probe listed below.

Compatible Tools:

- `debugging_tool_blackmagic` — On-board: *(none)* · Default: `Yes`
- `debugging_tool_jlink` — On-board: *(none)* · Default: *(none)*
- `debugging_tool_stlink` — On-board: *(none)* · Default: *(none)*

---

### 🧩 Frameworks

- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- `framework_cmsis` — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. 🦋
- `framework_stm32cube` — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

## 💙 Blue STM32F407VE Mini

### 📋 Contents

- Blue STM32F407VE Mini
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 👑

- **Microcontroller:** `STM32F407VET6`
- **Frequency:** `168MHz`
- **Flash:** `512KB`
- **RAM:** `128KB`
- **Vendor:** `ST`

---

### ⚙️ Configuration

Please use `blue_f407ve_mini` ID for the `projectconf_env_board` option in projectconf:

[env:blue_f407ve_mini] platform = ststm32 board = blue_f407ve_mini


<pink>okay so</pink> if you wanna override the default **Blue STM32F407VE Mini** settings per build environment, you literally can, bestie — just use the `board_***` option, where `***` is a JSON object path from the board manifest `blue_f407ve_mini.json`. Think `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:blue_f407ve_mini] platform = ststm32 board = blue_f407ve_mini

; change microcontroller board_build.mcu = stm32f407vet6

; change MCU frequency board_build.f_cpu = 168000000L


---

### ✨ Uploading ✨

The Blue STM32F407VE Mini is giving <purple>multi-protocol</purple> — it supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink> 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:blue_f407ve_mini] platform = ststm32 board = blue_f407ve_mini

upload_protocol = stlink


---

### 🦋 Debugging 🦋

`piodebug` — the "1-click" solution for debugging with a zero configuration. Iconic fr. 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Blue STM32F407VE Mini does **not** have an on-board debug probe and <red>IS NOT READY for debugging</red>. You will need to use/buy one of the external probes listed below. 💀

- `debugging_tool_blackmagic` — On-board: <red>no</red> · Default: <green>Yes</green>
- `debugging_tool_jlink` — On-board: <red>no</red> · Default: <yellow>—</yellow>
- `debugging_tool_stlink` — On-board: <red>no</red> · Default: <yellow>—</yellow>

---

### 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. 🫶
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

## 💙 BluePill F103C6

### 🎀 Contents 🎀

- BluePill F103C6
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### ⭐ Hardware ⭐

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💜

- Microcontroller: `STM32F103C6T6`
- Frequency: `72MHz`
- Flash: `32KB`
- RAM: `10KB`
- Vendor: `Generic`

### 🌸 Configuration 🌸

Please use `bluepill_f103c6` ID for the `projectconf_env_board` option in `projectconf`:

[env:bluepill_f103c6] platform = ststm32 board = bluepill_f103c6


You can override default BluePill F103C6 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `bluepill_f103c6.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🧚

[env:bluepill_f103c6] platform = ststm32 board = bluepill_f103c6

; change microcontroller board_build.mcu = stm32f103c6t6

; change MCU frequency board_build.f_cpu = 72000000L


### 🚀 Uploading 🚀

BluePill F103C6 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink> 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:bluepill_f103c6] platform = ststm32 board = bluepill_f103c6

upload_protocol = stlink


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

BluePill F103C6 does **not** have an on-board debug probe and <red>IS NOT READY for debugging</red>. You will need to use/buy one of the external probes listed below. 💀

- `debugging_tool_blackmagic` — On-board: <red>no</red> · Default: <yellow>—</yellow>
- `debugging_tool_jlink` — On-board: <red>no</red> · Default: <yellow>—</yellow>
- `debugging_tool_stlink` — On-board: <red>no</red> · Default: <green>Yes</green>

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie 💖 it lets you write cross-platform software that controls literally anything you plug into a huge range of Arduino boards, so you can cook up creative coding, interactive objects, whole spaces, physical experiences, the works.
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it also specifies debugger interfaces. It gives you consistent, simple software interfaces to the processor for interface peripherals, real-time operating systems and middleware. Translation: it makes software way more reusable, lowers the learning curve for new microcontroller girlies, and cuts time-to-market for devices. Slay.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, which include: the HAL hardware abstraction layer (this is the one that gives you portability between different STM32 devices through standardized API calls), plus the Low-Layer (LL) APIs — a light-weight, optimized, expert-oriented set of APIs built for both performance *and* runtime efficiency. ✨

---

# 💙 BluePill F103C8 💙

## 📋 Contents

- BluePill F103C8
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs is built on the ARM Cortex-M processor, and it's designed to hand MCU users brand-new degrees of freedom. It serves up a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development. Iconic behaviour, honestly.

- **Microcontroller** — `STM32F103C8T6`
- **Frequency** — `72MHz`
- **Flash** — `64KB`
- **RAM** — `20KB`
- **Vendor** — `Generic`

---

## ⚙️ Configuration

Okay so bestie, use the `bluepill_f103c8` ID for the `projectconf_env_board` option in `projectconf`:

[env:bluepill_f103c8] platform = ststm32 board = bluepill_f103c8


You can also override the default BluePill F103C8 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `bluepill_f103c8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:bluepill_f103c8] platform = ststm32 board = bluepill_f103c8

; change microcontroller board_build.mcu = stm32f103c8t6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 🚀 Uploading

BluePill F103C8 supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` ⭐

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:bluepill_f103c8] platform = ststm32 board = bluepill_f103c8

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed. 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

BluePill F103C8 does not have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. No cap, you literally have to go get one. 😭

Compatible Tools:

- `debugging_tool_blackmagic` — On-board: *(none)* — Default: *(none)*
- `debugging_tool_jlink` — On-board: *(none)* — Default: *(none)*
- `debugging_tool_stlink` — On-board: *(none)* — Default: **Yes** 👑

---

## ✨ Frameworks ✨

okay bestie, here's the <pink>framework tea</pink> ☕️ — these are the frameworks that live in this platform, and they're all <purple>iconic</purple> in their own way:

- **`framework_arduino`** — <cyan>Arduino Wiring-based Framework</cyan> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💅
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. ✨
- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. 🌈
- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🧚
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 👑

---

## 🎀 BluePill F103C8 (128k) 🎀

### 📚 Contents 📚

- BluePill F103C8 (128k)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

- **Microcontroller** — `STM32F103C8T6`
- **Frequency** — `72MHz`
- **Flash** — `128KB`
- **RAM** — `20KB`
- **Vendor** — `Generic`

### ⚙️ Configuration ⚙️

Please use `bluepill_f103c8_128k` ID for `projectconf_env_board` option in `projectconf`:

[env:bluepill_f103c8_128k] platform = ststm32 board = bluepill_f103c8_128k


You can override default BluePill F103C8 (128k) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `bluepill_f103c8_128k.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:bluepill_f103c8_128k] platform = ststm32 board = bluepill_f103c8_128k

; change microcontroller board_build.mcu = stm32f103c8t6

; change MCU frequency board_build.f_cpu = 72000000L


### 🚀 Uploading 🚀

BluePill F103C8 (128k) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `stlink`

Default protocol is `stlink`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:bluepill_f103c8_128k] platform = ststm32 board = bluepill_f103c8_128k

upload_protocol = stlink


### 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

okay so real talk about <pink>BluePill F103C8 (128k)</pink> 💅 — she does **NOT** have an on-board debug probe, and she is **IS NOT READY** for debugging. 🫠 You will need to use or buy one of the external probes listed below, no cap.

- **`debugging_tool_blackmagic`** — On-board: *(nothing)* · Default: *(nothing)*
- **`debugging_tool_jlink`** — On-board: *(nothing)* · Default: *(nothing)*
- **`debugging_tool_stlink`** — On-board: *(nothing)* · Default: **Yes** ✨

---

## 🌈 Frameworks 🌈

the whole menu of frameworks, bestie, take your pick 🎀

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices.
- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

## 🦋 Core board F401RCT6 🦋

### 📋 Contents

- Core board F401RCT6
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 💖 Hardware 💖

Platform <purple>`platform_ststm32`</purple>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

- **Microcontroller** — `STM32F401RCT6`
- **Frequency** — `84MHz`
- **Flash** — `256KB`
- **RAM** — `64KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration ⚙️

Please use <hotpink>`coreboard_f401rc`</hotpink> ID for <purple>`projectconf_env_board`</purple> option in projectconf:

[env:coreboard_f401rc] platform = ststm32 board = coreboard_f401rc


You can override default Core board F401RCT6 settings per build environment using <purple>`board_***`</purple> option, where <yellow>`***`</yellow> is a JSON object path from board manifest `coreboard_f401rc.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:coreboard_f401rc] platform = ststm32 board = coreboard_f401rc

; change microcontroller board_build.mcu = stm32f401rct6

; change MCU frequency board_build.f_cpu = 84000000L


---

### 🚀 Uploading 🚀

Core board F401RCT6 supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `hid`
- `jlink`
- `serial`
- `stlink`

Default protocol is <cyan>`stlink`</cyan> ✨

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:coreboard_f401rc] platform = ststm32 board = coreboard_f401rc

upload_protocol = stlink


---

### 🐛 Debugging 🐛

<rainbow>`piodebug`</rainbow> — "1-click" solution for debugging with a zero configuration. 💅

> **WARNING:** 🚨
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <purple>`debugging_tools`</purple> using <purple>`projectconf_debug_tool`</purple> option in projectconf.

---

Core board F401RCT6 does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭 bestie you're gonna have to use or buy one of the external probes listed below, no way around it.

<purple>**Compatible Tools** ✨</purple>

- **`debugging_tool_blackmagic`** — On-board: *(nothing, she's bare)* · Default: **Yes** 💅
- **`debugging_tool_jlink`** — On-board: *(nothing)* · Default: *(nope)*
- **`debugging_tool_stlink`** — On-board: *(nothing)* · Default: *(nope)*

---

## <rainbow>Frameworks</rainbow> 🧚

<pink>**Name** → **Description**</pink>, the whole lineup, and yes you're getting all of it:

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *art installation but make it firmware* 🎀
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. lowkey iconic for that 🫶
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. expert mode activated 😌

---

## <rainbow>Demo F030F4</rainbow> 🌸

### <cyan>Contents</cyan> 📜

- Demo F030F4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### <cyan>Hardware</cyan> 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. periodt 💅

<pink>**The specs, she's tiny but mighty:**</pink>

- **Microcontroller** — `STM32F030F4P6`
- **Frequency** — `48MHz`
- **Flash** — `16KB`
- **RAM** — `4KB`
- **Vendor** — `Generic`

---

### <cyan>Configuration</cyan> 🎀

Please use `demo_f030f4` ID for `projectconf_env_board` option in `projectconf`:

[env:demo_f030f4] platform = ststm32 board = demo_f030f4


You can override default Demo F030F4 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `demo_f030f4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. so much power in your hands ngl ✨

[env:demo_f030f4] platform = ststm32 board = demo_f030f4

; change microcontroller board_build.mcu = stm32f030f4p6

; change MCU frequency board_build.f_cpu = 48000000L


---

### <cyan>Uploading</cyan> 🚀

Demo F030F4 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:demo_f030f4] platform = ststm32 board = demo_f030f4

upload_protocol = stlink


---

### <cyan>Debugging</cyan> 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. main character energy fr 🔥

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this step bestie, I'm serious 🙈

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Demo F030F4 does **not** have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 😭

<purple>**Compatible Tools** ✨</purple>

- **`debugging_tool_blackmagic`** — On-board: *(nothing, empty, void)* · Default: **Yes** 👑
- **`debugging_tool_jlink`** — On-board: *(nothing)* · Default: *(nope)*
- **`debugging_tool_stlink`** — On-board: *(nothing)* · Default: *(nope)*

## ✨ Frameworks ✨

okay bestie here's the framework menu, and yes every single one is a whole vibe 🎀

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it's iconic: it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can build all kinds of creative coding, interactive objects, spaces or physical experiences. main character energy fr 💅
- **`framework_stm32cube`** — the STM32Cube embedded software libraries, which include: the HAL hardware abstraction layer (it enables portability between different STM32 devices via standardized API calls), plus the Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. lowkey a whole personality ✨

---

# 🦋 Espotel LoRa Module 🦋

## Contents

- Espotel LoRa Module
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌸 Hardware 🌸

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. it's giving *capable* 💜

- **Microcontroller** — `STM32F411RET6`
- **Frequency** — `100MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — Espotel

---

## 🎀 Configuration 🎀

Please use `elmo_f411re` ID for `projectconf_env_board` option in `projectconf`:

[env:elmo_f411re] platform = ststm32 board = elmo_f411re


You can override default Espotel LoRa Module settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `elmo_f411re.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:elmo_f411re] platform = ststm32 board = elmo_f411re

; change microcontroller board_build.mcu = stm32f411ret6

; change MCU frequency board_build.f_cpu = 100000000L


---

## 💖 Uploading 💖

Espotel LoRa Module supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:elmo_f411re] platform = ststm32 board = elmo_f411re

upload_protocol = stlink


---

## 🌈 Debugging 🌈

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. no cap, do this part, don't skip it 😭

You can switch between `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Espotel LoRa Module does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. it's giving "bring your own probe" energy 💀

- **`debugging_tool_blackmagic`** — On-board: (none), Default: (none)
- **`debugging_tool_jlink`** — On-board: (none), Default: (none)
- **`debugging_tool_stlink`** — On-board: (none), Default: **Yes**

---

## ⭐ Frameworks ⭐

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. the way that's a whole ecosystem 😭✨
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 💜

---

# 👑 F407VG 👑

## Contents

- F407VG
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🌸 Hardware 🌸

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is *designed* to offer new degrees of freedom to MCU users 💅. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. It's giving *everything*, honestly.

- **Microcontroller** — `STM32F407VGT6`
- **Frequency** — `168MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `Diymore`

---

### ✨ Configuration ✨

Bestie, please use the `diymore_f407vgt` ID for the `projectconf_env_board` option in `projectconf`:

[env:diymore_f407vgt] platform = ststm32 board = diymore_f407vgt


You can override the default F407VG settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `diymore_f407vgt.json` 👑. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:diymore_f407vgt] platform = ststm32 board = diymore_f407vgt

; change microcontroller board_build.mcu = stm32f407vgt6

; change MCU frequency board_build.f_cpu = 168000000L


---

### 🦋 Uploading 🦋

F407VG supports the next uploading protocols, and yes she's versatile like that:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` — that's the main character ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:diymore_f407vgt] platform = ststm32 board = diymore_f407vgt

upload_protocol = stlink


---

### 💜 Debugging 💜

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed, honestly 🔥

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (Not me telling you to read the docs first… it's literally required tho 😭)

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

F407VG does **not** have an on-board debug probe and **IS NOT READY** for debugging 🚫. You will need to use/buy one of the external probes listed below. No probe, no vibes, that's the rules.

- **`debugging_tool_blackmagic`** — On-board: *(no)* — Default: `Yes` 👑
- **`debugging_tool_jlink`** — On-board: *(no)* — Default: *(no)*
- **`debugging_tool_stlink`** — On-board: *(no)* — Default: *(no)*

---

### 🎀 Frameworks 🎀

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. Basically the *aesthetic* starter pack 🌈
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. Efficiency queen 💅
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. The overachiever of the group, fr fr ⭐

---

## 💖 FK407M1 💖

### 📋 Contents 📋

- FK407M1
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🌸 Hardware 🌸

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is *designed* to offer new degrees of freedom to MCU users 🫶. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. Same energy, different board, iykyk.

- **Microcontroller** — `STM32F407VET6`
- **Frequency** — `168MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `Generic`

---

### ✨ Configuration ✨

Please use the `fk407m1` ID for the `projectconf_env_board` option in `projectconf`:

[env:fk407m1] platform = ststm32 board = fk407m1


You can override the default FK407M1 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `fk407m1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:fk407m1] platform = ststm32 board = fk407m1

; change microcontroller board_build.mcu = stm32f407vet6

; change MCU frequency board_build.f_cpu = 168000000L


---

### 🦋 Uploading 🦋

FK407M1 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:fk407m1] platform = ststm32 board = fk407m1

upload_protocol = stlink


---

### 💜 Debugging 💜

`piodebug` — the "1-click" solution for debugging with a zero configuration. Zero setup, maximum slay 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>FK407M1</pink> does **not** have an on-board debug probe, and it is <red>**NOT READY**</red> for debugging 💀 fr fr. You are gonna need to use or buy one of the external probes listed below, bestie. No shortcuts here.

**Compatible debug tools** — with whether they're on-board and whether they're the default:

- **`debugging_tool_blackmagic`** — on-board: nope (empty) · default: **Yes** ✨
- **`debugging_tool_jlink`** — on-board: nope (empty) · default: nope (empty)
- **`debugging_tool_stlink`** — on-board: nope (empty) · default: nope (empty)

---

## ✨ Frameworks ✨

The frameworks this board can vibe with, and what each one actually is:

- **`framework_arduino`** — the Arduino Wiring-based Framework 🧚 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving "art kid meets electrical engineer" and we love that for you 🎀
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. Iconic, honestly 👑
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. Highkey a whole toolbox 💅

---

# 👑 L476DMW1K 👑

## 🌸 Contents 🌸

- L476DMW1K
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💖 Hardware 💖

Platform <purple>`platform_ststm32`</purple>: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. Main character energy, no cap ✨

**The specs, bestie:**

- **Microcontroller** — `STM32L476VGT6`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `rhomb.io`

---

## 🦋 Configuration 🦋

Please use the <hotpink>`rhombio_l476dmw1k`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:rhombio_l476dmw1k] platform = ststm32 board = rhombio_l476dmw1k


You can override default L476DMW1K settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `rhombio_l476dmw1k.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. So flexible, so slay 💅

[env:rhombio_l476dmw1k] platform = ststm32 board = rhombio_l476dmw1k

; change microcontroller board_build.mcu = stm32l476vgt6

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🌈 Uploading 🌈

L476DMW1K supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `stlink`

Default protocol is <cyan>`cmsis-dap`</cyan>

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:rhombio_l476dmw1k] platform = ststm32 board = rhombio_l476dmw1k

upload_protocol = cmsis-dap


---

## 💀 Debugging 💀

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed 😭

> **WARNING:** you will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Don't skip this step bestie, fr fr 🙈

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

L476DMW1K has an on-board debug probe and **IS READY** for debugging 🎉✨ you don't need to use or buy an external debug probe. Periodt.

**Compatible debug tools** — with whether they're on-board and whether they're the default:

- **`debugging_tool_blackmagic`** — on-board: nope (empty) · default: nope (empty)
- **`debugging_tool_cmsis-dap`** — on-board: **Yes** 💖 · default: **Yes** ✨
- **`debugging_tool_jlink`** — on-board: nope (empty) · default: nope (empty)
- **`debugging_tool_stlink`** — on-board: nope (empty) · default: nope (empty)

## ✨ Frameworks ✨

okay bestie, here's the framework menu for this board 💖 each one is a whole *vibe* of how you wanna talk to the metal:

- **`framework_mbed`** — the mbed framework, and no cap it's a whole icon 👑 The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. On top of that? RTOS, USB and Networking libraries, *plus* a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. it's giving ecosystem energy fr fr 🌸

- **`framework_stm32cube`** — STM32Cube embedded software libraries, periodt ✨ including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. lowkey chef's kiss for the perf girlies 💅

---

# 🦋 M200 V2 🦋

## 📖 Contents 📖

- M200 V2
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🛠️ Hardware 🛠️

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. literally so much going on and it *ate* 🔥

here's the spec sheet bestie, every number exactly as it is:

- **Microcontroller** — `STM32F070CBT6`
- **Frequency** — `48MHz`
- **Flash** — `120KB`
- **RAM** — `14.81KB`
- **Vendor** — `Malyan`

---

## ⚙️ Configuration ⚙️

Please use `malyanm200_f070cb` ID for `projectconf_env_board` option in `projectconf`:

[env:malyanm200_f070cb] platform = ststm32 board = malyanm200_f070cb


You can override default M200 V2 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `malyanm200_f070cb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. it's giving "customize your girl" energy 💅

[env:malyanm200_f070cb] platform = ststm32 board = malyanm200_f070cb

; change microcontroller board_build.mcu = stm32f070cbt6

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🚀 Uploading 🚀

M200 V2 supports the next uploading protocols, and yes bestie you get options 💖

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:malyanm200_f070cb] platform = ststm32 board = malyanm200_f070cb

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. iconic behaviour honestly 🙈

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

M200 V2 does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. no cap, this board said "not my problem" 💀

- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)* — Default: *(none)*

---

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie!! 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving ✨ maker magic ✨

- **`framework_cmsis`** — okay so the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. it enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. it simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. so efficient of it 💅

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer (which enables portability between different STM32 devices via standardized API calls), and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. no cap 🔥

---

# 👑 M300 👑

## ✨ Contents ✨

- M300
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🎀 Hardware 🎀

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. it offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. obsessed, honestly 🫶

- **Microcontroller** — `STM32F070CBT6`
- **Frequency** — `48MHz`
- **Flash** — `120KB`
- **RAM** — `14.81KB`
- **Vendor** — `Malyan`

---

## 💜 Configuration 💜

please use `malyanm300_f070cb` ID for `projectconf_env_board` option in `projectconf`:

[env:malyanm300_f070cb] platform = ststm32 board = malyanm300_f070cb


you can override default M300 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `malyanm300_f070cb.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. so much power fr fr ✨

[env:malyanm300_f070cb] platform = ststm32 board = malyanm300_f070cb

; change microcontroller board_build.mcu = stm32f070cbt6

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🦋 Uploading 🦋

M300 supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

default protocol is `stlink`

you can change upload protocol using `projectconf_upload_protocol` option:

[env:malyanm300_f070cb] platform = ststm32 board = malyanm300_f070cb

upload_protocol = stlink


---

## 🌈 Debugging 🌈

`piodebug` — "1-click" solution for debugging with a zero configuration. iconic behavior 💅

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further instructions and configuration information. don't skip this bestie, drivers matter 😭

you can switch between `debugging` `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

M300 does **not** have on-board debug probe and **IS NOT READY** for debugging. you will need to use/buy one of external probe listed below. like, that's just the situation, no shade 💀

- **Compatible Tools** — `debugging_tool_blackmagic`
  - On-board: (none)
  - Default: Yes
- **Compatible Tools** — `debugging_tool_jlink`
  - On-board: (none)
  - Default: (none)

- **`debugging_tool_stlink`** — the ST-LINK debug tool, sitting right here in the list like it owns the place 💅

---

## Frameworks 🧩

ok so here's the framework menu, bestie — name on the left, whole vibe on the right:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences ✨
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS), a vendor-independent hardware abstraction layer for the Cortex-M processor series that also specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices 🌈
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🔥

---

## MKR Sharky Contents 📚

the little table-of-contents situation, no skips:

- MKR Sharky
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware 🔧

**Platform** `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development ✨

and here's the chip tea, one stat at a time:

- **Microcontroller** — `STM32WB55CG`
- **Frequency** — `64MHz`
- **Flash** — `512KB`
- **RAM** — `192.00KB`
- **Vendor** — `Midatronics`

---

## Configuration ⚙️

bestie, please use the `mkr_sharky` ID for the `projectconf_env_board` option in `projectconf`:

[env:mkr_sharky] platform = ststm32 board = mkr_sharky


you can override default MKR Sharky settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mkr_sharky.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:mkr_sharky] platform = ststm32 board = mkr_sharky

; change microcontroller board_build.mcu = stm32wb55cg

; change MCU frequency board_build.f_cpu = 64000000L


---

## Uploading 🚀

MKR Sharky supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `mbed`
- `serial`

default protocol is `mbed` 💖

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:mkr_sharky] platform = ststm32 board = mkr_sharky

upload_protocol = mbed


---

## Debugging 🐛

`pio debug` — the "1-click" solution for debugging with a zero configuration 🎀

> **WARNING:**
> you will need to install debug tool drivers depending on your system. please click on a compatible debug tool below for the further instructions and configuration information 🫶

you can switch between debugging tools using the `projectconf_debug_tool` option in `projectconf` 💅

> Heads up bestie: this board does **not** have an on-board debug probe and is **NOT READY** for debugging. You're gonna need to use or buy one of the external probes listed below. 💅

**Compatible Tools** for MKR Sharky:

- **`debugging_tool_blackmagic`** — On-board: *(nope)* · Default: **Yes** ✅
- **`debugging_tool_jlink`** — On-board: *(nope)* · Default: *(nope)*

---

## ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework, aka the moment where you can write cross-platform software to control devices attached to a wide range of Arduino boards 🫶. It lets you create all kinds of creative coding, interactive objects, spaces or physical experiences. Iconic behavior, fr fr.

---

# 🦋 MTS Dragonfly 🦋

## Contents

1. MTS Dragonfly
1. Hardware
1. Configuration
1. Uploading
1. Debugging
1. Frameworks

---

## 🔧 Hardware 🔧

**Platform** `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. No cap, that's the whole flex. 💪

- **Microcontroller** — `STM32F411RET6`
- **Frequency** — `100MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `MultiTech`

---

## ⚙️ Configuration ⚙️

Please use the `mts_dragonfly_f411re` ID for the `projectconf_env_board` option in `projectconf`, bestie:

[env:mts_dragonfly_f411re] platform = ststm32 board = mts_dragonfly_f411re


You can override the default MTS Dragonfly settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mts_dragonfly_f411re.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. So much power in your hands 🎀

[env:mts_dragonfly_f411re] platform = ststm32 board = mts_dragonfly_f411re

; change microcontroller board_build.mcu = stm32f411ret6

; change MCU frequency board_build.f_cpu = 100000000L


---

## 🚀 Uploading 🚀

MTS Dragonfly supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

The default protocol is `mbed`. 🍓

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:mts_dragonfly_f411re] platform = ststm32 board = mts_dragonfly_f411re

upload_protocol = mbed


---

## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. Literally the main character of your dev setup. 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Don't skip this step bestie, it WILL bite you. 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

MTS Dragonfly does **not** have an on-board debug probe and is **NOT READY** for debugging. You will need to use or buy one of the external probes listed below. 🙈

- **`debugging_tool_blackmagic`** — On-board: *(nope)* · Default: **Yes** ✅
- **`debugging_tool_jlink`** — On-board: *(nope)* · Default: *(nope)*
- **`debugging_tool_stlink`** — On-board: *(nope)* · Default: *(nope)*

---

## 🌈 Frameworks 🌈

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

# 🖨️ Malyan M200 V1 💜

okay bestie, this is a whole separate board page so let's get into it ✨

## 📋 Contents

- Malyan M200 V1
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 🦋

here's the spec sheet, no cap:

- **Microcontroller** — `STM32F103CBT6`
- **Frequency** — `72MHz`
- **Flash** — `120KB`
- **RAM** — `20KB`
- **Vendor** — `Malyan`

---

## ⚙️ Configuration

Please use `malyanm200_f103cb` ID for `projectconf_env_board` option in `projectconf`:

[env:malyanm200_f103cb] platform = ststm32 board = malyanm200_f103cb


You can override default Malyan M200 V1 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `malyanm200_f103cb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:malyanm200_f103cb] platform = ststm32 board = malyanm200_f103cb

; change microcontroller board_build.mcu = stm32f103cbt6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 🚀 Uploading

Malyan M200 V1 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:malyanm200_f103cb] platform = ststm32 board = malyanm200_f103cb

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. 🎀

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging` `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Malyan M200 V1 does not have on-board debug probe and IS NOT READY for debugging. You will need to use/buy one of external probe listed below. 😭

- **`debugging_tool_blackmagic`** — On-board: *(none)*, Default: `Yes`
- **`debugging_tool_jlink`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)*, Default: *(none)*

---

## 🧩 Frameworks

- **Name** — **Description**
- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding,

interactive objects, spaces or physical experiences. 💖

- **`framework_stm32cube`** — the STM32Cube embedded software libraries, and bestie, that's a whole bundle: the **HAL** hardware abstraction layer that lets you move between different STM32 devices using standardized API calls ✨, *plus* the **Low-Layer (LL)** APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. She's giving both worlds, no cap.

---

## 🌸 Maple

### 💅 Maple Contents

- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### 🔧 Hardware

**Hardware Platform** `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. Literally the whole package 🫶

Here's the tea on the actual chip:

- **Microcontroller** — `STM32F103RBT6`
- **Frequency** — `72MHz`
- **Flash** — `108KB`
- **RAM** — `17KB`
- **Vendor** — `LeafLabs`

---

### ⚙️ Configuration

Please use `maple` ID for `projectconf_env_board` option in `projectconf`:

[env:maple] platform = ststm32 board = maple


You can override default Maple settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `maple.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. So if you wanna customize, you absolutely can 💅

[env:maple] platform = ststm32 board = maple

; change microcontroller board_build.mcu = stm32f103rbt6

; change MCU frequency board_build.f_cpu = 72000000L


---

### 🚀 Uploading

Maple supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `stlink`

Default protocol is `dfu`. ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:maple] platform = ststm32 board = maple

upload_protocol = dfu


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. Iconic, honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 👑

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Maple does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 💀

**Compatible Tools:**

- **`debugging_tool_blackmagic`** — On-board: *(nope)* · Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(nope)* · Default: *(nope)*
- **`debugging_tool_stlink`** — On-board: *(nope)* · Default: *(nope)*

---

### 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP

- **`framework_lpc`** — wait no, bestie, this row was already rolling, so let's finish the thought: the LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. 💫

- **`framework_stm32cube`** — the STM32Cube embedded software libraries, and she is *thicc* with goodies: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; plus the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. two-for-one deal, we love to see it. 🫶

---

# 🍁 Maple (RET6) 🍁

okay so here's the little menu of what's about to go down, like a table of contents but make it cute:

- Maple (RET6)
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware 🔧

<pink>Platform `platform_ststm32`:</pink> the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. she's versatile, she's efficient, she does it all 💅

- **Microcontroller** — `STM32F103RET6`
- **Frequency** — `72MHz`
- **Flash** — `256KB`
- **RAM** — `48KB`
- **Vendor** — `LeafLabs`

---

## ⚙️ Configuration ⚙️

bestie please use the `maple_ret6` ID for the <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:maple_ret6] platform = ststm32 board = maple_ret6


You can override default Maple (RET6) settings per build environment using the `board_***` option, where <hotpink>`***`</hotpink> is a JSON object path from the board manifest `maple_ret6.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. slay, customize away ✨

[env:maple_ret6] platform = ststm32 board = maple_ret6

; change microcontroller board_build.mcu = stm32f103ret6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 🚀 Uploading 🚀

Maple (RET6) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `stlink`

Default protocol is <mint>`dfu`</mint> 🌸

You can change the upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:maple_ret6] platform = ststm32 board = maple_ret6

upload_protocol = dfu


---

## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic behaviour, honestly 👑

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

Maple (RET6) does **not** have an on-board debug probe and <red>IS NOT READY for debugging</red>. 💀 You will need to use/buy one of the external probes listed below.

- **`debugging_tool_blackmagic`** — On-board: *(nope, none)* — Default: **Yes** ✅
- **`debugging_tool_jlink`** — On-board: *(nope, none)* — Default: *(not the default)*
- **`debugging_tool_stlink`** — On-board: *(nope, none)* — Default: *(not the default)*

---

## 🧚 Frameworks 🧚

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. the original girlboss framework, no cap 🎀

- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source

...computing. Basically you write one sketch and it can vibe on a whole range of Arduino boards — creative coding, interactive objects, spaces, physical computing, the whole aesthetic. 🎨✨

- **`framework_stm32cube`** — the STM32Cube embedded software libraries, and bestie, there's a lot in here. It includes:

  - The HAL hardware abstraction layer, which is the thing that gives you portability between different STM32 devices via standardized API calls 👑
  - The Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency ⚡

That's the full framework roster for <pink>Maple Mini Bootloader 2.0</pink>. Pick your fighter, fr fr. 🫶

---

> Heads up bestie — that's where this part wraps, no cap. The page keeps going, so don't go anywhere. 💖

- **`framework_libopencm3`** — <mint>okay so</mint> the libOpenCM3 framework aims to create a <rainbow>free/libre/open-source</rainbow> firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. 💅

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. ✨

---

# 🍁 Maple Mini Original 🍁

## 📜 Contents

- Maple Mini Original
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔌 Hardware

<pink>Platform</pink> `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. <purple>It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.</purple> 🫶

Here's the tea on the silicon, bestie:

- **Microcontroller** — `STM32F103CBT6` 🧠
- **Frequency** — `72MHz` ⚡
- **Flash** — `108KB` 💾
- **RAM** — `17KB` 🌸
- **Vendor** — `LeafLabs` 👑

---

## ⚙️ Configuration

<pink>Please use</pink> `maple_mini_origin` <pink>ID for</pink> `projectconf_env_board` <pink>option in</pink> `projectconf`: 👇

[env:maple_mini_origin] platform = ststm32 board = maple_mini_origin


You can override the default Maple Mini Original settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `maple_mini_origin.json`. <mint>Like for example</mint> `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:maple_mini_origin] platform = ststm32 board = maple_mini_origin

; change microcontroller board_build.mcu = stm32f103cbt6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 🚀 Uploading

<purple>Maple Mini Original supports the next uploading protocols:</purple>

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `dfu`. 💅

You can change the upload protocol using the `projectconf_upload_protocol` option: ✨

[env:maple_mini_origin] platform = ststm32 board = maple_mini_origin

upload_protocol = dfu


---

## 🐛 Debugging

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. 🔥

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. 🎀

<pink>Maple Mini Original does not have an on-board debug probe and</pink> **IS NOT READY** <pink>for debugging.</pink> 😭 You will need to use/buy one of the external probes listed below. 🫶

- **`debugging_tool_blackmagic`** — On-board: (none) · Default: **Yes** ✅
- **`debugging_tool_jlink`** — On-board: (none) · Default: (none)
- **`debugging_tool_stlink`** — On-board: (none) · Default: (none)

## 🧩 Frameworks

okay so before we get into the board itself, let's talk frameworks, because this board rolls with three and they're all kinda iconic in their own lane ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework, and the way it lets you write cross-platform software to control devices attached to a wide range of Arduino boards?? it's giving creative coding, interactive objects, spaces, physical experiences, the whole vibe. 💅
- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. no cap, that's a *list*. 🫶
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🧚

---

# 🌸 Mbed Connect Cloud 🌸

## 📖 Contents

- Mbed Connect Cloud
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔌 Hardware

Platform **`platform_ststm32`**: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. like… that's the whole pitch and honestly? it ate. 🔥

Here's the spec sheet bestie, every number exactly where it belongs:

- **Microcontroller** — `STM32F439ZIY6`
- **Frequency** — `168MHz`
- **Flash** — `2MB`
- **RAM** — `256KB`
- **Vendor** — `u-blox`

---

## ⚙️ Configuration

Please use `mbed_connect_odin` ID for `projectconf_env_board` option in `projectconf`:

[env:mbed_connect_odin] platform = ststm32 board = mbed_connect_odin


You can override default Mbed Connect Cloud settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `mbed_connect_odin.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:mbed_connect_odin] platform = ststm32 board = mbed_connect_odin

; change microcontroller board_build.mcu = stm32f439ziy6

; change MCU frequency board_build.f_cpu = 168000000L


---

## 🚀 Uploading

Mbed Connect Cloud supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `stlink`

Default protocol is `stlink` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:mbed_connect_odin] platform = ststm32 board = mbed_connect_odin

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration.

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Mbed Connect Cloud has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. 👑

Here's the compatible tools rundown — and yes, the blanks are blank, I'm not gonna pretend otherwise:

- **`debugging_tool_blackmagic`** — On-board: *(nothing listed)*, Default: *(nothing listed)*
- **`debugging_tool_cmsis-dap`** — On-board: **Yes**, Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(nothing listed)*, Default: *(nothing listed)*
- **`debugging_tool_stlink`** — On-board: *(nothing listed)*, Default: *(nothing listed)*

okay so continuing the frameworks table from before, bestie 💅 here are the deets:

- **`framework_mbed`** — <pink>The mbed framework</pink>: the mbed SDK is literally designed to give you enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, so you can code down to the metal if needed. On top of that, there's RTOS, USB, and Networking libraries, and the mbed Developer Community has built a cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. <pink>obsessed</pink> 💖
- **`framework_stm32cube`** — <cyan>STM32Cube embedded software libraries</cyan>, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <cyan>slay</cyan> ✨

and that's the frameworks table, periodt. 💅

---

# 💖 Microduino Core STM32 to Flash 💖

okay bestie, new board alert! 🚨 let's get into it.

## 📋 Contents 📋

here's the roadmap, iykyk:

- Microduino Core STM32 to Flash
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

## 🛠️ Hardware 🛠️

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <purple>no cap, this is the tea</purple> ☕

specs check, she's cute:

- **Microcontroller**: `STM32F103CBT6`
- **Frequency**: `72MHz`
- **Flash**: `105.47KB`
- **RAM**: `16.60KB`
- **Vendor**: `Microduino`

## ⚙️ Configuration ⚙️

config time, bestie. Please use `microduino32_flash` ID for `projectconf_env_board` option in `projectconf`:

[env:microduino32_flash] platform = ststm32 board = microduino32_flash


You can override default Microduino Core STM32 to Flash settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `microduino32_flash.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:microduino32_flash] platform = ststm32 board = microduino32_flash

; change microcontroller board_build.mcu = stm32f103cbt6

; change MCU frequency board_build.f_cpu = 72000000L


## 📤 Uploading 📤

how to yeet this onto the board, fr fr:

Microduino Core STM32 to Flash supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `stlink`

Default protocol is `dfu`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:microduino32_flash] platform = ststm32 board = microduino32_flash

upload_protocol = dfu


## 🐛 Debugging 🐛

debugging? we love a good detective moment 🔍

`piodebug` - "1-click" solution for debugging with a zero configuration.

> WARNING: You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Microduino Core STM32 to Flash does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below.

- **`debugging_tool_blackmagic`** — On-board: —, Default: Yes
- **`debugging_tool_jlink`** — On-board: —, Default: —
- **`debugging_tool_stlink`** — On-board: —, Default: —

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. literally the blueprint for making your weird little ideas real 🌈

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <pink>two layers, two vibes, one slay</pink> ✨

---

# 🦋 Microsoft Azure IoT Development Kit (MXChip AZ3166) 🦋

<cyan>okay so here's the whole map of this board, bestie — buckle up 🫶</cyan>

## 📋 Contents

- Microsoft Azure IoT Development Kit (MXChip AZ3166)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

<lavender>**Platform `platform_ststm32`:**</lavender> The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <purple>ngl that's a lot of flex in one sentence and it earned every word</purple> 👑

Here's the specs, no cap:

- **Microcontroller:** `STM32F412ZGT6`
- **Frequency:** `100MHz`
- **Flash:** `1MB`
- **RAM:** `256KB`
- **Vendor:** `MXChip`

---

## ⚙️ Configuration

Please use `mxchip_az3166` ID for `projectconf_env_board` option in `projectconf`:

[env:mxchip_az3166] platform = ststm32 board = mxchip_az3166


You can override default Microsoft Azure IoT Development Kit (MXChip AZ3166) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `mxchip_az3166.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>customization era, we love to see it</mint> 💅

[env:mxchip_az3166] platform = ststm32 board = mxchip_az3166

; change microcontroller board_build.mcu = stm32f412zgt6

; change MCU frequency board_build.f_cpu = 100000000L


---

## 🚀 Uploading

Microsoft Azure IoT Development Kit (MXChip AZ3166) supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:mxchip_az3166] platform = ststm32 board = mxchip_az3166

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <yellow>zero config?? we're being SPOILED</yellow> ✨

> **WARNING:** 💀
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Microsoft Azure IoT Development Kit (MXChip AZ3166) has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. <rainbow>on-board probe?? the way this board is carrying the whole team 😭🔥</rainbow>

- **Compatible Tools:** `debugging_tool_blackmagic` — **On-board:** *(no)* — **Default:** *(no)*
- **Compatible Tools:** `debugging_tool_jlink` — **On-board:** *(no)* — **Default:** *(no)*
- **Compatible Tools:** `debugging_tool_stlink` — **On-board:** `Yes` — **Default:** `Yes`

---

## 🧚 Frameworks

- **Name** — **Description**

- **`framework_arduino`** — Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a *huge* range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving ✨infinite craft table✨.

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. Bestie this one is *serious* 🫡

---

# 🦋 MultiTech mDot 🦋

## Contents

- MultiTech mDot
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>iconic behavior honestly</rainbow> 💅

- **Microcontroller** — `STM32F411RET6`
- **Frequency** — `100MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `MultiTech`

---

## Configuration

Please use `mts_mdot_f405rg` ID for `projectconf_env_board` option in `projectconf`:

[env:mts_mdot_f405rg] platform = ststm32 board = mts_mdot_f405rg


You can override default MultiTech mDot settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `mts_mdot_f405rg.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <pink>customize away, queen</pink> 👑

[env:mts_mdot_f405rg] platform = ststm32 board = mts_mdot_f405rg

; change microcontroller board_build.mcu = stm32f411ret6

; change MCU frequency board_build.f_cpu = 100000000L


---

## Uploading

MultiTech mDot supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `mbed` 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:mts_mdot_f405rg] platform = ststm32 board = mts_mdot_f405rg

upload_protocol = mbed


---

## Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <cyan>literally one click bestie</cyan> ✨

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 👀

You can switch between debugging debugging_tools using `projectconf_debug_tool` option in `projectconf`.

MultiTech mDot does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. <red>no cap, it's just not built for it</red> 😭

- **`debugging_tool_blackmagic`** — On-board: *(nope)* — Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(nope)* — Default: *(nothing)*
- **`debugging_tool_stlink`** — On-board: *(nope)* — Default: *(nothing)*

---

## Frameworks

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet

<pink>…powerful enough to build complex projects.</pink> It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. And on top of that? In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <purple>the community ate, fr fr</purple> 🫶

---

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <cyan>expert oriented bestie, they're telling us it's for the big kids</cyan> 💅

---

# ✨ MultiTech mDot F411 ✨

## 🌸 Contents 🌸

- MultiTech mDot F411
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

Platform <hotpink>`platform_ststm32`</hotpink>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <mint>no cap, that's a whole lot of freedom</mint> 🦋

- **Microcontroller** — `STM32F411RET6`
- **Frequency** — `100MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `MultiTech`

---

## ⚙️ Configuration ⚙️

Please use <hotpink>`mts_mdot_f411re`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:mts_mdot_f411re] platform = ststm32 board = mts_mdot_f411re


You can override default MultiTech mDot F411 settings per build environment using <yellow>`board_***`</yellow> option, where `***` is a JSON object path from board manifest `mts_mdot_f411re.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <lavender>iykyk, manifest paths go hard</lavender> ✨

[env:mts_mdot_f411re] platform = ststm32 board = mts_mdot_f411re

; change microcontroller board_build.mcu = stm32f411ret6

; change MCU frequency board_build.f_cpu = 100000000L


> <peach>not me dropping `L` on the end of that frequency like it's nothing — keep it, bestie, that's part of the value</peach> 🙈

---

## 🚀 Uploading 🚀

MultiTech mDot F411 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is <hotpink>`mbed`</hotpink>. 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:mts_mdot_f411re] platform = ststm32 board = mts_mdot_f411re

upload_protocol = mbed


---

## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. <rainbow>zero configuration is the main character energy we deserve</rainbow> 👑

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<purple>MultiTech mDot F411 does **not** have on-board debug probe and **IS NOT READY** for debugging.</purple> You will need to use/buy one of external probe listed below. <mint>no on-board probe? okay so we're shopping, got it 🛍️</mint>

- **`debugging_tool_blackmagic`** — Default: **Yes**
- **`debugging_tool_jlink`**
- **`debugging_tool_stlink`**

---

## 🧚 Frameworks 🧚

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal

...libraries have been built on top of the SDK by the <pink>mbed Developer Community</pink>. ✨

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The <cyan>HAL</cyan> hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The <cyan>Low-Layer (LL)</cyan> APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 💅

---

# 👑 MultiTech xDot 👑

## 🌸 Contents 🌸

- MultiTech xDot
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🎀 Hardware 🎀

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the <purple>ARM Cortex-M</purple> processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 🦋

- **Microcontroller** — `STM32L151CCU6`
- **Frequency** — `32MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `MultiTech`

---

## ✨ Configuration ✨

Please use `xdot_l151cc` ID for `projectconf_env_board` option in `projectconf`:

[env:xdot_l151cc] platform = ststm32 board = xdot_l151cc


You can override default MultiTech xDot settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `xdot_l151cc.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:xdot_l151cc] platform = ststm32 board = xdot_l151cc

; change microcontroller board_build.mcu = stm32l151ccu6

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🌈 Uploading 🌈

MultiTech xDot supports the next uploading protocols: 🔥

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink`.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:xdot_l151cc] platform = ststm32 board = xdot_l151cc

upload_protocol = stlink


---

## 💜 Debugging 💜

`piodebug` — "<rainbow>1-click</rainbow>" solution for debugging with a zero configuration. 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

MultiTech xDot does <red>not</red> have on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of external probe listed below. 😭

**Compatible Tools:**

- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)* — Default: *(none)*

---

## 🧚 Frameworks 🧚

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module

...libraries have been built on top of the SDK by the mbed Developer Community. 💖

- **`framework_stm32cube`** — the STM32Cube embedded software libraries, bestie. That includes **The HAL hardware abstraction layer**, which is the thing enabling portability between different STM32 devices via standardized API calls ✨, and also **The Low-Layer (LL) APIs** — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. She's giving both, and she's serving both. 💅

---

## 🌸 N2+ Contents 🌸

okay so here's the whole map of this board page, in order:

- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## ✨ Hardware ✨

**Platform `platform_ststm32`**: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. Like... she does it ALL. 🫶

And here's the spec sheet, no cap:

- **Microcontroller** — `STM32F405RGT6`
- **Frequency** — `168MHz`
- **Flash** — `1MB`
- **RAM** — `192KB`
- **Vendor** — Netduino

---

## 🎀 Configuration 🎀

Please use `netduino2plus` ID for `projectconf_env_board` option in `projectconf`:

[env:netduino2plus] platform = ststm32 board = netduino2plus


You can override default N2+ settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `netduino2plus.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Basically you can remix her however you want, iykyk. 🌈

[env:netduino2plus] platform = ststm32 board = netduino2plus

; change microcontroller board_build.mcu = stm32f405rgt6

; change MCU frequency board_build.f_cpu = 168000000L


---

## 🦋 Uploading 🦋

N2+ supports the next uploading protocols:

- `dfu`
- `jlink`
- `stlink`

Default protocol is `dfu` 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:netduino2plus] platform = ststm32 board = netduino2plus

upload_protocol = dfu


---

## 💜 Debugging 💜

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed fr fr. 🔥

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

> **N2+ does not have on-board debug probe and IS NOT READY for debugging.** You will need to use/buy one of external probe listed below. no cap, she is NOT ready 😭

Compatible tools, bestie:

- **`debugging_tool_jlink`** — On-board: (nope), Default: (nope)
- **`debugging_tool_stlink`** — On-board: (nope), Default: **Yes** 👑

---

## 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior honestly 🎀
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented

## 💖 NAMote72 💖

### 📋 Contents

- NAMote72
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🛠️ Hardware

<cyan>**Platform**</cyan> `platform_ststm32`: bestie, okay so the STM32 family of 32-bit Flash MCUs is based on the ARM Cortex-M processor, and it was literally designed to offer new degrees of freedom to MCU users. It's giving a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while maintaining full integration and ease of development. <pink>iconic</pink> fr fr.

Now the spec sheet, and yes it's a whole moment:

- **Microcontroller**: `STM32L152RC`
- **Frequency**: `32MHz`
- **Flash**: `256KB`
- **RAM**: `32KB`
- **Vendor**: `Semtech`

---

### ⚙️ Configuration

Please use <hotpink>`mote_l152rc`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:mote_l152rc] platform = ststm32 board = mote_l152rc


You can override default NAMote72 settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `mote_l152rc.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:mote_l152rc] platform = ststm32 board = mote_l152rc

; change microcontroller board_build.mcu = stm32l152rc

; change MCU frequency board_build.f_cpu = 32000000L


---

### ⬆️ Uploading

NAMote72 supports the next uploading protocols, no cap:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `mbed` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:mote_l152rc] platform = ststm32 board = mote_l152rc

upload_protocol = mbed


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <rainbow>slay</rainbow>

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

NAMote72 does not have on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of external probe listed below. 😭

- **`debugging_tool_blackmagic`** — On-board: *nothing* · Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *nothing* · Default: *nothing*
- **`debugging_tool_stlink`** — On-board: *nothing* · Default: *nothing*

---

### 🧩 Frameworks

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🦋

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 👑

---

*(okay that table's closed out, slayed, done — back to the boards bestie 💅)*

## 🎀 Nucleo G071RB 🎀

### 📋 Contents

- Nucleo G071RB
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

<purple>Platform `platform_ststm32`</purple>: the STM32 fam is a whole lineup of 32-bit Flash MCUs built on ARM Cortex-M processors, and the whole point is giving MCU girlies <hotpink>new degrees of freedom</hotpink>. It's a 32-bit product range that serves very high performance, real-time capabilities, digital signal processing, and low-power low-voltage operation — all while keeping full integration and ease of development. <rainbow>iconic behavior honestly</rainbow> ✨

- **Microcontroller** — `STM32G071RBT6`
- **Frequency** — `64MHz`
- **Flash** — `128KB`
- **RAM** — `36KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration

Bestie, please use the `nucleo_g071rb` ID for the `env_board` option (that's `projectconf_env_board` if we're being formal) inside `projectconf`:

[env:nucleo_g071rb] platform = ststm32 board = nucleo_g071rb


You can override the default Nucleo G071RB settings per build environment using the `board_***` option, where `***` is a JSON object path pulled straight from the board manifest `nucleo_g071rb.json`. Like for example `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>iykyk</cyan> 🦋

[env:nucleo_g071rb] platform = ststm32 board = nucleo_g071rb

; change microcontroller board_build.mcu = stm32g071rbt6

; change MCU frequency board_build.f_cpu = 64000000L


---

### ⬆️ Uploading

Nucleo G071RB supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed`

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_g071rb] platform = ststm32 board = nucleo_g071rb

upload_protocol = mbed


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <green>no cap, zero config</green> 💚

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools (`debugging_tools`) using the `projectconf_debug_tool` option in `projectconf`.

<pink>Nucleo G071RB does not have on-board debug probe and IS NOT READY for debugging.</pink> You will need to use/buy one of the external probes listed below. 😭

- **Compatible Tools** — `debugging_tool_blackmagic` | On-board: *(none)* | Default: **Yes**
- **Compatible Tools** — `debugging_tool_jlink` | On-board: *(none)* | Default: *(none)*

---

### 🧰 Frameworks

- `framework_arduino` — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. <peach>crafty era</peach> 🍓
- `framework_zephyr` — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <lavender>responsible queen</lavender> 💜

---

## 🎀 Nucleo G431KB 🎀

### 📋 Contents

- Nucleo G431KB
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

<purple>Platform `platform_ststm32`</purple>: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It's a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>she does it ALL</rainbow> ✨

- **Microcontroller** — `STM32G431KBT6`
- **Frequency** — `170MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration

Please use the `nucleo_g431kb` ID for the `env_board` option (a.k.a. `projectconf_env_board`) in `projectconf`:

[env:nucleo_g431kb] platform = ststm32 board = nucleo_g431kb


You can override default Nucleo G431KB settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_g431kb.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>go off</cyan> 🦋

[env:nucleo_g431kb] platform = ststm32 board = nucleo_g431kb

; change microcontroller board_build.mcu = stm32g431kbt6

; change MCU frequency board_build.f_cpu = 170000000L


---

### ⬆️ Uploading

Nucleo G431KB supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is `mbed`

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_g431kb] platform = ststm32 board = nucleo_g431kb

upload_protocol = mbed


---

### 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <green>main character energy fr fr</green> 💚

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools (`debugging_tools`) using the `projectconf_debug_tool` option in `projectconf`.

<pink>Nucleo G431KB does not have on-board debug probe and IS NOT READY for debugging.</pink> You will need to use/buy one of the external probes listed below. 🙈

- **Compatible Tools** — `debugging_tool_blackmagic` | On-board: *(none)* | Default: **Yes**
- **Compatible Tools** — `debugging_tool_jlink` | On-board: *(none)* | Default: *(none)*

- **`framework_arduino`** — Arduino Wiring-based Framework. Bestie, this lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *maker energy* 🎨✨

---

# 💜 Nucleo G431RB

## 📋 Contents

- Nucleo G431RB
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. no cap, that's a whole lotta freedom 🦋

- **Microcontroller** — `STM32G431RBT6`
- **Frequency** — `170MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use <hotpink>`nucleo_g431rb`</hotpink> ID for <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:nucleo_g431rb] platform = ststm32 board = nucleo_g431rb


You can override default Nucleo G431RB settings per build environment using <purple>`board_***`</purple> option, where `***` is a JSON object path from board manifest `nucleo_g431rb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. it's giving *customization slay* 💅

[env:nucleo_g431rb] platform = ststm32 board = nucleo_g431rb

; change microcontroller board_build.mcu = stm32g431rbt6

; change MCU frequency board_build.f_cpu = 170000000L


---

## 🚀 Uploading

Nucleo G431RB supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is <cyan>`mbed`</cyan> 🌈

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:nucleo_g431rb] platform = ststm32 board = nucleo_g431rb

upload_protocol = mbed


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally the main character of debugging tools 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this step bestie, fr fr 😭

You can switch between debugging `debugging_tools` using <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

Nucleo G431RB does not have on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of external probe listed below. 💀

- **`debugging_tool_blackmagic`** — On-board: *(empty)*, Default: **Yes** ✨
- **`debugging_tool_jlink`** — On-board: *(empty)*, Default: *(empty)*

---

## 🎀 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework. This one lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. obsessed 🫶
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. safety AND security? she ate 🔥

---

# 🌸 Nucleo G474RE

## 📋 Contents

- Nucleo G474RE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. same vibe, different board, iykyk ✨

- **Microcontroller** — `STM32G474RET6`
- **Frequency** — `170MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use <hotpink>`nucleo_g474re`</hotpink> ID for <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:nucleo_g474re] platform = ststm32 board = nucleo_g474re


You can override default Nucleo G474RE settings per build environment using <purple>`board_***`</purple> option, where `***` is a JSON object path from board manifest `nucleo_g474re.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. yes you CAN change things, we love a flexible queen 💅

[env:nucleo_g474re] platform = ststm32 board = nucleo_g474re

; change microcontroller board_build.mcu = stm32g474ret6

; change MCU frequency board_build.f_cpu = 170000000L


---

## 🚀 Uploading

Nucleo G474RE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`

Default protocol is <cyan>`mbed`</cyan> 🌈

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:nucleo_g474re] platform = ststm32 board = nucleo_g474re

upload_protocol = mbed


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. zero config, infinite vibes 🦋

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. read this part, please, it matters 🙈

You can switch between debugging `debugging_tools` using <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

<red>Nucleo G474RE</red> has no on-board debug probe, so bestie, it is **NOT READY** for debugging. Not even a little. 😭 You will need to use or buy one of the external probes listed below — that's just the vibe.

- **`debugging_tool_blackmagic`** — On-board: *(nope, nothing)* · Default: **Yes** ✨
- **`debugging_tool_jlink`** — On-board: *(nothing)* · Default: *(nothing)*

---

## 🌈 Frameworks

Okay so here's what you can actually build on, and honestly? Both of these ate. 👑

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving "make cool stuff with zero drama." 🎀
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Lowkey the responsible main character of RTOSes. 🦋

---

## 💜 OLIMEXINO-STM32

### Contents

- OLIMEXINO-STM32
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. Like, it does *everything*, and it does it cutely. 💅

- **Microcontroller** — `STM32F103RBT6`
- **Frequency** — `72MHz`
- **Flash** — `128KB`
- **RAM** — `20KB`
- **Vendor** — `Olimex`

### Configuration

Bestie, please use the `olimexino` ID for the `projectconf_env_board` option in `projectconf`:

[env:olimexino] platform = ststm32 board = olimexino


You can also override the default OLIMEXINO-STM32 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `olimexino.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Customize away, it's your world. 🌸

[env:olimexino] platform = ststm32 board = olimexino

; change microcontroller board_build.mcu = stm32f103rbt6

; change MCU frequency board_build.f_cpu = 72000000L


### Uploading

OLIMEXINO-STM32 supports the next uploading protocols, periodt:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:olimexino] platform = ststm32 board = olimexino

upload_protocol = stlink


### Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. No cap, it just works. 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭 Do not skip this, I'm begging.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

OLIMEXINO-STM32 does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. 💀

- **`debugging_tool_blackmagic`** — On-board: *(nothing)* · Default: **Yes** ⭐
- **`debugging_tool_jlink`** — On-board: *(nothing)* · Default: *(nothing)*
- **`debugging_tool_stlink`** — On-board: *(nothing)* · Default: *(nothing)*

---

- **`framework_arduino`** — okay so this is the Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. ✨ it's giving maker-energy fr fr
- **`framework_libopencm3`** — the libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. that's a whole roster bestie 💅
- **`framework_mbed`** — the mbed framework. the mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. it is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. and on top of RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. not me being obsessed with a cookbook 🍓
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. main character APIs ngl 👑
- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. safety AND security?? slay 🛡️✨

---

## 🌈 Olimex STM32-P405 🌈

### Contents

- Olimex STM32-P405
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### 🔧 Hardware

<purple>Platform `platform_ststm32`:</purple> the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. it offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. okay that's a lot of words but every single one of them is doing its job 💖

- **Microcontroller** — `STM32F405RGT6`
- **Frequency** — `168MHz`
- **Flash** — `1MB`
- **RAM** — `192KB`
- **Vendor** — `Olimex`

---

### ⚙️ Configuration

please use `olimex_p405` ID for `projectconf_env_board` option in `projectconf`:

[env:olimex_p405] platform = ststm32 board = olimex_p405


you can override default Olimex STM32-P405 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `olimex_p405.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:olimex_p405] platform = ststm32 board = olimex_p405

; change microcontroller board_build.mcu = stm32f405rgt6

; change MCU frequency board_build.f_cpu = 168000000L


---

### 📤 Uploading

Olimex STM32-P405 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

default protocol is `stlink` 💅

you can change upload protocol using `projectconf_upload_protocol` option:

[env:olimex_p405] platform = ststm32 board = olimex_p405

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. literally one click, zero config, we love to see it ✨

> ⚠️ **WARNING:**
>
> you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further

…instructions and configuration information. 💖

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Olimex STM32-P405 does **not** have an on-board debug probe and is **NOT READY** for debugging. You will need to use/buy one of the external probes listed below. 😭 no free ride bestie

Compatible tools (the table's columns are Compatible Tools, On-board, and Default):

- **`debugging_tool_blackmagic`** — On-board: `Yes`
- **`debugging_tool_jlink`**
- **`debugging_tool_stlink`**

---

### 🌸 Frameworks 🌸

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

## 👑 P-Nucleo WB55RG 👑

### Contents

- P-Nucleo WB55RG
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <cyan>iconic chip behavior fr fr</cyan> ✨

The spec sheet, served fresh:

- **Microcontroller**: `STM32WB55RG`
- **Frequency**: `64MHz`
- **Flash**: `512KB`
- **RAM**: `192.00KB`
- **Vendor**: `ST`

---

### Configuration

Please use the `nucleo_wb55rg_p` ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_wb55rg_p] platform = ststm32 board = nucleo_wb55rg_p


You can override default P-Nucleo WB55RG settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_wb55rg_p.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nucleo_wb55rg_p] platform = ststm32 board = nucleo_wb55rg_p

; change microcontroller board_build.mcu = stm32wb55rg

; change MCU frequency board_build.f_cpu = 64000000L


---

### Uploading

P-Nucleo WB55RG supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink`. 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_wb55rg_p] platform = ststm32 board = nucleo_wb55rg_p

upload_protocol = stlink


---

### Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <rainbow>no cap, zero setup</rainbow> 🦋

> **WARNING**: You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

P-Nucleo WB55RG has an on-board debug probe and **IS READY** for debugging. You don't need to use/buy an external debug probe. 🎉 she's self-sufficient, we love that

And here comes the compatible-tools table — the columns are **Compatible Tools**, **On-board**, and **Default**:

- **`debugging_tool_blackmagic`** — on-board probe? <red>nope</red>. default? <red>nope</red>.
- **`debugging_tool_jlink`** — on-board probe? <red>nope</red>. default? <red>nope</red>.
- **`debugging_tool_stlink`** — on-board probe? <green>Yes</green> ✨ default? <green>Yes</green> ✨

---

## 🌈 Frameworks 🌈

okay so this is the whole framework situation, bestie:

- **`framework_arduino`** — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>iconic honestly 💅</pink>

---

# 🦋 Piconomix PX-HER0 🦋

## ✨ Contents ✨

here's the lil roadmap of this whole section, no cap:

- Piconomix PX-HER0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🛠️ Hardware 🛠️

<purple>Platform `platform_ststm32`:</purple> the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <cyan>fr fr, that's the whole pitch</cyan>

- **Microcontroller** — `STM32L072RB`
- **Frequency** — `32MHz`
- **Flash** — `128KB`
- **RAM** — `20KB`
- **Vendor** — `Piconomix`

---

## ⚙️ Configuration ⚙️

bestie, please use the <yellow>`piconomix_px_her0`</yellow> ID for the `projectconf_env_board` option in `projectconf`:

[env:piconomix_px_her0] platform = ststm32 board = piconomix_px_her0


You can override the default Piconomix PX-HER0 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `piconomix_px_her0.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>so much power, lowkey</purple>

[env:piconomix_px_her0] platform = ststm32 board = piconomix_px_her0

; change microcontroller board_build.mcu = stm32l072rb

; change MCU frequency board_build.f_cpu = 32000000L


---

## 📤 Uploading 📤

Piconomix PX-HER0 supports the next uploading protocols, periodt:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is <yellow>`stlink`</yellow> ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:piconomix_px_her0] platform = ststm32 board = piconomix_px_her0

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. <rainbow>main character energy tbh</rainbow>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. <red>don't skip this one bestie, for real</red>

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Piconomix PX-HER0 does not have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. <pink>not me having to go shopping 😭</pink>

- **Compatible Tools**
  - `debugging_tool_blackmagic` — on-board: nope · default: <green>Yes</green>
  - `debugging_tool_jlink` — on-board: nope · default: nope
  - `debugging_tool_stlink` — on-board: nope · default: nope

---

## 🌈 Frameworks 🌈

okay we're back at the framework list again, keep up bestie:

- **Name** — **Description**
- **`framework_arduino`** — Arduino Wiring-based Framework allows writing

<purple>…cross-platform software to control devices attached to a wide range of Arduino boards</purple> to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖 that's the whole vibe of it, bestie, it's giving "make stuff blink, make stuff move, make stuff *exist*."

---

- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (aka CMSIS) is a <cyan>vendor-independent hardware abstraction layer</cyan> for the Cortex-M processor series, and it specifies debugger interfaces. What does that mean for you? It means CMSIS hands you consistent, simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reduces the learning curve for new microcontroller developers, and cuts the time-to-market for devices. ✨ slay, honestly.

- **`framework_stm32cube`** — STM32Cube embedded software libraries, which include: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 💅 two flavours, pick your fighter.

---

# 🎀 PrntrBoard V2 🎀

## Contents 📋

- PrntrBoard V2
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## Hardware 🔧

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>fr fr, it does it all</rainbow> 👑

Here's the spec sheet, bestie, no cap:

- **Microcontroller:** `STM32F407RE`
- **Frequency:** `168MHz`
- **Flash:** `512KB`
- **RAM:** `192KB`
- **Vendor:** `PrntrBoard`

---

## Configuration ⚙️

Please use `prntr_v2` ID for the `projectconf_env_board` option in `projectconf`:

[env:prntr_v2] platform = ststm32 board = prntr_v2


You can override the default PrntrBoard V2 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `prntr_v2.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋 it's giving customization, and we love that for you.

[env:prntr_v2] platform = ststm32 board = prntr_v2

; change microcontroller board_build.mcu = stm32f407re

; change MCU frequency board_build.f_cpu = 168000000L


---

## Uploading 🚀

PrntrBoard V2 supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:prntr_v2] platform = ststm32 board = prntr_v2

upload_protocol = stlink


---

## Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. ✨ iconic behaviour honestly.

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. <red>do not skip this, bestie, I'm begging 😭</red>

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

PrntrBoard V2 does **not** have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. 💀 yeah, she's not built for that yet.

- **`debugging_tool_blackmagic`** — on-board: *(nothing, it's blank)*; default: **Yes**

- **`debugging_tool_jlink`** — bestie, no on-board probe here, and it's not the default either 💀
- **`debugging_tool_stlink`** — same energy: not on-board, not the default 🙈

---

# 🧚 Frameworks

okay so these are the frameworks you can plug into this board, and each one is a whole vibe of its own 👑

- **`framework_arduino`** — the Arduino Wiring-based Framework, which literally lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving maker chaos in the best way ✨
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. no cap, it's the sensible one 🫶
- **`framework_stm32cube`** — the STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. highkey iconic 🔥

---

# 💖 RAK811 LoRa Tracker 💖

## Contents

- RAK811 LoRa Tracker
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌸 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. literally so much going on and it's all slay ✨

- **Microcontroller** — `STM32L151RBT6`
- **Frequency** — `32MHz`
- **Flash** — `128KB`
- **RAM** — `16KB`
- **Vendor** — `RAK`

---

## 🎀 Configuration

Please use `rak811_tracker` ID for `projectconf_env_board` option in `projectconf`:

[env:rak811_tracker] platform = ststm32 board = rak811_tracker


You can override default RAK811 LoRa Tracker settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `rak811_tracker.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. yes bestie, you can customize, go off 💅

[env:rak811_tracker] platform = ststm32 board = rak811_tracker

; change microcontroller board_build.mcu = stm32l151rbt6

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🦋 Uploading

RAK811 LoRa Tracker supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:rak811_tracker] platform = ststm32 board = rak811_tracker

upload_protocol = stlink


---

## 💅 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. obsessed, honestly 😭

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

RAK811 LoRa Tracker does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. fr fr, do not come for me when it doesn't work out the box 💀

Compatible Tools — On-board — Default:

- **`debugging_tool_blackmagic`** — on-board: *(nothing)* — default: **Yes** ⭐
- **`debugging_tool_jlink`** — on-board: *(nothing)* — default: *(nothing)*
- **`debugging_tool_stlink`** — on-board: *(nothing)* — default: *(nothing)*

...and the frameworks that this board rolls with are, bestie, chef's kiss 💅:

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *maker energy*, fr.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <cyan>no cap, that's the whole description.</cyan>

---

# 🦋 RAK811 LoRa Tracker 🦋

## 🌸 Contents 🌸

- RAK811 LoRa Tracker
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware 🔧

Platform <purple>`platform_ststm32`</purple>: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>iconic honestly</rainbow> ✨

- **Microcontroller** — `STM32L151RBT6`
- **Frequency** — `32MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — `RAK`

## ⚙️ Configuration ⚙️

okay so listen — please use <hotpink>`rak811_tracker_32`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:rak811_tracker_32] platform = ststm32 board = rak811_tracker_32


You can override default RAK811 LoRa Tracker settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest <pink>`rak811_tracker_32.json`</pink>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:rak811_tracker_32] platform = ststm32 board = rak811_tracker_32

; change microcontroller board_build.mcu = stm32l151rbt6

; change MCU frequency board_build.f_cpu = 32000000L


## 📤 Uploading 📤

RAK811 LoRa Tracker supports the next uploading protocols, slay:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is <mint>`stlink`</mint> ⭐

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:rak811_tracker_32] platform = ststm32 board = rak811_tracker_32

upload_protocol = stlink


## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>do NOT skip this, bestie, i'm so serious 😭</red>

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

RAK811 LoRa Tracker does not have on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of the external probes listed below. <yellow>yes that's in all caps in the source, they meant it</yellow> 💀

- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: <green>Yes</green>
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)* — Default: *(none)*

## 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

# 💜 RHF76 052 💜

## 🌈 Contents 🌈

- RHF76 052
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware 🔧

Platform <purple>`platform_ststm32`</purple>: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. same energy, different board 🦋

- **Microcontroller** — `STM32L051C8T6`
- **Frequency** — `32MHz`
- **Flash** — `64KB`
- **RAM** — `8KB`
- **Vendor** — `ST`

## ⚙️ Configuration ⚙️

Please use <hotpink>`rhf76_052`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:rhf76_052] platform = ststm32 board = rhf76_052


You can override default RHF76 052 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest <pink>`rhf76_052.json`</pink>. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:rhf76_052] platform = ststm32 board = rhf76_052

; change microcontroller board_build.mcu = stm32l051c8t6

; change MCU frequency board_build.f_cpu = 32000000L


## ✨ Uploading ✨

okay so the RHF76 052 speaks these uploading protocols, no cap:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

The default protocol is `serial`, bestie. that's the vibe out of the box.

Wanna switch it up? use the <pink>`upload_protocol`</pink> option in your `platformio.ini`:

[env:rhf76_052] platform = ststm32 board = rhf76_052

upload_protocol = serial


## 🌸 Debugging 🌸

`pio debug` — the "1-click" solution for debugging with a <rainbow>zero configuration</rainbow>. it's giving effortless, fr fr.

> **WARNING:** you WILL need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. don't skip this, i'm begging 🙈

You can switch between debugging debug tools using the <pink>`debug_tool`</pink> option in `platformio.ini`.

RHF76 052 does <red>NOT</red> have an on-board debug probe and <red>**IS NOT READY**</red> for debugging. you're gonna need to use or buy one of the external probes listed below, bestie. no shortcuts here 💀

- **`debugging_tool_blackmagic`** — on-board: *nope*; default: **Yes**
- **`debugging_tool_jlink`** — on-board: *nope*; default: *nope*
- **`debugging_tool_stlink`** — on-board: *nope*; default: *nope*

---

## 💜 Frameworks 💜

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behaviour honestly 🫶
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. so efficient of it ✨
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. the way it does BOTH performance AND runtime efficiency?? slay.

---

# 👑 RushUp Cloud-JAM 👑

## 📖 Contents

- RushUp Cloud-JAM
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. literally the whole package 🌈

- **Microcontroller** — `STM32F401RET6`
- **Frequency** — `84MHz`
- **Flash** — `512KB`
- **RAM** — `96KB`
- **Vendor** — RushUp

## ⚙️ Configuration

Please use `cloud_jam` ID for the <pink>`board`</pink> option in `platformio.ini`:

[env:cloud_jam] platform = ststm32 board = cloud_jam


You can override default RushUp Cloud-JAM settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `cloud_jam.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. so much power in your hands 💅

[env:cloud_jam] platform = ststm32 board = cloud_jam

; change microcontroller board_build.mcu = stm32f401ret6

; change MCU frequency board_build.f_cpu = 84000000L


## 🚀 Uploading

RushUp Cloud-JAM supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` — that's the moment, bestie.

You can change upload protocol using the <pink>`upload_protocol`</pink> option in `platformio.ini`:

[env:cloud_jam] platform = ststm32 board = cloud_jam

upload_protocol = stlink


## 🐛 Debugging

`pio debug` — the "1-click" solution for debugging with a <rainbow>zero configuration</rainbow>. obsessed honestly.

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. (yes this warning again, it's important every time 😭)

You can switch between debugging debug tools using the <pink>`debug_tool`</pink> option in `platformio.ini`.

RushUp Cloud-JAM <green>has</green> an on-board debug probe and <green>**IS READY**</green> for debugging. you don't need to use or buy an external debug probe. main character energy, honestly 👑

- **`debugging_tool_blackmagic`** — on-board: *nope*; default: *nope*
- **`debugging_tool_jlink`** — on-board: *nope*; default: *nope*
- **`debugging_tool_stlink`** — on-board: **Yes**; default: **Yes** ✅

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. It's giving "one interface to rule them all" fr. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. <cyan>slay, honestly</cyan> ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. <hotpink>down to the METAL, bestie</hotpink> 🔥 In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

- **`framework_spl`** — The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers. <purple>no register-flirting required 💅</purple>

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <yellow>expert oriented = main character energy, no cap</yellow> 👑

---

## 🦋 RushUp Cloud-JAM L4 🦋

### 📜 Contents

- RushUp Cloud-JAM L4

  - Hardware

  - Configuration

  - Uploading

  - Debugging

  - Frameworks

---

### 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <mint>lowkey the whole package 🫶</mint>

- **Microcontroller** — `STM32L476RGT6`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `RushUp`

---

### ⚙️ Configuration

Please use <pink>`cloud_jam_l4`</pink> ID for `projectconf_env_board` option in `projectconf`:

[env:cloud_jam_l4] platform = ststm32 board = cloud_jam_l4


You can override default RushUp Cloud-JAM L4 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `cloud_jam_l4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <lavender>yes you CAN customize, bestie, go off ✨</lavender>

[env:cloud_jam_l4] platform = ststm32 board = cloud_jam_l4

; change microcontroller board_build.mcu = stm32l476rgt6

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🚀 Uploading

RushUp Cloud-JAM L4 supports the next uploading protocols:

- `blackmagic`

- `jlink`

- `mbed`

- `stlink`

Default protocol is <hotpink>`stlink`</hotpink>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:cloud_jam_l4] platform = ststm32 board = cloud_jam_l4

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <rainbow>one click and you're IN 💅</rainbow>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>fr fr, don't skip the drivers or you'll be crying 😭</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

RushUp Cloud-JAM L4 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <mint>on-board probe?? we love an independent queen 👑</mint>

Compatible Tools:

- **`debugging_tool_blackmagic`** — On-board: *(blank)* — Default: *(blank)*
- **`debugging_tool_jlink`** — On-board: *(blank)* — Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: Yes — Default: Yes

---

<yellow>okay but the way this board literally just shows up debug-ready with zero extra shopping required?? iconic 🎀</yellow>

- **`framework_mbed`** — okay bestie, this is <pink>The mbed framework</pink>. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <purple>it's giving "everything you need, already in the box" energy 💅</purple>

- **`framework_stm32cube`** — <cyan>STM32Cube embedded software libraries</cyan>, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <mint>two vibes, one framework — pick your lane ✨</mint>

---

# 🦋 ST 32F401CDISCOVERY 🦋

## 📋 Contents 📋

- ST 32F401CDISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🛠️ Hardware 🛠️

<purple>Platform</purple> `platform_ststm32`: okay bestie, the STM32 family of 32-bit Flash MCUs is built on the ARM Cortex-M processor and it is *designed to offer new degrees of freedom to MCU users*. Like, it literally says that. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>iconic behaviour honestly</rainbow> 💅

So here's the vibe check on the chip itself:

- **Microcontroller** — `STM32F401VCT6`
- **Frequency** — `84MHz`
- **Flash** — `256KB`
- **RAM** — `64KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration ⚙️

Please use `disco_f401vc` ID for `projectconf_env_board` option in `projectconf`:

[env:disco_f401vc] platform = ststm32 board = disco_f401vc


You can override default <pink>ST 32F401CDISCOVERY</pink> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_f401vc.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>iykyk</cyan> ✨

[env:disco_f401vc] platform = ststm32 board = disco_f401vc

; change microcontroller board_build.mcu = stm32f401vct6

; change MCU frequency board_build.f_cpu = 84000000L


---

### 📤 Uploading 📤

ST 32F401CDISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 🫶

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_f401vc] platform = ststm32 board = disco_f401vc

upload_protocol = stlink


---

### 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. <green>ate, no notes</green> 🔥

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>do NOT skip this bestie, drivers first, vibes second</red> 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST 32F401CDISCOVERY has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <yellow>main character energy fr fr</yellow> 👑

Here's the compatible tools lineup:

- **`debugging_tool_blackmagic`** — on-board: *(no mark)*, default: *(no mark)*
- **`debugging_tool_jlink`** — on-board: *(no mark)*, default: *(no mark)*
- **`debugging_tool_stlink`** — on-board: **Yes**, default: **Yes** 🌟

---

### 🧚 Frameworks 🧚

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <lavender>code down to the metal?? obsessed</lavender> 💜
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. ✨

---

## 🌈 ST 32F411EDISCOVERY 🌈

### 📑 Contents 📑

- ST 32F411EDISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🛠️ Hardware 🛠️

<purple>Platform</purple> `platform_ststm32`: and yes, same family energy — the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 🦋

This board's chip specs, bestie:

- **Microcontroller** — `STM32F411VET6`
- **Frequency** — `100MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration ⚙️

Please use `disco_f411ve` ID for `projectconf_env_board` option in `projectconf`:

[env:disco_f411ve] platform = ststm32 board = disco_f411ve


You can override default <pink>ST 32F411EDISCOVERY</pink> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_f411ve.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:disco_f411ve] platform = ststm32 board = disco_f411ve

; change microcontroller board_build.mcu = stm32f411vet6

; change MCU frequency board_build.f_cpu = 100000000L


---

### 📤 Uploading 📤

ST 32F411EDISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_f411ve] platform = ststm32 board = disco_f411ve

upload_protocol = stlink


---

### 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. <green>zero config is the dream tbh</green> 🌸

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>yes this again — drivers. install them. please. 🙈</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST 32F411EDISCOVERY has an <pink>on-board debug probe</pink> and it is <green>READY</green> for debugging. 💅 You do <bold>not</bold> need to use or buy an external debug probe. Save your coins bestie, it's already iconic.

Here's the vibe check on which tools work with it:

- `debugging_tool_blackmagic` — not on-board, not the default
- `debugging_tool_jlink` — not on-board, not the default
- `debugging_tool_stlink` — on-board: <green>Yes</green>; default: <green>Yes</green> 👑

---

## ✨ Frameworks ✨

- `framework_cmsis` — okay so the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. It's giving *infrastructure*, it's giving *standards*, we love to see it. 🫶
- `framework_stm32cube` — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. Performance AND runtime efficiency?? Not it serving both. 🔥
- `framework_zephyr` — the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Safety AND security, the way she does both. 💜

---

## 🦋 ST 32F413HDISCOVERY 🦋

### 📑 Contents 📑

- ST 32F413HDISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. Basically: powerful, tiny, and chill about power. ⭐

Here's the spec sheet moment:

- Microcontroller: `STM32F413ZHT6`
- Frequency: `100MHz`
- Flash: `512KB`
- RAM: `128KB`
- Vendor: `ST`

### ⚙️ Configuration ⚙️

Bestie, please use the `disco_f413zh` ID for the `projectconf_env_board` option in projectconf:

[env:disco_f413zh] platform = ststm32 board = disco_f413zh


You can override the default ST 32F413HDISCOVERY settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `disco_f413zh.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. So like:

[env:disco_f413zh] platform = ststm32 board = disco_f413zh

; change microcontroller board_build.mcu = stm32f413zht6

; change MCU frequency board_build.f_cpu = 100000000L


Customizing your board's whole personality fr fr. 💅

### 📤 Uploading 📤

ST 32F413HDISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`. 🎀

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:disco_f413zh] platform = ststm32 board = disco_f413zh

upload_protocol = stlink


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. Zero config?? she ate. ✨

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Do <bold>not</bold> skip this part bestie, your drivers are not going to install themselves. 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in projectconf.

ST 32F413HDISCOVERY has an <pink>on-board debug probe</pink> and it <green>IS READY</green> for debugging. You don't need to use or buy an external debug probe. The way it comes pre-loaded with main character energy. 👑

- `debugging_tool_blackmagic` — not on-board, not the default
- `debugging_tool_jlink` — not on-board, not the default
- `debugging_tool_stlink` — on-board: <green>Yes</green>; default: <green>Yes</green> 💖

---

### 🌈 Frameworks 🌈

okay so when you're picking a framework for this board, you got two choices and they're both kinda iconic in their own way:

- **`framework_mbed`** — the mbed framework, bestie. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💖
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. it's giving "I know exactly what I'm doing" energy fr fr 🔥

---

## 👑 ST 32F429IDISCOVERY 👑

### 🎀 Contents 🎀

- ST 32F429IDISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🦋 Hardware 🦋

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

so here's the spec sheet, and yes it ate:

- **Microcontroller** — `STM32F429ZIT6`
- **Frequency** — `180MHz`
- **Flash** — `2MB`
- **RAM** — `256KB`
- **Vendor** — `ST`

---

### ✨ Configuration ✨

Please use `disco_f429zi` ID for `projectconf_env_board` option in `projectconf`:

[env:disco_f429zi] platform = ststm32 board = disco_f429zi


You can override default ST 32F429IDISCOVERY settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_f429zi.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:disco_f429zi] platform = ststm32 board = disco_f429zi

; change microcontroller board_build.mcu = stm32f429zit6

; change MCU frequency board_build.f_cpu = 180000000L


---

### 🚀 Uploading 🚀

ST 32F429IDISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_f429zi] platform = ststm32 board = disco_f429zi

upload_protocol = stlink


---

### 🙈 Debugging 🙈

`piodebug` — "1-click" solution for debugging with a zero configuration. literally zero setup, we love to see it 🫶

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST 32F429IDISCOVERY has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. not me saving you money bestie 😭💸

Compatible Tools, and whether they're on-board / default:

- `debugging_tool_blackmagic` — On-board: *(none)*, Default: *(none)*
- `debugging_tool_jlink` — On-board: *(none)*, Default: *(none)*
- `debugging_tool_stlink` — On-board: **Yes**, Default: **Yes** ⭐

### ✨ Frameworks ✨

okay bestie, here's the framework menu for this board — pick your fave, they're all iconic in their own way 💅

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard, aka CMSIS, is a <cyan>vendor-independent hardware abstraction layer</cyan> for the Cortex-M processor series, and it also specifies debugger interfaces. It gives you consistent, simple software interfaces to the processor for interface peripherals, real-time operating systems and middleware. Basically it makes software re-use easier, lowers the learning curve for new microcontroller devs, and cuts time-to-market for devices. Slay.
- **`framework_mbed`** — The mbed framework. The mbed SDK was designed to give you <pink>enough hardware abstraction to stay intuitive and concise</pink>, while still being powerful enough to build complex projects. It sits on top of the low-level ARM CMSIS APIs, so you can still code down to the metal if you need to. And on top of the SDK, the mbed Developer Community has built a cookbook of <rainbow>hundreds</rainbow> of reusable peripheral and module libraries, plus RTOS, USB and Networking libraries. Obsessed.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which lets you move between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs built for both performance and runtime efficiency. Chef's kiss ✨
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. She's responsible AND versatile, we love that for her 🫶

---

## ✨ ST 32F469IDISCOVERY ✨

### 🌸 Contents 🌸

- <hotpink>**ST 32F469IDISCOVERY**</hotpink>
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform `ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. no cap, that's a lot of slay in one sentence 💖

- **Microcontroller** — `STM32F469NIH6`
- **Frequency** — `180MHz`
- **Flash** — `1MB`
- **RAM** — `384KB`
- **Vendor** — `ST`

### ⚙️ Configuration ⚙️

Please use the `disco_f469ni` ID for the `projectconf_env_board` option in `projectconf`:

[env:disco_f469ni] platform = ststm32 board = disco_f469ni


You can override the default ST 32F469IDISCOVERY settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `disco_f469ni.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. bestie you have SO much power here 🎀

[env:disco_f469ni] platform = ststm32 board = disco_f469ni

; change microcontroller board_build.mcu = stm32f469nih6

; change MCU frequency board_build.f_cpu = 180000000L


### 🚀 Uploading 🚀

ST 32F469IDISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`. 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:disco_f469ni] platform = ststm32 board = disco_f469ni

upload_protocol = stlink


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. main character energy fr fr 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this step, I'm begging 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST 32F469IDISCOVERY has an on-board debug probe and is READY for debugging. You don't need to use/buy an external debug probe. she comes prepared, unlike some boards 🦋

- **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_stlink`** — On-board: **Yes** · Default: **Yes** ⭐

---

- **`framework_cmsis`** — bestie, this is the <pink>ARM Cortex Microcontroller Software Interface Standard</pink>, aka <hotpink>CMSIS</hotpink>. It's a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it also specifies debugger interfaces. What it does for you: gives you consistent, simple software interfaces to the processor for interface peripherals, real-time operating systems and middleware. Translation? Software re-use goes up, the learning curve for new microcontroller devs goes down, and time-to-market for devices gets cut. It's giving ✨*standards*✨.

- **`framework_mbed`** — the <purple>mbed</purple> framework. The mbed SDK was designed to give you *enough* hardware abstraction to be intuitive and concise, but still powerful enough to build complex projects. It sits on top of the low-level ARM CMSIS APIs, so you can still code down to the metal if you need to. And on top of the SDK the mbed Developer Community has built RTOS, USB and Networking libraries *plus* a cookbook of hundreds of reusable peripheral and module libraries. Chef's kiss 🧑‍🍳💅

- **`framework_stm32cube`** — the <cyan>STM32Cube</cyan> embedded software libraries, including: the **HAL** hardware abstraction layer, which lets you port between different STM32 devices via standardized API calls; and the **Low-Layer (LL)** APIs — a light-weight, optimized, expert-oriented set of APIs designed for both performance and runtime efficiency. Obsessed.

- **`framework_zephyr`** — the <mint>Zephyr Project</mint>, a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Safety girlie 🫶

---

# 🎀 ST 32F746GDISCOVERY 🎀

## Contents

- ST 32F746GDISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware

Platform `platform_ststm32`: the <blue>STM32 family of 32-bit Flash MCUs</blue> based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. It literally does it all 💖

- **Microcontroller**: `STM32F746NGH6`
- **Frequency**: `216MHz`
- **Flash**: `1MB`
- **RAM**: `320KB`
- **Vendor**: `ST`

---

## Configuration

Please use <yellow>`disco_f746ng`</yellow> ID for `projectconf_env_board` option in `projectconf`:

[env:disco_f746ng] platform = ststm32 board = disco_f746ng


You can override default ST 32F746GDISCOVERY settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `disco_f746ng.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:disco_f746ng] platform = ststm32 board = disco_f746ng

; change microcontroller board_build.mcu = stm32f746ngh6

; change MCU frequency board_build.f_cpu = 216000000L


---

## Uploading

ST 32F746GDISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_f746ng] platform = ststm32 board = disco_f746ng

upload_protocol = stlink


---

## Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. No setup, no stress, main character energy 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<pink>ST 32F746GDISCOVERY</pink> has an on-board debug probe and is <rainbow>READY for debugging</rainbow>. 💅 You do <hotpink>not</hotpink> need to use or buy an external debug probe, bestie. It's giving self-sufficient.

---

## 🛠️ Compatible Tools

- **`debugging_tool_blackmagic`** — no on-board, no default 🫶
- **`debugging_tool_jlink`** — no on-board, no default 🫶
- **`debugging_tool_stlink`** — On-board: <green>Yes</green>, Default: <green>Yes</green> ✨

---

## 🎀 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. literally the vibe.
- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. iconic behavior fr.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🦋
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🔥

---

# ✨ ST 32F769IDISCOVERY ✨

## 📋 Contents

- ST 32F769IDISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🧸 Hardware

Platform <purple>`platform_ststm32`</purple>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💖

- **Microcontroller** — `STM32F769NIH6`
- **Frequency** — `216MHz`
- **Flash** — `1MB`
- **RAM** — `512KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use <hotpink>`disco_f769ni`</hotpink> ID for the `projectconf_env_board` option in `projectconf`: 💅

[env:disco_f769ni] platform = ststm32 board = disco_f769ni


You can override default ST 32F769IDISCOVERY settings per build environment using the <cyan>`board_***`</cyan> option, where `***` is a JSON object path from the board manifest `disco_f769ni.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. no cap, it's that easy. 🌸

[env:disco_f769ni] platform = ststm32 board = disco_f769ni

; change microcontroller board_build.mcu = stm32f769nih6

; change MCU frequency board_build.f_cpu = 216000000L


---

## 🚀 Uploading

ST 32F769IDISCOVERY supports the next uploading protocols: 🫶

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

---

Default protocol is `stlink`.

You can change the upload protocol using the `upload_protocol` option:

[env:disco_f769ni] platform = ststm32 board = disco_f769ni

upload_protocol = stlink


---

### <pink>Debugging</pink> 💅

<purple>`pio debug`</purple> — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. No cap, it just works. ✨

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 👀

You can switch between debugging `debugging_tools` using the `debug_tool` option in `platformio.ini`.

ST 32F769IDISCOVERY has an on-board debug probe and **IS READY** for debugging. You don't need to use or buy an external debug probe. 🎀

**Compatible Tools:**

- <cyan>`blackmagic`</cyan> — not on-board, not default
- <cyan>`jlink`</cyan> — not on-board, not default
- <cyan>`stlink`</cyan> — On-board: **Yes**, Default: **Yes** 👑

---

### <pink>Frameworks</pink> 🦋

- **`mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
- **`stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.
- **`zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

# 🌸 ST 32L0538DISCOVERY 🌸

### <pink>Contents</pink> 🎀

- ST 32L0538DISCOVERY
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### <pink>Hardware</pink> 💜

Platform `ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. ✨

**Specs:**

- **Microcontroller:** `STM32L053C8T6`
- **Frequency:** `32MHz`
- **Flash:** `64KB`
- **RAM:** `8KB`
- **Vendor:** `ST`

---

### <pink>Configuration</pink> 🛠️

Please use `disco_l053c8` ID for the `board` option in `platformio.ini`:

[env:disco_l053c8] platform = ststm32 board = disco_l053c8


You can override default ST 32L0538DISCOVERY settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `disco_l053c8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:disco_l053c8] platform = ststm32 board = disco_l053c8

; change microcontroller board_build.mcu = stm32l053c8t6

; change MCU frequency board_build.f_cpu = 32000000L


---

### <pink>Uploading</pink> 🚀

ST 32L0538DISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`. 💅

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:disco_l053c8] platform = ststm32 board = disco_l053c8

upload_protocol = stlink


---

## 🐛 Debugging 🐛

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. no cap, it just works. ✨

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (yes bestie, drivers first, tears later 😭)

You can switch between debugging debug tools using <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

<pink>ST 32L0538DISCOVERY</pink> has on-board debug probe and **IS READY** for debugging. 🫶 You don't need to use/buy external debug probe. iconic behavior honestly.

**Compatible Tools:**

- `debugging_tool_blackmagic` — On-board: — , Default: —
- `debugging_tool_jlink` — On-board: — , Default: —
- `debugging_tool_stlink` — On-board: Yes, Default: Yes 👑

---

## 🧩 Frameworks 🧩

- <cyan>`framework_mbed`</cyan> — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💖

- <cyan>`framework_stm32cube`</cyan> — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. ✨

---

## 🌈 ST 32L100DISCOVERY 🌈

### 📋 Contents 📋

- <pink>ST 32L100DISCOVERY</pink>
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 🔥

- **Microcontroller** — `STM32L100RCT6`
- **Frequency** — `32MHz`
- **Flash** — `256KB`
- **RAM** — `16KB`
- **Vendor** — `ST`

### ⚙️ Configuration ⚙️

Please use <pink>`disco_l100rc`</pink> ID for <purple>`projectconf_env_board`</purple> option in `projectconf`:

[env:disco_l100rc] platform = ststm32 board = disco_l100rc


You can override default <pink>ST 32L100DISCOVERY</pink> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_l100rc.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:disco_l100rc] platform = ststm32 board = disco_l100rc

; change microcontroller board_build.mcu = stm32l100rct6

; change MCU frequency board_build.f_cpu = 32000000L


### 📤 Uploading 📤

<pink>ST 32L100DISCOVERY</pink> supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink`. 💅

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:disco_l100rc] platform = ststm32 board = disco_l100rc

upload_protocol = stlink


### 🐛 Debugging 🐛

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. ✨

> <red>**WARNING:**</red> bestie, listen to me. 🚨 You will need to install debug tool drivers depending on your system. Like, *depending on your system*, okay? So don't come crying to me when it doesn't work because the drivers aren't there. 😭 Please click on compatible debug tool below for the further instructions and configuration information. The click is doing a lot of heavy lifting here, so do it. 💅

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. That's it, that's the whole switch-up. It's giving ✨customization✨.

<cyan>`ST 32L100DISCOVERY`</cyan> has on-board debug probe and <rainbow>**IS READY**</rainbow> for debugging. 🎉 Not me yelling in caps for emphasis, but fr fr, it comes prepped. You don't need to use/buy external debug probe. Save your coins, bestie. 💸🫶

---

### 🌸 Compatible Tools (and whether they're already onboard)

- **`debugging_tool_blackmagic`** — On-board: *(blank, so nope)* · Default: *(blank, also nope)*
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: **`Yes`** · Default: **`Yes`** 👑

---

<lavender>So for this board, the whole table is basically saying: `debugging_tool_stlink` is the one that's already there and already the default. The other two are just, like, available. Sitting there. Vibing. 🦋</lavender>

- **`framework_stm32cube`** — the STM32Cube embedded software libraries, and bestie, this is a whole bundle: the HAL hardware abstraction layer (which lets you move between different STM32 devices using standardized API calls, slay), plus the Low-Layer (LL) APIs — a light-weight, optimized, expert-oriented set of APIs designed for both performance *and* runtime efficiency. Iconic.

---

## 🦋 ST 32L476GDISCOVERY 🦋

### Contents

- ST 32L476GDISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. no cap, that's a lot of range 💅

| — okay not a table, a *vibe* list, but with all the receipts —

- **Microcontroller**: `STM32L476VGT6`
- **Frequency**: `80MHz`
- **Flash**: `1MB`
- **RAM**: `128KB`
- **Vendor**: `ST`

---

### Configuration

Please use `disco_l476vg` ID for the `projectconf_env_board` option in projectconf:

[env:disco_l476vg] platform = ststm32 board = disco_l476vg


You can override the default ST 32L476GDISCOVERY settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `disco_l476vg.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:disco_l476vg] platform = ststm32 board = disco_l476vg

; change microcontroller board_build.mcu = stm32l476vgt6

; change MCU frequency board_build.f_cpu = 80000000L


---

### Uploading

ST 32L476GDISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:disco_l476vg] platform = ststm32 board = disco_l476vg

upload_protocol = stlink


---

### Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed honestly 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 👑

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in projectconf.

ST 32L476GDISCOVERY has an on-board debug probe and **IS READY** for debugging. You don't need to use/buy an external debug probe. periodt. 💖

Compatible Tools, with all the deets:

- `debugging_tool_blackmagic` — On-board: (nothing), Default: (nothing)
- `debugging_tool_jlink` — On-board: (nothing), Default: (nothing)
- `debugging_tool_stlink` — On-board: **Yes**, Default: **Yes**

---

### Frameworks

- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. the way that's a whole ecosystem 😭🌸

- **`framework_stm32cube`** — the STM32Cube embedded software libraries 💖 and bestie, this is a whole bundle: the HAL hardware abstraction layer (that's the piece enabling portability between different STM32 devices via standardized API calls ✨), *plus* the Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. no cap.

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind 🦋.

---

# 👑 ST 32L496GDISCOVERY 👑

## 🎀 Contents 🎀

- ST 32L496GDISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users 💅. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. it's giving *everything*, honestly.

Here's the spec sheet, bestie:

- **Microcontroller** — `STM32L496AGI6`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `320KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration ⚙️

Please use `disco_l496ag` ID for `projectconf_env_board` option in `projectconf`:

[env:disco_l496ag] platform = ststm32 board = disco_l496ag


You can override default `ST 32L496GDISCOVERY` settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_l496ag.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:disco_l496ag] platform = ststm32 board = disco_l496ag

; change microcontroller board_build.mcu = stm32l496agi6

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading 🚀

`ST 32L496GDISCOVERY` supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 💫

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_l496ag] platform = ststm32 board = disco_l496ag

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration 🔥

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭 don't skip this step, fr fr.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

`ST 32L496GDISCOVERY` has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe 🎀 iconic behaviour, honestly.

Compatible tools, bestie:

- **`debugging_tool_blackmagic`** — On-board: *(empty)*, Default: *(empty)* 🙈
- **`debugging_tool_jlink`** — On-board: *(empty)*, Default: *(empty)* 🙈
- **`debugging_tool_stlink`** — On-board: Yes, Default: Yes 👑

---

## 🧚 Frameworks 🧚

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking

- **`framework_stm32cube`** — bestie this is the <cyan>STM32Cube embedded software libraries</cyan> bundle, and it's giving everything: the <purple>HAL</purple> hardware abstraction layer, which lets you move between different STM32 devices via standardized API calls (portability queen 💅); plus the <purple>Low-Layer (LL) APIs</purple>, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. It's giving speed *and* efficiency, no cap.
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (<rainbow>RTOS</rainbow>) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Safety girlie AND security girlie?? We love a multitasker 🫶

---

## 🦋 ST B-L475E-IOT01A Discovery kit 🦋

### Contents 🌸

- ST B-L475E-IOT01A Discovery kit
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

### Hardware ✨

Platform <hotpink>`platform_ststm32`</hotpink>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. Iconic behavior honestly 👑

- **Microcontroller** — `STM32L475VGT6`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `ST`

### Configuration 💖

Please use <yellow>`disco_l475vg_iot01a`</yellow> ID for `projectconf_env_board` option in `projectconf`:

[env:disco_l475vg_iot01a] platform = ststm32 board = disco_l475vg_iot01a


You can override default ST B-L475E-IOT01A Discovery kit settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_l475vg_iot01a.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Customize away bestie 🎀

[env:disco_l475vg_iot01a] platform = ststm32 board = disco_l475vg_iot01a

; change microcontroller board_build.mcu = stm32l475vgt6

; change MCU frequency board_build.f_cpu = 80000000L


### Uploading 🚀

ST B-L475E-IOT01A Discovery kit supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is <mint>`stlink`</mint>.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_l475vg_iot01a] platform = ststm32 board = disco_l475vg_iot01a

upload_protocol = stlink


### Debugging 🐛

`pio` `debug` — a "1-click" solution for debugging with a zero configuration. Zero setup, all vibes ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (Not me forgetting the drivers every single time 😭)

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST B-L475E-IOT01A Discovery kit has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. Main character energy, it came prepared 💅

Compatible Tools, On-board, Default:

- **`debugging_tool_blackmagic`** — not on-board, not default
- **`debugging_tool_jlink`** — not on-board, not default
- **`debugging_tool_stlink`** — On-board: **Yes**, Default: **Yes** 👑

### Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached

- **`framework_mbed`** — bestie, this is The mbed framework. The mbed SDK has been designed to provide *enough* hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <mint>so many libraries, we love to see it</mint> 💖

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <cyan>portability AND efficiency?? iconic behavior</cyan> ✨

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <lavender>safety and security in mind, periodt</lavender> 🦋

---

# 🌸 ST DISCO-L072CZ-LRWAN1 🌸

<rainbow>okay this one's a whole vibe, let's get into it</rainbow> 🫶

## 📋 Contents

- ST DISCO-L072CZ-LRWAN1
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <pink>highkey everything at once</pink> 💅

Here's the spec sheet bestie, no cap:

- **Microcontroller** — `STM32L072CZ`
- **Frequency** — `32MHz`
- **Flash** — `192KB`
- **RAM** — `20KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use `disco_l072cz_lrwan1` ID for `projectconf_env_board` option in `projectconf`:

[env:disco_l072cz_lrwan1] platform = ststm32 board = disco_l072cz_lrwan1


You can override default ST DISCO-L072CZ-LRWAN1 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_l072cz_lrwan1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>you literally get to tweak everything, it's giving customization queen</purple> 🎀

[env:disco_l072cz_lrwan1] platform = ststm32 board = disco_l072cz_lrwan1

; change microcontroller board_build.mcu = stm32l072cz

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🚀 Uploading

ST DISCO-L072CZ-LRWAN1 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` <hotpink>she's the default for a reason</hotpink> 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_l072cz_lrwan1] platform = ststm32 board = disco_l072cz_lrwan1

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <cyan>zero config?? we stan</cyan> 👑

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>fr fr, do not skip this step bestie</red> 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST DISCO-L072CZ-LRWAN1 has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. <mint>on-board probe, we love a self-sufficient board</mint> 🫶

### 🛠️ Compatible Tools

- `debugging_tool_blackmagic` — On-board column: *blank*. Default column: *blank*. <lavender>no marks in either column for this one</lavender> 👀

*(and the rest of the tools are dropping in the next part, stay tuned bestie 🦋)*

...and the table wraps up with these last two rows, bestie 👑 no cap, this is the whole ending of it:

- **`debugging_tool_jlink`** — both cells? <pink>blank</pink>. that's it. nothing in either column, not even a little <green>Yes</green>. it's giving mystery ✨🫥
- **`debugging_tool_stlink`** — <green>Yes</green> and <green>Yes</green> 💅 both columns, fully checked, ate and left absolutely zero crumbs 🎀

> fr fr, if you're scanning this table looking for the debug tools, the empty cell on `debugging_tool_jlink` is not a typo situation on your end — it's just literally empty in the source. don't gaslight yourself 🙈

---

- **`framework_arduino`** — bestie, it's the **Arduino Wiring-based Framework**, and what it does is let you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. 💖
- **`framework_mbed`** — the **mbed framework**. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. On top of that? RTOS, USB and Networking libraries, plus a cookbook of hundreds of reusable peripheral and module libraries that have been built on top of the SDK by the mbed Developer Community. no cap, it's a whole ecosystem. ✨
- **`framework_stm32cube`** — **STM32Cube** embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🫶
- **`framework_zephyr`** — The **Zephyr Project** is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. she's secure AND she's scalable. 💅

---

# 🦋 ST Discovery F072RB 🦋

## 📋 Contents

- ST Discovery F072RB
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware

<cyan>Platform</cyan> `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. like, that's the whole vibe. 🔥

Here's the spec sheet, bestie — every single number, exactly as written:

- **Microcontroller**: `STM32F072RBT6`
- **Frequency**: `48MHz`
- **Flash**: `128KB`
- **RAM**: `16KB`
- **Vendor**: `ST`

---

## ⚙️ Configuration

Please use `disco_f072rb` ID for `projectconf_env_board` option in `projectconf`:

[env:disco_f072rb] platform = ststm32 board = disco_f072rb


You can override default ST Discovery F072RB settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_f072rb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:disco_f072rb] platform = ststm32 board = disco_f072rb

; change microcontroller board_build.mcu = stm32f072rbt6

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🚀 Uploading

ST Discovery F072RB supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink`. 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_f072rb] platform = ststm32 board = disco_f072rb

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 👀

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Discovery F072RB has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. main character energy fr fr. 💅

The table's columns are **Compatible Tools**, **On-board**, and **Default** — and the row we've got so far is:

- **`debugging_tool_blackmagic`** — On-board: *(empty)* · Default: *(empty)*

- **`debugging_tool_jlink`** — one of the debugging tools chilling in the table 💅
- **`debugging_tool_stlink`** — the other one, and this row is literally marked `Yes` for both of the yes/no columns, so she's supported bestie ✨

---

## 🧩 Frameworks (still going, we're not done yet)

okay so the framework lineup is giving *range*, and here's every single one:

- **`framework_arduino`** — Arduino's Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior honestly 🎀

- **`framework_mbed`** — the mbed framework. The mbed SDK was designed to give you *enough* hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, so you can code down to the metal if needed. On top of RTOS, USB and Networking libraries, the mbed Developer Community built a cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. she's stacked fr fr 💖

- **`framework_stm32cube`** — STM32Cube embedded software libraries, which includes: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. highkey efficient queen 👑

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. safety AND security?? she said self-care 🌸

---

# 🦋 ST Nucleo F030R8 🦋

## 📋 Contents

- ST Nucleo F030R8
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. like?? that's a whole resume 💅

- **Microcontroller** — `STM32F030R8T6`
- **Frequency** — `48MHz`
- **Flash** — `64KB`
- **RAM** — `8KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

bestie, please use the `nucleo_f030r8` ID for the `projectconf_env_board` option in projectconf, okay? like this:

[env:nucleo_f030r8] platform = ststm32 board = nucleo_f030r8


You can override the default ST Nucleo F030R8 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_f030r8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. customizing?? we love to see it ✨

[env:nucleo_f030r8] platform = ststm32 board = nucleo_f030r8

; change microcontroller board_build.mcu = stm32f030r8t6

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🚀 Uploading

ST Nucleo F030R8 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`. periodt 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_f030r8] platform = ststm32 board = nucleo_f030r8

upload_protocol = stlink


## 💅 Debugging 💅

`piodebug` — the "1-click" solution for debugging with a **zero configuration** ✨ bestie, it literally just works.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🙈 (yes, drivers first, queen, or nothing happens)

You can switch between debugging tools using `projectconf_debug_tool` option in `projectconf`. 🎀

ST Nucleo F030R8 has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. 👑

**Compatible Tools:**

- `debugging_tool_blackmagic` — not on-board, not the default
- `debugging_tool_jlink` — not on-board, not the default
- `debugging_tool_stlink` — On-board: **Yes**, Default: **Yes** ⭐

---

## 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋
- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💜
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🫶

---

## 🎀 ST Nucleo F031K6 🎀

### ✨ Contents ✨

- ST Nucleo F031K6
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### 🧚 Hardware 🧚

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💫

- **Microcontroller** — `STM32F031K6T6`
- **Frequency** — `48MHz`
- **Flash** — `32KB`
- **RAM** — `4KB`
- **Vendor** — `ST`

---

### 🌸 Configuration 🌸

Please use `nucleo_f031k6` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f031k6] platform = ststm32 board = nucleo_f031k6


You can override default ST Nucleo F031K6 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f031k6.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:nucleo_f031k6] platform = ststm32 board = nucleo_f031k6

; change microcontroller board_build.mcu = stm32f031k6t6

; change MCU frequency board_build.f_cpu = 48000000L


<pink>Uploading</p> ✨

ST Nucleo F031K6 is giving *options*, bestie — she supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 🫶

You can change upload protocol using the <purple>projectconf_upload_protocol</purple> option:

[env:nucleo_f031k6] platform = ststm32 board = nucleo_f031k6

upload_protocol = stlink


---

<pink>Debugging</p> 🦋

`piodebug` — a "1-click" solution for debugging with a zero configuration. Periodt.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (Not me forgetting the drivers and wondering why nothing works 😭)

You can switch between debugging <pink>debugging_tools</pink> using the <purple>projectconf_debug_tool</purple> option in <purple>projectconf</purple>.

ST Nucleo F031K6 has an on-board debug probe and **IS READY** for debugging. You don't need to use/buy an external debug probe. No cap. 👑

Compatible Tools:

- `debugging_tool_blackmagic`
- `debugging_tool_jlink`
- `debugging_tool_stlink` — On-board: **Yes**, Default: **Yes**

---

<pink>Frameworks</p> 🎀

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

<h2>🌸 ST Nucleo F042K6 🌸</h2>

<pink>Contents</p> 💖

- ST Nucleo F042K6
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

<pink>Hardware</p> 🌈

Platform <purple>platform_ststm32</purple>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. Ate, honestly. 💅

- Microcontroller: `STM32F042K6T6`
- Frequency: `48MHz`
- Flash: `32KB`
- RAM: `6KB`
- Vendor: `ST`

---

<pink>Configuration</p> ✨

Please use `nucleo_f042k6` ID for the <purple>projectconf_env_board</purple> option in <purple>projectconf</purple>:

[env:nucleo_f042k6] platform = ststm32 board = nucleo_f042k6


You can override default ST Nucleo F042K6 settings per build environment using the <purple>board_***</purple> option, where `***` is a JSON object path from board manifest `nucleo_f042k6.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. The way that works is *so* satisfying ngl.

[env:nucleo_f042k6] platform = ststm32 board = nucleo_f042k6

; change microcontroller board_build.mcu = stm32f042k6t6

; change MCU frequency board_build.f_cpu = 48000000L


---

<pink>Uploading</p> 🦋

ST Nucleo F042K6 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 🫶

You can change upload protocol using the <purple>projectconf_upload_protocol</purple> option:

[env:nucleo_f042k6] platform = ststm32 board = nucleo_f042k6

upload_protocol = stlink


---

<pink>Debugging</p> 🧚

`piodebug` — a "1-click" solution for debugging with a zero configuration.

> **WARNING:** bestie you're gonna need to install your debug tool drivers first, and which ones depends on your system 💀. Click the compatible debug tool below for the further instructions and configuration info, k? 🙏

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf` ✨. It's giving ✨customization✨.

<pink>ST Nucleo F042K6</pink> has an on-board debug probe and <green>IS READY for debugging</green> 👑. You do **not** need to use or buy an external debug probe. Periodt. 💅

Here's the compatible tools lineup, with on-board and default status, no cap:

- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_stlink`** — On-board: <green>Yes</green> — Default: <green>Yes</green> 🌟

---

### 🌸 Frameworks 🌸

The whole menu of frameworks this board can vibe with:

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🦋
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

## 👑 ST Nucleo F070RB 👑

### 📋 Contents

The lil roadmap of everything below, bestie:

- ST Nucleo F070RB
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 💻 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. ✨

The specs, laid out so you don't have to squint at a table:

- **Microcontroller** — `STM32F070RBT6`
- **Frequency** — `48MHz`
- **Flash** — `128KB`
- **RAM** — `16KB`
- **Vendor** — `ST`

### ⚙️ Configuration

Please use the `nucleo_f070rb` ID for the `projectconf_env_board` option in `projectconf` 💖:

[env:nucleo_f070rb] platform = ststm32 board = nucleo_f070rb


You can override the default ST Nucleo F070RB settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_f070rb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:nucleo_f070rb] platform = ststm32 board = nucleo_f070rb

; change microcontroller board_build.mcu = stm32f070rbt6

; change MCU frequency board_build.f_cpu = 48000000L


### 🚀 Uploading

ST Nucleo F070RB supports the next uploading protocols, and yes, you get options 💅:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 🌟.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_f070rb] platform = ststm32 board = nucleo_f070rb

upload_protocol = stlink


### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. Literally the main character of debugging 💅✨.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf` 🫶.

<pink>ST Nucleo F070RB</pink> has an on-board debug probe and <green>IS READY for debugging</green> 👑. You don't need to use or buy an external debug probe. Not me saving you money fr fr 🙈💖.

The compatible tools, no cap:

- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_stlink`** — On-board: <green>Yes</green> — Default: <green>Yes</green> ⭐

- **`framework_mbed`** — it's giving *the mbed framework*. So basically the mbed SDK was designed to hand you <pink>enough hardware abstraction</pink> to stay intuitive and concise, while still being powerful enough to build complex projects. It sits on top of the low-level ARM CMSIS APIs, which means you can totally code down to the metal if you need to. And on top of RTOS, USB and Networking libraries, the mbed Developer Community has built a whole cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. 💖
- **`framework_stm32cube`** — the STM32Cube embedded software libraries, and bestie they come with a LOT, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. ✨
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. no cap, it's the responsible one 🧚

---

## 🌸 ST Nucleo F072RB 🌸

### 🎀 Contents 🎀

- **ST Nucleo F072RB**
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

- **Microcontroller** — `STM32F072RBT6`
- **Frequency** — `48MHz`
- **Flash** — `128KB`
- **RAM** — `16KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration

Please use `nucleo_f072rb` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f072rb] platform = ststm32 board = nucleo_f072rb


You can override default ST Nucleo F072RB settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f072rb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nucleo_f072rb] platform = ststm32 board = nucleo_f072rb

; change microcontroller board_build.mcu = stm32f072rbt6

; change MCU frequency board_build.f_cpu = 48000000L


---

### 🚀 Uploading

ST Nucleo F072RB supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f072rb] platform = ststm32 board = nucleo_f072rb

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. literally iconic 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭 do not skip this bestie

You can switch between `debugging` `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F072RB has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. slay 🌈

- **Compatible Tools**
  - `debugging_tool_blackmagic` — On-board: *(not listed)*, Default: *(not listed)*
  - `debugging_tool_jlink` — On-board: *(not listed)*, Default: *(not listed)*
  - `debugging_tool_stlink` — On-board: `Yes`, Default: `Yes`

---

### 🦋 Frameworks

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💜
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. ✨

---

## 💜 ST Nucleo F091RC 💜

### 🌟 Contents 🌟

- **ST Nucleo F091RC**
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Okay bestie, gather round 💖 Platform `platform_ststm32` is the STM32 family — 32-bit Flash MCUs built on the ARM Cortex-M processor, designed to give MCU users new degrees of freedom. It serves up a 32-bit product range that combines **very high performance**, **real-time capabilities**, **digital signal processing**, and **low-power, low-voltage operation**, all while keeping full integration and ease of development. It's giving versatile, no cap.

Here's the spec sheet for this board, icymi:

- **Microcontroller** — `STM32F091RCT6`
- **Frequency** — `48MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `ST`

---

### Configuration

Please please *please* use the `nucleo_f091rc` ID for the `projectconf_env_board` option inside `projectconf`, mkay? 🎀

[env:nucleo_f091rc] platform = ststm32 board = nucleo_f091rc


And here's the fun part — you can override the default ST Nucleo F091RC settings **per build environment** using the `board_***` option, where `***` is a JSON object path straight out of the board manifest `nucleo_f091rc.json`. So like, `board_build.mcu`, `board_build.f_cpu`, etc. Obsessed with the flexibility fr fr.

[env:nucleo_f091rc] platform = ststm32 board = nucleo_f091rc

; change microcontroller board_build.mcu = stm32f091rct6

; change MCU frequency board_build.f_cpu = 48000000L


---

### Uploading

ST Nucleo F091RC supports the next uploading protocols, periodt:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_f091rc] platform = ststm32 board = nucleo_f091rc

upload_protocol = stlink


---

### Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. It's literally the main character of your debugging setup ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F091RC has an on-board debug probe and **IS READY** for debugging 🫶 You don't need to use/buy an external debug probe. She's self-sufficient, iconic behaviour.

Compatible tools:

- **`debugging_tool_blackmagic`** — On-board: *no*, Default: *no*
- **`debugging_tool_jlink`** — On-board: *no*, Default: *no*
- **`debugging_tool_stlink`** — On-board: **Yes**, Default: **Yes** 👑

---

### Frameworks

Here's the framework menu, and ngl it's a good one 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving craft night but make it embedded.

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. So much lore, honestly.

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. Efficiency queen 💅

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Safety girlie through and through.

---

## ST Nucleo F103RB

### Contents

- ST Nucleo F103RB
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🛠️ Hardware 🛠️

okay so `platform_ststm32` bestie, listen up 💖 The STM32 family of 32-bit Flash MCUs is built on the ARM Cortex-M processor and it's literally designed to hand MCU users brand-new degrees of freedom. It serves up a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development. it's giving iconic, no cap ✨

Here's the whole vibe for this board, keep up 🎀

- **Microcontroller** — `STM32F103RBT6`
- **Frequency** — `72MHz`
- **Flash** — `128KB`
- **RAM** — `20KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration ⚙️

Please use the `nucleo_f103rb` ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_f103rb] platform = ststm32 board = nucleo_f103rb


You can override the default ST Nucleo F103RB settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_f103rb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:nucleo_f103rb] platform = ststm32 board = nucleo_f103rb

; change microcontroller board_build.mcu = stm32f103rbt6

; change MCU frequency board_build.f_cpu = 72000000L


---

### 📤 Uploading 📤

ST Nucleo F103RB supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_f103rb] platform = ststm32 board = nucleo_f103rb

upload_protocol = stlink


---

### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. main character energy fr fr 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for further instructions and configuration information. 😭

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F103RB has an on-board debug probe and is **READY** for debugging. You don't need to use/buy an external debug probe. slay 🔥

- **`debugging_tool_blackmagic`** — compatible tool, no on-board, not default
- **`debugging_tool_jlink`** — compatible tool, no on-board, not default
- **`debugging_tool_stlink`** — compatible tool, **On-board: Yes**, **Default: Yes** ✅

---

### 🧩 Frameworks 🧩

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. 🧚

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💜

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. ⭐

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 💫

---

# 🦋 ST Nucleo F207ZG 🦋

okay so this is the whole glow-up guide for this board, here's the map bestie:

## 📜 Contents 📜

- ST Nucleo F207ZG
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💖 Hardware 💖

**Platform `platform_ststm32`:** The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <pink>iconic behavior fr fr</pink> ✨

- **Microcontroller** — `STM32F207ZGT6`
- **Frequency** — `120MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `ST`

---

## 🎀 Configuration 🎀

Please use `nucleo_f207zg` ID for `projectconf_env_board` option in projectconf, okay? like literally just:

[env:nucleo_f207zg] platform = ststm32 board = nucleo_f207zg


You can override default ST Nucleo F207ZG settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f207zg.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <hotpink>customize her!!</hotpink> 💅

[env:nucleo_f207zg] platform = ststm32 board = nucleo_f207zg

; change microcontroller board_build.mcu = stm32f207zgt6

; change MCU frequency board_build.f_cpu = 120000000L


---

## 🌈 Uploading 🌈

ST Nucleo F207ZG supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f207zg] platform = ststm32 board = nucleo_f207zg

upload_protocol = stlink


---

## 🧚 Debugging 🧚

`piodebug` — "1-click" solution for debugging with a zero configuration. no setup stress, just vibes ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>do NOT skip the drivers bestie, I'm begging 😭</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in projectconf.

ST Nucleo F207ZG has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <mint>she comes with the goods already 🫶</mint>

**Compatible Tools / On-board / Default:**

- **`debugging_tool_blackmagic`** — On-board: *(nothing listed)* · Default: *(nothing listed)*
- **`debugging_tool_jlink`** — On-board: *(nothing listed)* · Default: *(nothing listed)*
- **`debugging_tool_stlink`** — On-board: `Yes` · Default: `Yes` 👑

---

## 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🔥

- **`framework_stm32cube`** — STM32Cube embedded

…software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 💅

- **`framework_zephyr`** — okay so The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. it's giving tiny chip, huge brain 🧠✨

---

## 🦋 ST Nucleo F302R8 🦋

Contents, bestie, here's the map 🗺️:

- ST Nucleo F302R8
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. no cap, that's the whole pitch 🫶

The specs, laid out cute:

- **Microcontroller** — `STM32F302R8T6`
- **Frequency** — `72MHz`
- **Flash** — `64KB`
- **RAM** — `16KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration

Please use `nucleo_f302r8` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f302r8] platform = ststm32 board = nucleo_f302r8


You can override default ST Nucleo F302R8 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f302r8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. it's giving customize-your-kingdom energy 👑

[env:nucleo_f302r8] platform = ststm32 board = nucleo_f302r8

; change microcontroller board_build.mcu = stm32f302r8t6

; change MCU frequency board_build.f_cpu = 72000000L


---

### 📤 Uploading

ST Nucleo F302R8 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`. that's the one she ships with, periodt 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f302r8] platform = ststm32 board = nucleo_f302r8

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. literally one click, no setup arc required ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🚨

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F302R8 has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. she came prepared, main character energy fr fr 👑

Compatible Tools:

- **`debugging_tool_blackmagic`**
- **`debugging_tool_jlink`**
- **`debugging_tool_stlink`** — On-board: **Yes**, Default: **Yes**

---

### 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. obsessed with the creative-coding vibe 🌈

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you

…so you can code down to the metal if needed — no cap 🔥 And bestie, it's not just RTOS, USB and Networking libraries either: the mbed Developer Community has built a cookbook of **hundreds** of reusable peripheral and module libraries on top of the SDK. Hundreds!! 🍓

- **`framework_stm32cube`** — STM32Cube embedded software libraries, and here's what's in the bag 💅
  - The **HAL** hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls 🦋
  - The **Low-Layer (LL) APIs** — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. "Expert oriented" bestie, so it's giving iykyk 💀
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Safety **and** security, the way it should be 👑

---

# 🌈 ST Nucleo F303K8 🌈

## 🎀 Contents 🎀

- ST Nucleo F303K8
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## ✨ Hardware ✨

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

- **Microcontroller** — `STM32F303K8T6`
- **Frequency** — `72MHz`
- **Flash** — `64KB`
- **RAM** — `12KB`
- **Vendor** — `ST`

## 💖 Configuration 💖

Please use `nucleo_f303k8` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f303k8] platform = ststm32 board = nucleo_f303k8


You can override default ST Nucleo F303K8 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f303k8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nucleo_f303k8] platform = ststm32 board = nucleo_f303k8

; change microcontroller board_build.mcu = stm32f303k8t6

; change MCU frequency board_build.f_cpu = 72000000L


## 🦋 Uploading 🦋

ST Nucleo F303K8 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f303k8] platform = ststm32 board = nucleo_f303k8

upload_protocol = stlink


## 👑 Debugging 👑

`piodebug` — "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🚨

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F303K8 has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. Not me saving you money 💸

Compatible Tools:

- `debugging_tool_blackmagic`
- `debugging_tool_jlink`
- `debugging_tool_stlink` — On-board: **Yes**, Default: **Yes** ⭐

## 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical

- **`framework_mbed`** — okay so this is The mbed framework 💖 The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <pink>literally a whole ecosystem, no cap</pink> ✨

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <cyan>expert oriented fr fr, it's giving bare-metal-but-make-it-portable</cyan> 💅

---

# 💖 ST Nucleo F303RE 💖

## 📋 Contents

- ST Nucleo F303RE
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <purple>like it does the absolute most and stays chill about it</purple> 🦋

- **Microcontroller** — `STM32F303RET6`
- **Frequency** — `72MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use `nucleo_f303re` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f303re] platform = ststm32 board = nucleo_f303re


You can override default ST Nucleo F303RE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f303re.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <lavender>so much power in your hands bestie</lavender> 👑

[env:nucleo_f303re] platform = ststm32 board = nucleo_f303re

; change microcontroller board_build.mcu = stm32f303ret6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 🚀 Uploading

ST Nucleo F303RE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 🌸

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f303re] platform = ststm32 board = nucleo_f303re

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <mint>iconic behaviour tbh</mint> ✨

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F303RE has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <hotpink>main character energy, it came prepared 💅</hotpink>

### Compatible Tools

- **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_stlink`** — On-board: **Yes** · Default: **Yes**

---

## 🌈 Frameworks

- **Name** — **Description**

- **`framework_arduino`** — the <pink>Arduino Wiring-based Framework</pink> 💖 and it lets you write cross-platform software to control devices attached to a *wide* range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving "make literally anything blink" and we're obsessed. ✨

- **`framework_mbed`** — the <purple>mbed framework</purple>. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed 🔥. On top of RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries has been built on top of the SDK by the mbed Developer Community. no cap, that's a whole ecosystem. 🦋

- **`framework_stm32cube`** — the <cyan>STM32Cube embedded software libraries</cyan>, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls 📞; the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. lowkey the "I know what I'm doing" route and it *slays*. 💅

---

# 👑 ST Nucleo F303ZE

## 🌸 Contents

- ST Nucleo F303ZE
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🛠️ Hardware

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. like… she does it ALL. 😭💖

- **Microcontroller** — `STM32F303ZET6`
- **Frequency** — `72MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use `nucleo_f303ze` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f303ze] platform = ststm32 board = nucleo_f303ze


You can override default ST Nucleo F303ZE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f303ze.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:nucleo_f303ze] platform = ststm32 board = nucleo_f303ze

; change microcontroller board_build.mcu = stm32f303zet6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 🚀 Uploading

ST Nucleo F303ZE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`. ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f303ze] platform = ststm32 board = nucleo_f303ze

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. it's giving effortless. 💅

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F303ZE has **on-board debug probe** and **IS READY** for debugging. You don't need to use/buy external debug probe. 🫶 she comes prepared, periodt.

- **Compatible Tools** — `debugging_tool_blackmagic`
  - **On-board** — *(blank)*
  - **Default** — *(blank)*

…and the table just keeps going, hold that thought bestie 🎀

- **`debugging_tool_jlink`** — on-board: nope, default: nope
- **`debugging_tool_stlink`** — on-board: <green>Yes</green>, default: <green>Yes</green>

---

## ✨ Frameworks ✨

Okay bestie, here's the framework menu for this board — pick your vibe 💅

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <pink>obsessed, honestly</pink> 🎀
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <cyan>very demure, very optimized</cyan> ✨

---

## 🦋 ST Nucleo F334R8 🦋

### Contents 📖

- ST Nucleo F334R8
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>she's giving ✨main character MCU✨</rainbow>

- **Microcontroller** — `STM32F334R8T6`
- **Frequency** — `72MHz`
- **Flash** — `64KB`
- **RAM** — `16KB`
- **Vendor** — `ST`

---

### Configuration ⚙️

Please use `nucleo_f334r8` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f334r8] platform = ststm32 board = nucleo_f334r8


You can override default ST Nucleo F334R8 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f334r8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>customize away, bestie</purple> 💜

[env:nucleo_f334r8] platform = ststm32 board = nucleo_f334r8

; change microcontroller board_build.mcu = stm32f334r8t6

; change MCU frequency board_build.f_cpu = 72000000L


---

### Uploading 🚀

ST Nucleo F334R8 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f334r8] platform = ststm32 board = nucleo_f334r8

upload_protocol = stlink


---

### Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. <mint>no cap, one click</mint> ✨

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>do NOT skip the drivers, bestie 😭</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F334R8 has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. <green>she comes with the goods, periodt</green> 💅

Compatible Tools — On-board — Default:

- **`debugging_tool_blackmagic`** — on-board: nope, default: nope
- **`debugging_tool_jlink`** —

- **`debugging_tool_stlink`** — <green>Yes</green> · <green>Yes</green> <pink>💖</pink>

Last row of the debugging tools table, bestie — that's a wrap on it, and she's a <mint>double yes</mint> queen. 👑

---

# 🌸 Frameworks 🌸

Okay so here's the framework menu for this board, and honestly it's giving <hotpink>buffet</hotpink>. 🍓

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <cyan>✨</cyan>

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <blue>🔥</blue>

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <purple>🦋</purple>

---

# 🎀 ST Nucleo F401RE 🎀

## Contents

Not me making a lil table of contents like a <yellow>main character</yellow> — okay here's what's in this page, bestie:

- ST Nucleo F401RE
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## Hardware

Platform <lavender>`platform_ststm32`</lavender>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <pink>💅</pink>

And the specs, no cap:

- **Microcontroller** — `STM32F401RET6`
- **Frequency** — `84MHz`
- **Flash** — `512KB`
- **RAM** — `96KB`
- **Vendor** — `ST`

---

## Configuration

Please use <hotpink>`nucleo_f401re`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f401re] platform = ststm32 board = nucleo_f401re


You can override default ST Nucleo F401RE settings per build environment using <mint>`board_***`</mint> option, where `***` is a JSON object path from board manifest `nucleo_f401re.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>✨</cyan>

[env:nucleo_f401re] platform = ststm32 board = nucleo_f401re

; change microcontroller board_build.mcu = stm32f401ret6

; change MCU frequency board_build.f_cpu = 84000000L


---

## Uploading

ST Nucleo F401RE supports the next uploading protocols: <rainbow>🌈</rainbow>

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` <green>👑</green>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f401re] platform = ststm32 board = nucleo_f401re

upload_protocol = stlink


---

## Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <hotpink>💖</hotpink>

> **WARNING:** 🚨
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

okay so real talk, the **ST Nucleo F401RE** literally has an on-board debug probe and it IS READY for debugging 💅 you do <rainbow>not</rainbow> need to use or buy an external debug probe. like, it's built in, bestie, you're covered 🫶

here's the vibe for compatible tools:

- **`debugging_tool_blackmagic`** — on-board: (nada) · default: (nada)
- **`debugging_tool_jlink`** — on-board: (nada) · default: (nada)
- **`debugging_tool_stlink`** — on-board: **Yes** · default: **Yes** ✨

---

### Frameworks 🦋

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a whole wide range of Arduino boards and make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving art-school-meets-electronics 🎨

- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS), a vendor-independent hardware abstraction layer for the Cortex-M processor series that also specifies debugger interfaces. CMSIS hands you consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. it simplifies software re-use, lowers the learning curve for new microcontroller devs, and cuts time-to-market for devices. no cap, it's the whole foundation 🔥

- **`framework_mbed`** — the mbed framework. the mbed SDK was designed to give you enough hardware abstraction to stay intuitive and concise, yet be powerful enough to build complex projects. it sits on the low-level ARM CMSIS APIs so you can code down to the metal if you need to. plus RTOS, USB and Networking libraries, and a cookbook of hundreds of reusable peripheral and module libraries built on top of the SDK by the mbed Developer Community. iconic community energy fr fr 👑

- **`framework_spl`** — the ST Standard Peripheral Library, a set of functions for handling the peripherals on the STM32 Cortex-M3 family. the whole point is to save the user (the new user especially) from having to deal directly with the registers. lowkey a lifesaver 😭

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert-oriented set of APIs designed for both performance and runtime efficiency. efficient queen behavior 💅

- **`framework_zephyr`** — the Zephyr Project, a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🛡️

---

## ST Nucleo F410RB 🌸

### Contents

- ST Nucleo F410RB
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. it offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. all of that at once?? slay ✨

- **Microcontroller** — `STM32F410RBT6`
- **Frequency** — `100MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — `ST`

### Configuration

please use `nucleo_f410rb` ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_f410rb] platform = ststm32 board = nucleo_f410rb


you can override the default ST Nucleo F410RB settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_f410rb.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. mix and match, bestie 🎀

[env:nucleo_f410rb] platform = ststm32 board = nucleo_f410rb

; change microcontroller board_build.mcu = stm32f410rbt6

; change MCU frequency board_build.f_cpu = 100000000L


### Uploading

ST Nucleo F410RB supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

default protocol is `stlink` 👑

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_f410rb] platform = ststm32 board = nucleo_f410rb

upload_protocol = stlink


### Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. no setup stress, just vibes 🧚

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on the compatible debug tool below for the further instructions and configuration information. don't skip this step, i'm begging 🙈

...bestie you can literally hop between <pink>`debugging_tools`</pink> using the `projectconf_debug_tool` option over in <purple>`projectconf`</purple>. it's giving ✨ customizable ✨

the <cyan>ST Nucleo F410RB</cyan> comes with an on-board debug probe and is <rainbow>READY</rainbow> for debugging — like, capital letters ready, no cap. you do <hotpink>NOT</hotpink> need to go use or buy an external debug probe, she's self-sufficient 💅

compatible tools vibe check:

- `debugging_tool_blackmagic` — not on-board, not the default
- `debugging_tool_jlink` — not on-board, not the default
- `debugging_tool_stlink` — on-board: <green>Yes</green>, default: <green>Yes</green> 👑

---

## 🦋 Frameworks 🦋

pick your fighter, both are iconic:

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. literally a whole community-built buffet of reusable goodies 🍓
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. lowkey built different for the experts 🔥

---

# ✨ ST Nucleo F411RE ✨

## 📚 Contents

- ST Nucleo F411RE

  - Hardware

  - Configuration

  - Uploading

  - Debugging

  - Frameworks

---

## 🛠️ Hardware 🛠️

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. it's giving powerful but also chill 🌈

the deets:

- Microcontroller: `STM32F411RET6`
- Frequency: `100MHz`
- Flash: `512KB`
- RAM: `128KB`
- Vendor: `ST`

---

## ⚙️ Configuration ⚙️

bestie pls use the `nucleo_f411re` ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_f411re] platform = ststm32 board = nucleo_f411re


you can override the default ST Nucleo F411RE settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_f411re.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. — customize her to your heart's content 💖

[env:nucleo_f411re] platform = ststm32 board = nucleo_f411re

; change microcontroller board_build.mcu = stm32f411ret6

; change MCU frequency board_build.f_cpu = 100000000L


---

## 🚀 Uploading 🚀

ST Nucleo F411RE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` — the main character of protocols, periodt 👑

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_f411re] platform = ststm32 board = nucleo_f411re

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. the way that it just... works?? obsessed ✨

> <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

you can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F411RE has on-board debug probe and IS READY for debugging. you don't need to use/buy external debug probe, she's got everything she needs 💅

compatible tools:

- `debugging_tool_blackmagic` — not on-board, not the default
- `debugging_tool_jlink` — not on-board, not the default
- `debugging_tool_stlink` — on-board: <green>Yes</green>, default: <green>Yes</green> 🫶

- **`framework_arduino`** — <pink>Arduino Wiring-based Framework</pink> lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. On top of that, in addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💅

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🛡️

---

# 🌸 ST Nucleo F412ZG 🌸

## 🎀 Contents 🎀

- ST Nucleo F412ZG
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>iconic behavior honestly</rainbow> 💖

- **Microcontroller** — `STM32F412ZGT6`
- **Frequency** — `100MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration ⚙️

Bestie, please use the <hotpink>`nucleo_f412zg`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_f412zg] platform = ststm32 board = nucleo_f412zg


You can override default ST Nucleo F412ZG settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f412zg.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:nucleo_f412zg] platform = ststm32 board = nucleo_f412zg

; change microcontroller board_build.mcu = stm32f412zgt6

; change MCU frequency board_build.f_cpu = 100000000L


---

## 🚀 Uploading 🚀

ST Nucleo F412ZG supports the next uploading protocols, and yes she eats every time:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` ⭐

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_f412zg] platform = ststm32 board = nucleo_f412zg

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`pio debug` — the "1-click" solution for debugging with a zero configuration. <pink>main character energy fr fr</pink> 💅

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F412ZG has on-board debug probe and **IS READY for debugging**. You don't need to use/buy external debug probe. 👑

- **`debugging_tool_blackmagic`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_jlink`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_stlink`** — On-board: <green>Yes</green>, Default: <green>Yes</green> 🫶

- **`framework_mbed`** — the mbed framework, and okay bestie this one is *a whole vibe*. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. And *then*, on top of all that: in addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. like. a whole community cooked for you. 💅

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. so basically HAL for when you want the friendly path and LL for when you're feeling spicy and expert-oriented ✨

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. tiny chip, huge main character energy, no cap. 🦋

---

# 🌸 ST Nucleo F413ZH 🌸

## 💖 Contents 💖

- ST Nucleo F413ZH
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

## 🎀 Hardware 🎀

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. literally all the things at once, obsessed.

The specs, because we love a spec sheet moment:

- **Microcontroller**: `STM32F413ZHT6`
- **Frequency**: `100MHz`
- **Flash**: `512KB`
- **RAM**: `128KB`
- **Vendor**: `ST`

## ⭐ Configuration ⭐

Please use `nucleo_f413zh` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f413zh] platform = ststm32 board = nucleo_f413zh


You can override default ST Nucleo F413ZH settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f413zh.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. so yes bestie you can absolutely go in there and change things 💅

[env:nucleo_f413zh] platform = ststm32 board = nucleo_f413zh

; change microcontroller board_build.mcu = stm32f413zht6

; change MCU frequency board_build.f_cpu = 100000000L


## 🌈 Uploading 🌈

ST Nucleo F413ZH supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f413zh] platform = ststm32 board = nucleo_f413zh

upload_protocol = stlink


## 👑 Debugging 👑

`piodebug` - "1-click" solution for debugging with a zero configuration. one click. zero config. we love a low-effort queen. 💅

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F413ZH has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. it's giving self-sufficient. 🫶

Compatible Tools:

- **`debugging_tool_blackmagic`** — On-board: *(nothing marked)*, Default: *(nothing marked)*
- **`debugging_tool_jlink`** — On-board: *(nothing marked)*, Default: *(nothing marked)*
- **`debugging_tool_stlink`** — On-board: **Yes**, Default: **Yes** 🔥

so `debugging_tool_stlink` is the one carrying this whole table fr fr. 💜

## ✨ Frameworks ✨

Okay bestie, here's the framework menu for this board — three of them, all iconic in their own way 🎀

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <purple>like… down to the metal?? the range 💅</purple>

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <cyan>expert oriented, so… not for the faint of heart, noted 📝</cyan>

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <mint>safety AND security?? she's responsible, we love that for her 🫶</mint>

---

# 🌸 ST Nucleo F429ZI 🌸

## 📖 Contents

- ST Nucleo F429ZI
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <blue>new degrees of freedom fr fr, she's giving main character energy 👑</blue>

Here's the spec sheet, and bestie, the numbers are <hotpink>serving</hotpink>:

- **Microcontroller** — `STM32F429ZIT6`
- **Frequency** — `180MHz`
- **Flash** — `2MB`
- **RAM** — `256KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use `nucleo_f429zi` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f429zi] platform = ststm32 board = nucleo_f429zi


You can override default ST Nucleo F429ZI settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f429zi.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <lavender>so like, `***` is a little wildcard situation, iykyk ✨</lavender>

[env:nucleo_f429zi] platform = ststm32 board = nucleo_f429zi

; change microcontroller board_build.mcu = stm32f429zit6

; change MCU frequency board_build.f_cpu = 180000000L


> <yellow>heads up: those `;` lines are comments, so don't go deleting the semicolons and then wondering why nothing works 😭</yellow>

---

## 🚀 Uploading

ST Nucleo F429ZI supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f429zi] platform = ststm32 board = nucleo_f429zi

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <rainbow>one click?? zero config?? not me being obsessed 🎀</rainbow>

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>no cap, do this part or you'll be fighting your setup all night 💀</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F429ZI has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <green>she comes with her own probe, we love a self-sufficient queen 👑✨</green>

### 🔍 Compatible Tools

- **`debugging_tool_blackmagic`** — *On-board*: (blank in the table), *Default*: (blank in the table)

- **`debugging_tool_jlink`** — okay so this row is just sitting there with its other columns totally blank in the source, no cap 💀 it's listed, that's the whole vibe
- **`debugging_tool_stlink`** — **Yes** / **Yes** ✨ bestie said *yes and yes*, periodt

---

## 🌈 Frameworks

So like, here's your framework menu — pick your fighter 💅

- **`framework_arduino`** — the <pink>Arduino Wiring-based Framework</pink>, which lets you write cross-platform software to control stuff hooked up to a whole wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences 🎨✨
- **`framework_mbed`** — the <purple>mbed framework</purple>. The mbed SDK was designed to give you enough hardware abstraction to be intuitive and concise, but still powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, so you can code down to the metal if you need to 🛠️. And on top of RTOS, USB and Networking libraries, the mbed Developer Community has built a cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. it's giving ecosystem 💖
- **`framework_stm32cube`** — the <mint>STM32Cube</mint> embedded software libraries, including: the **HAL** hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the **Low-Layer (LL) APIs**, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🔥
- **`framework_zephyr`** — the <cyan>Zephyr Project</cyan>, a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind 👑

---

# 🦋 ST Nucleo F439ZI 🦋

okay bestie, new page drop, and this one is *so* cute 🎀

## 🌸 Contents

- ST Nucleo F439ZI
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

## 💖 Hardware

Platform `platform_ststm32`: the <peach>STM32</peach> family of 32-bit Flash MCUs is based on the ARM Cortex-M processor, and it was designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. literally all of it at once ✨

- **Microcontroller** — `STM32F439ZIT6`
- **Frequency** — `180MHz`
- **Flash** — `2MB`
- **RAM** — `256KB`
- **Vendor** — `ST`

## 🎀 Configuration

Use the `nucleo_f439zi` ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_f439zi] platform = ststm32 board = nucleo_f439zi


You can override the default ST Nucleo F439ZI settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_f439zi.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. iykyk 💅

[env:nucleo_f439zi] platform = ststm32 board = nucleo_f439zi

; change microcontroller board_build.mcu = stm32f439zit6

; change MCU frequency board_build.f_cpu = 180000000L


## ⭐ Uploading

ST Nucleo F439ZI supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_f439zi] platform = ststm32 board = nucleo_f439zi

upload_protocol = stlink


<cyan>`piodebug`</cyan> is giving <pink>"1-click"</pink> solution for debugging with a zero configuration. 🎀

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the <yellow>`projectconf_debug_tool`</yellow> option in `projectconf`. 💅

ST Nucleo F439ZI has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. no cap, she's born ready 👑

**Compatible Tools** for the ST Nucleo F439ZI:

- **`debugging_tool_blackmagic`** — On-board: *(empty)*, Default: *(empty)*
- **`debugging_tool_jlink`** — On-board: *(empty)*, Default: *(empty)*
- **`debugging_tool_stlink`** — On-board: **Yes**, Default: **Yes** ✨

---

## <purple>Frameworks</purple> 💖

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🦋

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

# <rainbow>ST Nucleo F446RE</rainbow> 🌸

## <cyan>Contents</cyan>

- ST Nucleo F446RE
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

## <purple>Hardware</purple> 🧚

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💜

- **Microcontroller**: `STM32F446RET6`
- **Frequency**: `180MHz`
- **Flash**: `512KB`
- **RAM**: `128KB`
- **Vendor**: `ST`

## <yellow>Configuration</yellow> ✨

Please use `nucleo_f446re` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f446re] platform = ststm32 board = nucleo_f446re


You can override default ST Nucleo F446RE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f446re.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nucleo_f446re] platform = ststm32 board = nucleo_f446re

; change microcontroller board_build.mcu = stm32f446ret6

; change MCU frequency board_build.f_cpu = 180000000L


## <mint>Uploading</mint> 🎀

ST Nucleo F446RE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f446re] platform = ststm32 board = nucleo_f446re

upload_protocol = stlink


## <hotpink>Debugging</hotpink> 🦋

`piodebug` — <pink>"1-click"</pink> solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

So like, you can swap between your `debugging_tools` whenever you want using the `projectconf_debug_tool` option inside `projectconf`. <pink>mix and match, bestie</pink> 💅

And here's the ✨iconic✨ part: the <hotpink>ST Nucleo F446RE</hotpink> comes with an on-board debug probe and is <green>**READY for debugging**</green> straight out of the box. You do <purple>NOT</purple> need to use or buy an external debug probe. <rainbow>it's giving self-sufficient queen energy</rainbow> 👑✨

Here's the compatible tools rundown, no cap:

- **`debugging_tool_blackmagic`** — on-board: nope 🚫 — default: nope 🚫
- **`debugging_tool_jlink`** — on-board: nope 🚫 — default: nope 🚫
- **`debugging_tool_stlink`** — on-board: **Yes** ✅ — default: **Yes** ✅

So `debugging_tool_stlink` is lowkey the only one shipping on-board *and* it's already the default. <cyan>main character energy fr fr</cyan> 🦋

> ngl bestie, if you've got this board you're already set — no extra hardware, no shopping spree, just vibes and `stlink` 🌸

## ✨ Frameworks ✨

okay bestie, here's the lineup of frameworks this platform brings to the party — each one's got its own whole personality 💅

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

## 🌈 ST Nucleo F446ZE 🌈

### 📋 Contents

- ST Nucleo F446ZE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

<pink>Platform</pink> `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

and here's the little spec sheet, bestie, look at her go 🦋

- **Microcontroller** — `STM32F446ZET6`
- **Frequency** — `180MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration

Please use `nucleo_f446ze` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f446ze] platform = ststm32 board = nucleo_f446ze


You can override default ST Nucleo F446ZE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f446ze.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nucleo_f446ze] platform = ststm32 board = nucleo_f446ze

; change microcontroller board_build.mcu = stm32f446zet6

; change MCU frequency board_build.f_cpu = 180000000L


---

### 🚀 Uploading

ST Nucleo F446ZE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f446ze] platform = ststm32 board = nucleo_f446ze

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration.

> **WARNING:**
>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>like, do NOT skip this step bestie, it will not work and you will be sad 😭</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F446ZE has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. 👑

and now the compatible tools table starts, and it's giving

- **Compatible Tools** | **On-board** | **Default**

- **`debugging_tool_blackmagic`** — and the support columns next to it? <cyan>blank</cyan>. like, *nothing*. not a yes, not a no, just vibes 💀
- **`debugging_tool_jlink`** — same story bestie, the columns are empty, we keep it moving 🫶
- **`debugging_tool_stlink`** — <mint>Yes</mint> / <mint>Yes</mint> ✨ this one showed up and showed OUT, fully supported on both counts 👑

---

## <rainbow>Frameworks</rainbow> 🧚

okay so here's the whole lineup of frameworks, and what each one actually *is*:

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. <purple>basically it's the friend that introduces everyone to everyone at the party</purple> 🎀
- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <hotpink>intuitive AND powerful?? it's giving main character energy fr fr</hotpink> 💅
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <blue>portability + performance, we love a multitasker</blue> ✨

---

## <rainbow>ST Nucleo F722ZE</rainbow> 🦋

### Contents 📋

- ST Nucleo F722ZE
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <mint>low-power AND high performance?? obsessed</mint> 💖

and here's the spec sheet bestie, look at her:

- **Microcontroller** — `STM32F722ZET6`
- **Frequency** — `216MHz`
- **Flash** — `512KB`
- **RAM** — `256KB`
- **Vendor** — `ST`

<yellow>216MHz is NOT playing around</yellow> 🔥

---

### Configuration ⚙️

Please use `nucleo_f722ze` ID for `projectconf_env_board` option in projectconf:

[env:nucleo_f722ze] platform = ststm32 board = nucleo_f722ze


You can override default ST Nucleo F722ZE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f722ze.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nucleo_f722ze] platform = ststm32 board = nucleo_f722ze

; change microcontroller board_build.mcu = stm32f722zet6

; change MCU frequency board_build.f_cpu = 216000000L


<lavender>the `L` at the end of the frequency is doing heavy lifting, don't touch it, don't delete it, respect her</lavender> 🙈

---

### Uploading 🚀

ST Nucleo F722ZE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f722ze] platform = ststm32 board = nucleo_f722ze

upload_protocol = stlink


### 💅 Debugging

okay bestie, let's get into <purple>`piodebug`</purple> — it's literally a <rainbow>"1-click" solution</rainbow> for debugging with a zero configuration. no cap, it does NOT get easier than this. ✨

> <red>**WARNING:**</red> 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. bestie, do NOT skip this or you'll be sad. 💀

You can switch between debugging <cyan>`debugging_tools`</cyan> using <cyan>`projectconf_debug_tool`</cyan> option in <cyan>`projectconf`</cyan>. easy peasy. 🎀

<green>ST Nucleo F722ZE</green> has on-board debug probe and <hotpink>**IS READY**</hotpink> for debugging. You don't need to use/buy external debug probe. she's self-sufficient, periodt. 👑

**Compatible Tools:**

- <purple>`debugging_tool_blackmagic`</purple> — On-board: *(none)*, Default: *(none)*
- <purple>`debugging_tool_jlink`</purple> — On-board: *(none)*, Default: *(none)*
- <purple>`debugging_tool_stlink`</purple> — On-board: **Yes**, Default: **Yes**

---

### ✨ Frameworks ✨

- <mint>**`framework_stm32cube`**</mint> — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. it's giving full ecosystem energy and we're <hotpink>obsessed</hotpink>. 🌸

---

## 🦋 ST Nucleo F746ZG 🦋

### 📋 Contents 📋

- ST Nucleo F746ZG
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform <cyan>`platform_ststm32`</cyan>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. iconic. 🔥

**Microcontroller specs:**

- Microcontroller — <yellow>`STM32F746ZGT6`</yellow>
- Frequency — <yellow>`216MHz`</yellow>
- Flash — <yellow>`1MB`</yellow>
- RAM — <yellow>`320KB`</yellow>
- Vendor — <yellow>`ST`</yellow>

### ⚙️ Configuration

Please use <cyan>`nucleo_f746zg`</cyan> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:nucleo_f746zg] platform = ststm32 board = nucleo_f746zg


You can override default ST Nucleo F746ZG settings per build environment using <cyan>`board_***`</cyan> option, where <cyan>`***`</cyan> is a JSON object path from board manifest <cyan>`nucleo_f746zg.json`</cyan>. For example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc.

[env:nucleo_f746zg] platform = ststm32 board = nucleo_f746zg

; change microcontroller board_build.mcu = stm32f746zgt6

; change MCU frequency board_build.f_cpu = 216000000L


### 📤 Uploading

ST Nucleo F746ZG supports the next uploading protocols:

- blackmagic
- jlink
- mbed
- stlink

Default protocol is <cyan>`stlink`</cyan>

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:nucleo_f746zg] platform = ststm32 board = nucleo_f746zg

upload_protocol = stlink


### 💅 Debugging

<purple>`piodebug`</purple> - "1-click" solution for debugging with a zero configuration.

> <red>**WARNING:**</red> 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <cyan>`debugging_tools`</cyan> using <cyan>`projectconf_debug_tool`</cyan> option in <cyan>`projectconf`</cyan>.

ST Nucleo F746ZG has on-board debug probe and <hotpink>**IS READY**</hotpink> for debugging. You don't need to use/buy external debug probe.

**Compatible Tools:**

- <purple>`debugging_tool_blackmagic`</purple> — On-board: *(none)*, Default: *(none)*

- **`debugging_tool_jlink`** — cells are just... blank here, bestie 🙈 nothing filled in, no vibe, no data
- **`debugging_tool_stlink`** — `Yes` and `Yes` ✅ she showed up, she delivered, we love to see it 💅

and that's the rest of that grid, we're done, moving on 🫶

---

## 🌈 Frameworks 🌈

ok so here's the tea on which frameworks this board plays nice with — Name on the left, whole entire Description on the right, no skimping 💖

- **`framework_mbed`** — <pink>The mbed framework.</pink> The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. ✨ iconic behaviour honestly

- **`framework_stm32cube`** — <mint>STM32Cube embedded software libraries,</mint> including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

- **`framework_zephyr`** — <lavender>The Zephyr Project</lavender> is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 👑

---

# 👑 ST Nucleo F756ZG 👑

## 🎀 Contents 🎀

- ST Nucleo F756ZG
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

## 🔧 Hardware 🔧

`platform_ststm32`: <cyan>The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor</cyan> is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. no cap, that's the whole flex 💪

and here's the spec sheet, look at her go:

- **Microcontroller** — `STM32F756ZG`
- **Frequency** — `216MHz`
- **Flash** — `1MB`
- **RAM** — `320KB`
- **Vendor** — `ST`

## ⚙️ Configuration ⚙️

Please use `nucleo_f756zg` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f756zg] platform = ststm32 board = nucleo_f756zg


You can override default ST Nucleo F756ZG settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f756zg.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. yesss you can customise her, she's flexible like that 🦋

[env:nucleo_f756zg] platform = ststm32 board = nucleo_f756zg

; change microcontroller board_build.mcu = stm32f756zg

; change MCU frequency board_build.f_cpu = 216000000L


## 🚀 Uploading 🚀

ST Nucleo F756ZG supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` — that's the one she reaches for automatically, periodt 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f756zg] platform = ststm32 board = nucleo_f756zg

upload_protocol = stlink


## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. literally one click. obsessed. 🎀

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (fr fr, don't skip this step, bestie, the drivers are not optional 😭)

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

---

ST Nucleo F756ZG has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

<cyan>okay so like</cyan>, this board literally ships with its own debug probe?? <pink>no cap</pink> — you do <red>NOT</red> have to go out and buy some external probe, it's already baked in. <rainbow>self-sufficient queen energy</rainbow> 👑✨

Here's the compatible-tools vibe check:

- **`debugging_tool_blackmagic`** — on-board: <red>no</red> · default: <red>no</red>
- **`debugging_tool_jlink`** — on-board: <red>no</red> · default: <red>no</red>
- **`debugging_tool_stlink`** — on-board: <green>Yes</green> · default: <green>Yes</green> 💖

---

## ✨ Frameworks ✨

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <pink>so many libraries bestie, it's giving buffet 🍓</pink>

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <cyan>portability era fr fr 🦋</cyan>

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <purple>safety + security, the way that she cares about you 😭💜</purple>

---

## ST Nucleo F767ZI

### Contents

- ST Nucleo F767ZI
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

<yellow>the specs, bestie:</yellow>

- **Microcontroller**: `STM32F767ZIT6`
- **Frequency**: `216MHz`
- **Flash**: `2MB`
- **RAM**: `512KB`
- **Vendor**: `ST`

<green>2MB of flash?? she's got room for DAYS 💅</green>

### Configuration

Please use `nucleo_f767zi` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_f767zi] platform = ststm32 board = nucleo_f767zi


You can override default ST Nucleo F767ZI settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_f767zi.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nucleo_f767zi] platform = ststm32 board = nucleo_f767zi

; change microcontroller board_build.mcu = stm32f767zit6

; change MCU frequency board_build.f_cpu = 216000000L


<hotpink>customize her however you want, she's flexible like that ✨</hotpink>

### Uploading

ST Nucleo F767ZI supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_f767zi] platform = ststm32 board = nucleo_f767zi

upload_protocol = stlink


<cyan>four whole protocols, pick your fighter 🎀</cyan>

### Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration.

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

<red>do NOT skip the drivers bestie, it will not work and you will be sad 😭</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo F767ZI has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

<rainbow>on-board probe again?? we stay winning 👑</rainbow>

Here's the compatible-tools rundown:

- **`debugging_tool_blackmagic`** — on-board: <red>no</red> · default: <red>no</red>
- **`debugging_tool_jlink`** — on-board: <red>no</red> · default: <red>no</red>
- **`debugging_tool_stlink`** — on-board: <green>Yes</green> · default: <green>Yes</green> 💖

## <rainbow>Frameworks</rainbow> 🧚✨

okay bestie, here's the framework menu, and every single one of these is a whole vibe:

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it literally lets you write <pink>cross-platform software</pink> to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving art-school-girlie-meets-electronics 💖
- **`framework_mbed`** — the mbed framework. the mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. it's built on the low-level <purple>ARM CMSIS APIs</purple>, allowing you to code <hotpink>down to the metal</hotpink> if needed. and on top of RTOS, USB and Networking libraries, the mbed Developer Community has built a cookbook of <cyan>hundreds</cyan> of reusable peripheral and module libraries on top of the SDK. no cap, that's a lot of libraries 🔥
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. expert oriented?? okay main character energy 💅
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. safety AND security, she's responsible 🌸

---

## <rainbow>ST Nucleo H743ZI</rainbow> 👑

### Contents 🎀

- ST Nucleo H743ZI
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### Hardware 🦋

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. she does it all, fr fr ✨

- **Microcontroller** — `STM32H743ZIT6`
- **Frequency** — `400MHz`
- **Flash** — `2MB`
- **RAM** — `512KB`
- **Vendor** — `ST`

---

### Configuration 🛠️

bestie, please use the `nucleo_h743zi` ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_h743zi] platform = ststm32 board = nucleo_h743zi


you can override the default ST Nucleo H743ZI settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_h743zi.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. it's giving customization 💅

[env:nucleo_h743zi] platform = ststm32 board = nucleo_h743zi

; change microcontroller board_build.mcu = stm32h743zit6

; change MCU frequency board_build.f_cpu = 400000000L


---

### Uploading 🚀

ST Nucleo H743ZI supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is <mint>`stlink`</mint>

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_h743zi] platform = ststm32 board = nucleo_h743zi

upload_protocol = stlink


---

### Debugging 🐛💖

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic behaviour, honestly 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>don't skip this step bestie, i'm begging</red> 😭

you can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Nucleo H743ZI has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. she comes with her own accessories, periodt 💅

- **Compatible Tools** — `debugging_tool_blackmagic`; On-board: *(blank)*; Default: *(blank)*
- **Compatible Tools** — `debugging_tool_jlink`; On-board: *(blank)*; Default: *(blank)*
- **Compatible Tools** — `debugging_tool_stlink`; On-board: `Yes`; Default: `Yes` ⭐

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

## <pink>ST Nucleo L011K4</pink> 🦋

### <purple>Contents</purple>

- ST Nucleo L011K4
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### <mint>Hardware</mint> 💅

Platform <cyan>`platform_ststm32`</cyan>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

okay bestie, here's the spec sheet, no cap:

- **Microcontroller** — `STM32L011K4T6`
- **Frequency** — `32MHz`
- **Flash** — `16KB`
- **RAM** — `2KB`
- **Vendor** — `ST`

---

### <peach>Configuration</peach> 🎀

Please use `nucleo_l011k4` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_l011k4] platform = ststm32 board = nucleo_l011k4


You can override default ST Nucleo L011K4 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_l011k4.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nucleo_l011k4] platform = ststm32 board = nucleo_l011k4

; change microcontroller board_build.mcu = stm32l011k4t6

; change MCU frequency board_build.f_cpu = 32000000L


---

### <lavender>Uploading</lavender> ✨

ST Nucleo L011K4 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_l011k4] platform = ststm32 board = nucleo_l011k4

upload_protocol = stlink


---

### <cyan>Debugging</cyan> 🫶

`piodebug` - "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L011K4 has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. periodt 💅

Compatible Tools:

- `debugging_tool_blackmagic` — On-board: *(no)* — Default: *(no)*
- `debugging_tool_jlink` — On-board: *(no)* — Default: *(no)*
- `debugging_tool_stlink` — On-board: **Yes** — Default: **Yes**

---

### <green>Frameworks</green> 🌈

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

## <hotpink>ST Nucleo L031K6</hotpink> 👑

### <purple>Contents</purple>

- ST Nucleo L031K6
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🧩 Hardware

<pink>Platform <code>platform_ststm32</code></pink>: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>iconic range honestly</rainbow> ✨

So here's the tea on this lil cutie 🫶:

- **Microcontroller**: `STM32L031K6T6`
- **Frequency**: `32MHz`
- **Flash**: `32KB`
- **RAM**: `8KB`
- **Vendor**: `ST`

---

### ⚙️ Configuration

Bestie, please use the <hotpink>`nucleo_l031k6`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_l031k6] platform = ststm32 board = nucleo_l031k6


You can override the default ST Nucleo L031K6 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_l031k6.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>iykyk</purple> 💅

[env:nucleo_l031k6] platform = ststm32 board = nucleo_l031k6

; change microcontroller board_build.mcu = stm32l031k6t6

; change MCU frequency board_build.f_cpu = 32000000L


---

### 🚀 Uploading

ST Nucleo L031K6 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` <mint>(the default default, we love her)</mint>

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_l031k6] platform = ststm32 board = nucleo_l031k6

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <cyan>no setup arc, just vibes</cyan> 🦋

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L031K6 has an on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy an external debug probe. <green>built-in bestie behavior, we stan</green> 👑

- `debugging_tool_blackmagic` — On-board: *(nothing)* · Default: *(nothing)*
- `debugging_tool_jlink` — On-board: *(nothing)* · Default: *(nothing)*
- `debugging_tool_stlink` — On-board: **Yes** · Default: **Yes**

---

### 🧚 Frameworks

- `framework_arduino` — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <peach>the creative-coding girlie of frameworks fr fr</peach> 🎀
- `framework_mbed` — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <lavender>down to the metal, periodt</lavender> 💜
- `framework_stm32cube` — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <yellow>lightweight + optimized = the moment</yellow> ⭐

---

## 🌸 ST Nucleo L053R8

### 📑 Contents

- ST Nucleo L053R8
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🧩 Hardware

<pink>Platform <code>platform_ststm32</code></pink>: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <rainbow>say it again for the people in the back</rainbow> ✨

The specs, bestie:

- **Microcontroller**: `STM32L053R8T6`
- **Frequency**: `32MHz`
- **Flash**: `64KB`
- **RAM**: `8KB`
- **Vendor**: `ST`

---

### ⚙️ Configuration

Please use the <hotpink>`nucleo_l053r8`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_l053r8] platform = ststm32 board = nucleo_l053r8


You can override the default ST Nucleo L053R8 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_l053r8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <purple>same energy, different board</purple> 💅

[env:nucleo_l053r8] platform = ststm32 board = nucleo_l053r8

; change microcontroller board_build.mcu = stm32l053r8t6

; change MCU frequency board_build.f_cpu = 32000000L


---

### 🚀 Uploading

ST Nucleo L053R8 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` <mint>her again, consistent queen</mint> 💖

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_l053r8] platform = ststm32 board = nucleo_l053r8

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <cyan>zero config, maximum slay</cyan> 🦋

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>ST Nucleo L053R8</pink> has an on-board debug probe and it <rainbow>IS READY for debugging</rainbow>. 💅 Bestie, you do <purple>NOT</purple> need to use or buy an external debug probe. She comes ready. ✨

Here's the compatible tools sitch 🎀:

- **`debugging_tool_blackmagic`** — on-board? nope. default? nope.
- **`debugging_tool_jlink`** — on-board? nope. default? nope.
- **`debugging_tool_stlink`** — on-board? <mint>Yes</mint>. default? <mint>Yes</mint>. 👑

---

## ✨ Frameworks ✨

The vibes available on this board, fr fr:

- **`framework_arduino`** — the Arduino Wiring-based Framework, and the way it lets you write cross-platform software to control devices attached to a wide range of Arduino boards 🦋 so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. iconic.
- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, which lets you code down to the metal if you need to. On top of RTOS, USB and Networking libraries, the mbed Developer Community has built a whole cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. 💜
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer (which enables portability between different STM32 devices via standardized API calls), plus the Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥
- **`framework_zephyr`** — the Zephyr Project, a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🌸

---

## 🌈 ST Nucleo L073RZ 🌈

### 🎀 Contents 🎀

- ST Nucleo L073RZ
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### ⭐ Hardware ⭐

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. no cap. 💖

- **Microcontroller** — `STM32L073RZ`
- **Frequency** — `32MHz`
- **Flash** — `192KB`
- **RAM** — `20KB`
- **Vendor** — `ST`

### 💜 Configuration 💜

Please use the `nucleo_l073rz` ID for the `projectconf_env_board` option in `projectconf`, bestie:

[env:nucleo_l073rz] platform = ststm32 board = nucleo_l073rz


You can override the default ST Nucleo L073RZ settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_l073rz.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:nucleo_l073rz] platform = ststm32 board = nucleo_l073rz

; change microcontroller board_build.mcu = stm32l073rz

; change MCU frequency board_build.f_cpu = 32000000L


### 🦋 Uploading 🦋

ST Nucleo L073RZ supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`. 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_l073rz] platform = ststm32 board = nucleo_l073rz

upload_protocol = stlink


### 👑 Debugging 👑

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L073RZ has an on-board debug probe and <rainbow>IS READY for debugging</rainbow>. You don't need to use or buy an external debug probe. periodt. 💖

- **`debugging_tool_blackmagic`** — on-board? nope. default? nope.
- **`debugging_tool_jlink`** — on-board? nope. default? nope.
- **`debugging_tool_stlink`** — on-board? <mint>Yes</mint>. default? <mint>Yes</mint>. 👑

### ✨ Frameworks ✨

ok bestie here's the framework menu, and every single one of these is a whole vibe 💖

- **`framework_arduino`** — Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving artsy AND functional, no cap 🎨
- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. literally code *down to the metal*, iconic 💅
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. expert-oriented fr fr, this one is for the girlies who read datasheets for fun 📚
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. tiny device, big main character energy 🦋

---

## 🌸 ST Nucleo L152RE 🌸

### 💖 Contents 💖

- ST Nucleo L152RE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. okay that's a LOT of slay in one sentence and I'm obsessed 🫶

- **Microcontroller** — `STM32L152RET6`
- **Frequency** — `32MHz`
- **Flash** — `512KB`
- **RAM** — `80KB`
- **Vendor** — `ST`

---

### ⚙️ Configuration ⚙️

Please use `nucleo_l152re` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_l152re] platform = ststm32 board = nucleo_l152re


You can override default ST Nucleo L152RE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_l152re.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. yes bestie you can just. rewrite the defaults. the power 💅

[env:nucleo_l152re] platform = ststm32 board = nucleo_l152re

; change microcontroller board_build.mcu = stm32l152ret6

; change MCU frequency board_build.f_cpu = 32000000L


---

### 🚀 Uploading 🚀

ST Nucleo L152RE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_l152re] platform = ststm32 board = nucleo_l152re

upload_protocol = stlink


---

### 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. one click and you're in, no cap 😭

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging` `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L152RE has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. bestie the board comes pre-loaded with the good stuff, we love to see it 💖

- **`debugging_tool_blackmagic`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_jlink`** — On-board: *(none)*, Default: *(none)*
- **`debugging_tool_stlink`** — On-board: Yes, Default: Yes 👑

so yeah, `stlink` ate and left no crumbs here 🎀

<pink>frameworks</pink> continuing, bestie — here's the rest of the lineup:

- **`framework_arduino`** — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, which means you can code down to the metal if you need to. On top of that you get RTOS, USB and Networking libraries, plus a cookbook of hundreds of reusable peripheral and module libraries that the mbed Developer Community built on top of the SDK. 🧚
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 💅

---

# 👑 ST Nucleo L412KB 👑

## 📋 Contents

- ST Nucleo L412KB
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

<purple>Platform</purple> `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

- **Microcontroller**: `STM32L412KBU6`
- **Frequency**: `80MHz`
- **Flash**: `128KB`
- **RAM**: `40KB`
- **Vendor**: `ST`

## ⚙️ Configuration

Bestie, pls use the `nucleo_l412kb` ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_l412kb] platform = ststm32 board = nucleo_l412kb


You can override the default ST Nucleo L412KB settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_l412kb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:nucleo_l412kb] platform = ststm32 board = nucleo_l412kb

; change microcontroller board_build.mcu = stm32l412kbu6

; change MCU frequency board_build.f_cpu = 80000000L


## 🚀 Uploading

ST Nucleo L412KB supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 💖

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_l412kb] platform = ststm32 board = nucleo_l412kb

upload_protocol = stlink


## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. 🔥

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L412KB has an on-board debug probe and **IS READY** for debugging. You don't need to use/buy an external debug probe. periodt. 🫶

- **`debugging_tool_blackmagic`** — on-board: *(nothing)* · default: *(nothing)*
- **`debugging_tool_jlink`** — on-board: *(nothing)* · default: *(nothing)*
- **`debugging_tool_stlink`** — on-board: **Yes** · default: **Yes** ✨

## 🦋 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework. It lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

# 🌸 ST Nucleo L432KC 🌸

## 📋 Contents

- ST Nucleo L432KC
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### ✨ Hardware ✨

<rainbow>okay bestie listen</rainbow> — this one runs on <pink>`platform_ststm32`</pink>, and the platform itself is the STM32 family of 32-bit Flash MCUs built on the ARM Cortex-M processor. It was literally designed to hand MCU users brand new degrees of freedom, no cap. It gives you a 32-bit product range that pulls together <purple>very high performance</purple>, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development. it's giving *everything* 💅

Here's the spec sheet for this icon:

- **Microcontroller** — `STM32L432KCU6`
- **Frequency** — `80MHz`
- **Flash** — `256KB`
- **RAM** — `64KB`
- **Vendor** — `ST`

---

### 💖 Configuration 💖

bestie, use the <hotpink>`nucleo_l432kc`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_l432kc] platform = ststm32 board = nucleo_l432kc


You can override the default ST Nucleo L432KC settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_l432kc.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. — you get it 🫶

[env:nucleo_l432kc] platform = ststm32 board = nucleo_l432kc

; change microcontroller board_build.mcu = stm32l432kcu6

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🔥 Uploading 🔥

ST Nucleo L432KC supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_l432kc] platform = ststm32 board = nucleo_l432kc

upload_protocol = stlink


---

### 🦋 Debugging 🦋

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed honestly.

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L432KC has an on-board debug probe and <green>IS READY</green> for debugging. You don't need to use/buy an external debug probe. main character energy fr fr 👑

- **`debugging_tool_blackmagic`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: `Yes` · Default: `Yes`

---

### 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

## 🌸 ST Nucleo L433RC-P 🌸

### Contents

1. ST Nucleo L433RC-P
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### ✨ Hardware ✨

<rainbow>okay bestie listen</rainbow> — this one runs on <pink>`platform_ststm32`</pink>, and the platform itself is the STM32 family of 32-bit Flash MCUs built on the ARM Cortex-M processor. It was literally designed to hand MCU users brand new degrees of freedom, no cap. It gives you a 32-bit product range that pulls together <purple>very high performance</purple>, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development. 💜

Here's the spec sheet for this icon:

- **Microcontroller** — `STM32L433RC`
- **Frequency** — `80MHz`
- **Flash** — `256KB`
- **RAM** — `64KB`
- **Vendor** — `ST`

---

### 💖 Configuration 💖

bestie, use the <hotpink>`nucleo_l433rc_p`</hotpink> ID for the `projectconf_env_board` option in `projectconf`:

[env:nucleo_l433rc_p] platform = ststm32 board = nucleo_l433rc_p


You can override the default ST Nucleo L433RC-P settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_l433rc_p.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:nucleo_l433rc_p] platform = ststm32 board = nucleo_l433rc_p

; change microcontroller board_build.mcu = stm32l433rc

; change MCU frequency board_build.f_cpu = 80000000L


---

### 🔥 Uploading 🔥

ST Nucleo L433RC-P supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_l433rc_p] platform = ststm32 board = nucleo_l433rc_p

upload_protocol = stlink


### Debugging 🐛💖

<cyan>`piodebug`</cyan> — bestie, this is the "1-click" solution for debugging with a **zero configuration**. literally zero. you click, it debugs, we move on. 💅

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (yes, drivers first, vibes second, that's the order 🫶)

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L433RC-P has an **on-board debug probe** and **IS READY** for debugging. You don't need to use/buy an external debug probe. it's giving self-sufficient queen energy 👑

┌───────────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_blackmagic │ │ │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_jlink │ │ │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_stlink │ Yes │ Yes │ └───────────────────────────┴──────────┴─────────┘


### Frameworks 🌈✨

┌─────────────────────┬────────────────────────────┐ │ Name │ Description │ ├─────────────────────┼────────────────────────────┤ │ framework_mbed │ The mbed framework The │ │ │ mbed SDK has been designed │ │ │ to provide enough hardware │ │ │ abstraction to be │ │ │ intuitive and concise, yet │ │ │ powerful enough to build │ │ │ complex projects. It is │ │ │ built on the low-level ARM │ │ │ CMSIS APIs, allowing you │ │ │ to code down to the metal │ │ │ if needed. In addition to │ │ │ RTOS, USB and Networking │ │ │ libraries, a cookbook of │ │ │ hundreds of reusable │ │ │ peripheral and module │ │ │ libraries have been built │ │ │ on top of the SDK by the │ │ │ mbed Developer Community. │ ├─────────────────────┼────────────────────────────┤ │ framework_stm32cube │ STM32Cube embedded │ │ │ software libraries, │ │ │ including: The HAL │ │ │ hardware abstraction │ │ │ layer, enabling │ │ │ portability between │ │ │ different STM32 devices │ │ │ via standardized API │ │ │ calls; The Low-Layer (LL) │ │ │ APIs, a light-weight, │ │ │ optimized, expert oriented │ │ │ set of APIs designed for │ │ │ both performance and │ │ │ runtime efficiency. │ └─────────────────────┴────────────────────────────┘


---

## ST Nucleo L452RE 🦋💜

### Contents

- ST Nucleo L452RE
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. no cap, that's a whole lotta capability in one little chip 🫶

┌─────────────────┬───────────────┐ │ Microcontroller │ STM32L452RET6 │ ├─────────────────┼───────────────┤ │ Frequency │ 80MHz │ ├─────────────────┼───────────────┤ │ Flash │ 256KB │ ├─────────────────┼───────────────┤ │ RAM │ 64KB │ ├─────────────────┼───────────────┤ │ Vendor │ ST │ └─────────────────┴───────────────┘


### Configuration 🎀

Please use `nucleo_l452re` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_l452re] platform = ststm32 board = nucleo_l452re


You can override default ST Nucleo L452RE settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_l452re.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:nucleo_l452re] platform = ststm32 board = nucleo_l452re

; change microcontroller board_build.mcu = stm32l452ret6

; change MCU frequency board_build.f_cpu = 80000000L


### Uploading 🚀

ST Nucleo L452RE supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_l452re] platform = ststm32 board = nucleo_l452re

upload_protocol = stlink


### Debugging 🐛💖

<cyan>`piodebug`</cyan> — "1-click" solution for debugging with a **zero configuration**. iconic behavior, honestly.

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. (fr fr, do the drivers, it's not optional 🙈)

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L452RE has an **on-board debug probe** and **IS READY** for debugging. You don't need to use/buy an external debug probe. main character board energy, she came prepared 💅

┌───────────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_blackmagic │ │ │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_jlink │ │ │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_stlink │ Yes │ Yes │ └───────────────────────────┴──────────┴─────────┘


## ✨ Frameworks ✨

Okay so bestie, here's the framework lineup for this board, and it's giving <rainbow>choices</rainbow> 💅

- **`framework_arduino`** — <pink>Arduino Wiring-based Framework</pink> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <purple>iconic tbh</purple> ✨
- **`framework_stm32cube`** — <cyan>STM32Cube embedded software libraries</cyan>, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <mint>lowkey powerful</mint> 🔥

---

# ✨ ST Nucleo L476RG ✨

## 🌸 Contents 🌸

- ST Nucleo L476RG
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🛠️ Hardware 🛠️

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

Here's the spec sheet, and it's <yellow>snatched</yellow> 👑

- **Microcontroller**: `STM32L476RGT6`
- **Frequency**: `80MHz`
- **Flash**: `1MB`
- **RAM**: `128KB`
- **Vendor**: `ST`

## ⚙️ Configuration ⚙️

Please use `nucleo_l476rg` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_l476rg] platform = ststm32 board = nucleo_l476rg


You can override default ST Nucleo L476RG settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_l476rg.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:nucleo_l476rg] platform = ststm32 board = nucleo_l476rg

; change microcontroller board_build.mcu = stm32l476rgt6

; change MCU frequency board_build.f_cpu = 80000000L


## 📤 Uploading 📤

ST Nucleo L476RG supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_l476rg] platform = ststm32 board = nucleo_l476rg

upload_protocol = stlink


## 🐛 Debugging 🐛

`piodebug` - "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L476RG has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe.

Compatible Tools:

- **`debugging_tool_blackmagic`** — On-board: (none), Default: (none)
- **`debugging_tool_jlink`** — On-board: (none), Default: (none)
- **`debugging_tool_stlink`** — On-board: Yes, Default: Yes

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie. It lets u write cross-platform software to control devices attached to a wide range of Arduino boards, so u can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving artsy AND functional 💖

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. On top of that, there's RTOS, USB and Networking libraries, plus a cookbook of hundreds of reusable peripheral and module libraries that the mbed Developer Community built on top of the SDK. literally a whole buffet ✨

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. highkey for the girlies who want it fast AND portable 🔥

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. safety + security = the whole vibe, no cap 🛡️

---

# 👑 ST Nucleo L486RG 👑

## 📋 Contents

- ST Nucleo L486RG
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🛠️ Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. like, she does it ALL 💅

- **Microcontroller** — `STM32L486RGT6`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use `nucleo_l486rg` ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_l486rg] platform = ststm32 board = nucleo_l486rg


You can override default ST Nucleo L486RG settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_l486rg.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:nucleo_l486rg] platform = ststm32 board = nucleo_l486rg

; change microcontroller board_build.mcu = stm32l486rgt6

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading

ST Nucleo L486RG supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_l486rg] platform = ststm32 board = nucleo_l486rg

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. so iconic fr fr

> <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging` `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L486RG has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. <green>no extra shopping spree required, we love that</green> 🫶

Compatible Tools:

- **`debugging_tool_blackmagic`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_jlink`** — On-board: *(nope)*, Default: *(nope)*
- **`debugging_tool_stlink`** — On-board: `Yes`, Default: `Yes` 👑

---

## 🧚 Frameworks

*(see the framework table above, bestie — she plays nice with `framework_arduino`, `framework_mbed`, `framework_stm32cube`, and `framework_zephyr`)* 💜

---

- **`framework_mbed`** — this is the mbed framework, bestie 💖 The mbed SDK was literally designed to give you *enough* hardware abstraction to be intuitive and concise, while still being powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, so you can absolutely code down to the metal if you want to 🙈 On top of RTOS, USB and Networking libraries, the mbed Developer Community has built a whole cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. It's giving ✨ecosystem✨.

- **`framework_stm32cube`** — the STM32Cube embedded software libraries 🧚 and they come with a lot, okay? Including: the HAL hardware abstraction layer, which lets you port between different STM32 devices via standardized API calls 🌈; and the Low-Layer (LL) APIs, which are a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. Lowkey iconic for the performance girlies 💅

---

# 👑 ST Nucleo L496ZG 👑

## 📋 Contents 📋

- ST Nucleo L496ZG

  - Hardware

  - Configuration

  - Uploading

  - Debugging

  - Frameworks

---

## 🔧 Hardware 🔧

<pink>Platform `platform_ststm32`:</pink> the STM32 family of 32-bit Flash MCUs is built on the ARM Cortex-M processor, and it was designed to offer new degrees of freedom to MCU users 🦋 It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, all while maintaining full integration and ease of development. No cap, that's a lot of slay in one chip.

- **Microcontroller** — `STM32L496ZGT6`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration ⚙️

Okay so for the `projectconf_env_board` option in projectconf, please use the `nucleo_l496zg` ID 💜 Like this:

[env:nucleo_l496zg] platform = ststm32 board = nucleo_l496zg


You can override the default ST Nucleo L496ZG settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `nucleo_l496zg.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌸

[env:nucleo_l496zg] platform = ststm32 board = nucleo_l496zg

; change microcontroller board_build.mcu = stm32l496zgt6

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading 🚀

ST Nucleo L496ZG supports the next uploading protocols 🫶

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:nucleo_l496zg] platform = ststm32 board = nucleo_l496zg

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. Fr fr, it's that easy 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information. Don't skip this step bestie, driver problems are a whole villain arc 😭

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in projectconf.

ST Nucleo L496ZG has an on-board debug probe and **IS READY** for debugging 🔥 You don't need to use/buy an external debug probe. Periodt.

- **`debugging_tool_blackmagic`** — On-board: no. Default: no.
- **`debugging_tool_jlink`** — On-board: no. Default: no.
- **`debugging_tool_stlink`** — On-board: **Yes** 🌟 Default: **Yes** 🌟

---

- **`framework_arduino`** — the Arduino Wiring-based framework, bestie. It lets you write cross-platform software to control devices attached to a *wide* range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving "art kid who also solders" energy 🎨
- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. And on top of RTOS, USB and Networking libraries, there's a whole cookbook of hundreds of reusable peripheral and module libraries that the mbed Developer Community built on top of the SDK. iykyk 🔥
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. Expert mode activated fr fr 💅
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Safety girlie 🛡️

---

# 🌸 ST Nucleo L496ZG-P 🌸

## Contents

- ST Nucleo L496ZG-P
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🛠️ Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

- **Microcontroller** — `STM32L496ZGT6P`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `320KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use <pink>`nucleo_l496zg_p`</pink> ID for `projectconf_env_board` option in `projectconf`:

[env:nucleo_l496zg_p] platform = ststm32 board = nucleo_l496zg_p


You can override default ST Nucleo L496ZG-P settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `nucleo_l496zg_p.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Customize away bestie ✨

[env:nucleo_l496zg_p] platform = ststm32 board = nucleo_l496zg_p

; change microcontroller board_build.mcu = stm32l496zgt6p

; change MCU frequency board_build.f_cpu = 80000000L


---

## 📤 Uploading

ST Nucleo L496ZG-P supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is <purple>`stlink`</purple>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:nucleo_l496zg_p] platform = ststm32 board = nucleo_l496zg_p

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed 😭

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST Nucleo L496ZG-P has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. It's literally built different 👑

Compatible Tools:

- **`debugging_tool_blackmagic`** — On-board: *(no)* — Default: *(no)*
- **`debugging_tool_jlink`** — On-board: *(no)* — Default: *(no)*
- **`debugging_tool_stlink`** — On-board: <green>Yes</green> — Default: <green>Yes</green> 💖

---

<purple>*more coming, bestie — we're not done yet* 💜</purple>

### ✨ Frameworks ✨

okay bestie, here's the framework menu for this board 💅

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 🎨✨
- **`framework_mbed`** — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. And on top of the SDK, in addition to RTOS, USB and Networking libraries, the mbed Developer Community has built a cookbook of hundreds of reusable peripheral and module libraries. it's giving *ecosystem* 🌈
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🔥

---

## ST Nucleo L4R5ZI 🦋

### Contents 💖

- ST Nucleo L4R5ZI
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### Hardware 🎀

**Platform `platform_ststm32`:** The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. periodt ✨

- **Microcontroller** — `STM32L4R5ZIT6`
- **Frequency** — `120MHz`
- **Flash** — `2MB`
- **RAM** — `640KB`
- **Vendor** — `ST`

---

### Configuration 🧚

Please use <pink>`nucleo_l4r5zi`</pink> ID for the <purple>`projectconf_env_board`</purple> option in projectconf:

[env:nucleo_l4r5zi] platform = ststm32 board = nucleo_l4r5zi


You can override default ST Nucleo L4R5ZI settings per build environment using the <purple>`board_***`</purple> option, where <pink>`***`</pink> is a JSON object path from the board manifest `nucleo_l4r5zi.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. no cap, you can really poke at all of it 💅

[env:nucleo_l4r5zi] platform = ststm32 board = nucleo_l4r5zi

; change microcontroller board_build.mcu = stm32l4r5zit6

; change MCU frequency board_build.f_cpu = 120000000L


---

### Uploading 🚀

ST Nucleo L4R5ZI supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink> 👑

You can change upload protocol using the <purple>`projectconf_upload_protocol`</purple> option:

[env:nucleo_l4r5zi] platform = ststm32 board = nucleo_l4r5zi

upload_protocol = stlink


---

### Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. literally the main character of your toolchain 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️ don't skip this bestie, it will Not work otherwise 😭

You can switch between debugging `debugging_tools` using the <purple>`projectconf_debug_tool`</purple> option in projectconf.

ST Nucleo L4R5ZI has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. obsessed, honestly 🫶

Compatible Tools:

- **`debugging_tool_blackmagic`** — On-board: *(not marked)*, Default: *(not marked)*
- **`debugging_tool_jlink`** — On-board: *(not marked)*, Default: *(not marked)*
- **`debugging_tool_stlink`** — On-board: **Yes**, Default: **Yes** 👑✨

- **`framework_arduino`** — bestie this one is the <pink>Arduino Wiring-based Framework</pink> and it lets you write cross-platform software that controls devices hooked up to a <hotpink>huge</hotpink> range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving ✨maker chaos✨ in the best way 🎀

- **`framework_mbed`** — the mbed framework, okay? the mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. it's built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed 🔥. and on top of that, in addition to RTOS, USB and Networking libraries, there's a whole cookbook of hundreds of reusable peripheral and module libraries that have been built on top of the SDK by the mbed Developer Community 👑

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 💅

- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind 🛡️✨

---

# 🌈 ST STM32F0308DISCOVERY 🌈

## ✨ Contents ✨

the roadmap, bestie, keep up 🫶

- ST STM32F0308DISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💜 Hardware 💜

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <cyan>no cap, that's a lot of words but every one of them is real.</cyan> 😤

the spec sheet, but make it cute:

- **Microcontroller** — `STM32F030R8T6`
- **Frequency** — `48MHz`
- **Flash** — `64KB`
- **RAM** — `8KB`
- **Vendor** — `ST`

---

## 🎀 Configuration 🎀

please use `disco_f030r8` ID for `projectconf_env_board` option in `projectconf`:

[env:disco_f030r8] platform = ststm32 board = disco_f030r8


you can override the default ST STM32F0308DISCOVERY settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `disco_f030r8.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:disco_f030r8] platform = ststm32 board = disco_f030r8

; change microcontroller board_build.mcu = stm32f030r8t6

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🦋 Uploading 🦋

ST STM32F0308DISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

default protocol is `stlink` ⭐

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:disco_f030r8] platform = ststm32 board = disco_f030r8

upload_protocol = stlink


---

## 💅 Debugging 💅

`pio debug` — the "1-click" solution for debugging with a zero configuration. main character energy fr fr 🙈

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further instructions and configuration information. <red>don't skip this one bestie, it will not work without the drivers, i promise you.</red> 😭

you can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. 💅

---

## 🫶 ST STM32F0308DISCOVERY — wait, no, keep reading

<pink>ST STM32F0308DISCOVERY has an on-board debug probe and is **READY for debugging**.</pink> Bestie, you literally do **not** need to use or buy an external debug probe. It's giving self-sufficient. 👑

**Compatible Tools** ✨

- **`debugging_tool_blackmagic`** — no on-board, no default 🫥
- **`debugging_tool_jlink`** — no on-board, no default 🫥
- **`debugging_tool_stlink`** — On-board: **Yes**, Default: **Yes** 💖

---

## 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🦋
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

# 👑 ST STM32F0DISCOVERY

## Contents 💜

- ST STM32F0DISCOVERY
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. ✨

- **Microcontroller** — `STM32F051R8T6`
- **Frequency** — `48MHz`
- **Flash** — `64KB`
- **RAM** — `8KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use `disco_f051r8` ID for the `projectconf_env_board` option in `projectconf`:

[env:disco_f051r8] platform = ststm32 board = disco_f051r8


You can override default ST STM32F0DISCOVERY settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `disco_f051r8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:disco_f051r8] platform = ststm32 board = disco_f051r8

; change microcontroller board_build.mcu = stm32f051r8t6

; change MCU frequency board_build.f_cpu = 48000000L


---

## 📤 Uploading

ST STM32F0DISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 💖

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:disco_f051r8] platform = ststm32 board = disco_f051r8

upload_protocol = stlink


---

## 🐛 Debugging

## 💅 piodebug 💅

<pink>**`piodebug`**</pink> — the <rainbow>"1-click"</rainbow> solution for debugging with a <purple>zero configuration</purple>. no cap, that's literally the whole pitch. ✨

> ⚠️ <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. like bestie pls don't skip the drivers, it will Not work and you will be sad 😭

You can switch between debugging `debugging_tools` using <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`. 🎀

<purple>**ST STM32F0DISCOVERY**</purple> has on-board debug probe and <hotpink>**IS READY**</hotpink> for debugging. You don't need to use/buy external debug probe. iconic behavior honestly 👑

---

### 🧰 Compatible Tools

Here's the vibe check on which tools come built-in and which one's the default:

- **`debugging_tool_blackmagic`** — on-board: *(not listed)* · default: *(not listed)*
- **`debugging_tool_jlink`** — on-board: *(not listed)* · default: *(not listed)*
- **`debugging_tool_stlink`** — on-board: **Yes** · default: **Yes** ⭐

so `stlink` is carrying the whole team here fr fr 💅

---

### 🦋 Frameworks

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🌸
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🛡️

---

# 👑 ST STM32F3DISCOVERY 👑

### 📖 Contents

- ST STM32F3DISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. ✨

- **Microcontroller** — `STM32F303VCT6`
- **Frequency** — `72MHz`
- **Flash** — `256KB`
- **RAM** — `48KB`
- **Vendor** — `ST`

the specs ate, lowkey. 256KB of flash is a whole personality 💖

---

### ⚙️ Configuration

Please use <cyan>`disco_f303vc`</cyan> ID for `projectconf_env_board` option in `projectconf`:

[env:disco_f303vc] platform = ststm32 board = disco_f303vc


You can override default ST STM32F3DISCOVERY settings per build environment using <pink>`board_***`</pink> option, where `***` is a JSON object path from board manifest `disco_f303vc.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:disco_f303vc] platform = ststm32 board = disco_f303vc

; change microcontroller board_build.mcu = stm32f303vct6

; change MCU frequency board_build.f_cpu = 72000000L


see how easy that was?? customize away bestie 🎀

---

### 🚀 Uploading

ST STM32F3DISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_f303vc] platform = ststm32 board = disco_f303vc

upload_protocol = stlink


periodt. 💅 that's the whole upload situation and honestly it's giving zero stress 💜

### 🐛 Debugging 💅

ok so <pink>`piodebug`</pink> is literally the <hotpink>"1-click"</hotpink> solution for debugging with a <cyan>zero configuration</cyan>. zero. none. nada. you don't gotta set anything up, bestie, it just *goes* ✨

> ⚠️ **WARNING** ⚠️
>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

like fr fr, read that twice. <yellow>drivers</yellow> are a you problem depending on what system you're on, and you gotta go click the compatible debug tool below to get the further instructions and configuration info. don't skip the homework, it's giving necessary 💀

---

You can switch between debugging <purple>`debugging_tools`</purple> using the <mint>`projectconf_debug_tool`</mint> option in <mint>`projectconf`</mint>. 🎀

so yeah — pick your tool, flip that option, and the whole debug vibe check just moves with you. iconic behavior honestly 👑

<pink>ST STM32F3DISCOVERY</pink> ships with an **on-board debug probe** and it is <rainbow>READY</rainbow> for debugging, bestie. Like, you genuinely do **not** need to use or buy an external debug probe. It just works. 💅✨

Compatible tools? Say less:

- `debugging_tool_blackmagic`
- `debugging_tool_jlink`
- `debugging_tool_stlink` — on-board: **Yes**, default: **Yes** 🫶

---

### Frameworks 🧚

- **`framework_cmsis`** — ok so this is the **ARM Cortex Microcontroller Software Interface Standard (CMSIS)**, and it's a vendor-independent hardware abstraction layer for the Cortex-M processor series that also specifies debugger interfaces. It gives you consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, cuts down the learning curve for new microcontroller developers, and speeds up time-to-market for devices. lowkey iconic. 💜
- **`framework_libopencm3`** — the libOpenCM3 framework's whole goal is to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. ate. 🔥
- **`framework_mbed`** — the mbed framework. The mbed SDK was designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, so you can code down to the metal if you need to. On top of RTOS, USB and Networking libraries, the mbed Developer Community has built a cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. the way they built a whole community cookbook?? 💖
- **`framework_spl`** — the ST Standard Peripheral Library gives you a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user especially) from having to deal directly with the registers. bestie said "no more raw register suffering". 🙈
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the **HAL** hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the **Low-Layer (LL) APIs**, a light-weight, optimized, expert-oriented set of APIs designed for both performance and runtime efficiency. two moods, both slay. ⭐
- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. main character energy fr fr. 👑

---

## ST STM32F4DISCOVERY 🌈

Contents, so you know what's coming:

- ST STM32F4DISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware 🎀

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. it's giving *everything*. ✨

The specs, no cap:

- **Microcontroller** — `STM32F407VGT6`
- **Frequency** — `168MHz`
- **Flash** — `1MB`

- **`RAM`** — `128KB` 💾 (yes bestie, that's your working memory, hold it close)

- **`Vendor`** — `ST`

---

## 🌸 Configuration 🌸

Okay so listen — when you wanna configure this board, <pink>please use the</pink> `disco_f407vg` ID for the `projectconf_env_board` option inside `projectconf`:

[env:disco_f407vg] platform = ststm32 board = disco_f407vg


And here's the slay part 🫶 — you can <hotpink>override the default ST STM32F4DISCOVERY settings per build environment</hotpink> using the `board_***` option, where `***` is a JSON object path straight outta the board manifest `disco_f407vg.json`. Like for example `board_build.mcu`, `board_build.f_cpu`, etc.

[env:disco_f407vg] platform = ststm32 board = disco_f407vg

; change microcontroller board_build.mcu = stm32f407vgt6

; change MCU frequency board_build.f_cpu = 168000000L


---

## 🚀 Uploading 🚀

ST STM32F4DISCOVERY supports the next uploading protocols, and honestly? <purple>a whole buffet</purple> ✨

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` — that's the one that comes through for you by default, no cap.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:disco_f407vg] platform = ststm32 board = disco_f407vg

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` — the <mint>"1-click" solution</mint> for debugging with a zero configuration. Main character energy fr fr 💅

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST STM32F4DISCOVERY has an <rainbow>on-board debug probe</rainbow> and **IS READY** for debugging. You don't need to use/buy an external debug probe. Periodt. 👑

Compatible Tools:

- **`debugging_tool_blackmagic`** — On-board: *(nothing)*, Default: *(nothing)*
- **`debugging_tool_jlink`** — On-board: *(nothing)*, Default: *(nothing)*
- **`debugging_tool_stlink`** — On-board: `Yes`, Default: `Yes` ✅

---

## 🧩 Frameworks 🧩

Name → Description, and lemme tell you, these descriptions are *long*. We're reading them all tho, because that's what besties do 💖

- **`framework_arduino`** — The Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving *vibes as a service* 🎀

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. Iconic, honestly.

- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. Look at that list. It ate. 🍓

- **`framework_mbed`** — The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🦋

- **`framework_spl`** — bestie, this is the ST Standard Peripheral Library, and it's giving "we handle the registers so you don't have to" energy. It hands you a whole set of functions for dealing with the peripherals on the STM32 Cortex-M3 family. The whole point? Saving the user — and honestly *especially* the new user — from having to deal directly with the registers. 💅

- **`framework_stm32cube`** — STM32Cube embedded software libraries, and it comes with a little of everything:
  - The HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls ✨
  - The Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. It's giving expert mode, no cap.

- **`framework_zephyr`** — The Zephyr Project, and she's a scalable real-time operating system (RTOS) 💖. She supports multiple hardware architectures, is optimized for resource constrained devices, and was built with safety and security in mind. Iconic behavior fr fr.

---

# 🦋 ST STM32L073Z-EVAL 🦋

## <pink>Contents</pink>

- ST STM32L073Z-EVAL
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## <cyan>Hardware</cyan>

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. Like… she does it all. 😭💖

Here's the board breakdown, and yes every number is exact:

- **Microcontroller** — `STM32L073VZT6`
- **Frequency** — `32MHz`
- **Flash** — `192KB`
- **RAM** — `20KB`
- **Vendor** — `ST`

---

## <purple>Configuration</purple>

Please use `eval_l073z` ID for the `projectconf_env_board` option in `projectconf`:

[env:eval_l073z] platform = ststm32 board = eval_l073z


You can override default ST STM32L073Z-EVAL settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `eval_l073z.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. So you can really customize the vibe per environment, bestie 🫶

[env:eval_l073z] platform = ststm32 board = eval_l073z

; change microcontroller board_build.mcu = stm32l073vzt6

; change MCU frequency board_build.f_cpu = 32000000L


---

## <mint>Uploading</mint>

ST STM32L073Z-EVAL supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` — that's the main character, periodt 💅

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:eval_l073z] platform = ststm32 board = eval_l073z

upload_protocol = stlink


---

## <hotpink>Debugging</hotpink>

**`piodebug`** — "1-click" solution for debugging with a zero configuration. Zero. Configuration. Obsessed. 😭✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. Don't skip this one, bestie, it's not a vibe if it doesn't work 🙈

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST STM32L073Z-EVAL has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. She comes prepped, she comes ready 👑

### <lavender>Compatible Tools</lavender>

- **`debugging_tool_blackmagic`** — On-board: *(no)* · Default: *(no)*
- **`debugging_tool_jlink`** — On-board: *(no)* · Default: *(no)*
- **`debugging_tool_stlink`** — On-board: **Yes** · Default: **Yes** 🎀

---

# 🌈 Frameworks 🌈

okay so the table's columns are **Name** and **Description**, and the rows are coming right up…

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. ✨

---

# 💖 ST STM32LDISCOVERY 💖

## 🎀 Contents 🎀

- ST STM32LDISCOVERY
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <pink>no cap, that's the whole vibe</pink> 💅

- **Microcontroller** — `STM32L152RBT6`
- **Frequency** — `32MHz`
- **Flash** — `128KB`
- **RAM** — `16KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration ⚙️

Please use `disco_l152rb` ID for `projectconf_env_board` option in `projectconf`:

[env:disco_l152rb] platform = ststm32 board = disco_l152rb


You can override default ST STM32LDISCOVERY settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_l152rb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:disco_l152rb] platform = ststm32 board = disco_l152rb

; change microcontroller board_build.mcu = stm32l152rbt6

; change MCU frequency board_build.f_cpu = 32000000L


---

## 🚀 Uploading 🚀

ST STM32LDISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` <pink>iconic behaviour honestly</pink> ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_l152rb] platform = ststm32 board = disco_l152rb

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST STM32LDISCOVERY has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. <pink>she comes with her own accessories, main character energy fr fr</pink> 👑

Compatible tools, and whether they're on-board / default:

- **`debugging_tool_blackmagic`** — On-board: (no) · Default: (no)
- **`debugging_tool_jlink`** — On-board: (no) · Default: (no)
- **`debugging_tool_stlink`** — On-board: **Yes** · Default: **Yes** ✅

---

## 🧚 Frameworks 🧚

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. 🌸

- <purple>**`framework_libopencm3`**</purple> — bestie, the <cyan>libOpenCM3</cyan> framework is on a whole mission: it aims to create a <mint>free/libre/open-source</mint> firmware library for a bunch of ARM Cortex-M0(+)/M3/M4 microcontrollers. We're talking ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. That's a *lot* of silicon, and honestly? iconic. <pink>💖</pink>

- <purple>**`framework_spl`**</purple> — the ST Standard Peripheral Library hands you a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The whole idea is to save you — and the new user especially — from having to deal directly with the registers. A little treat, as a treat. <yellow>✨</yellow>

- <purple>**`framework_stm32cube`**</purple> — STM32Cube embedded software libraries, and it comes with two whole layers, no cap:
  - the <cyan>HAL</cyan> hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls;
  - the <cyan>Low-Layer (LL)</cyan> APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <rainbow>👑</rainbow>

---

# 🌸 ST STM32VLDISCOVERY 🌸

## ✨ Contents ✨

- ST STM32VLDISCOVERY
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware 🔧

**Platform `platform_ststm32`:** The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <cyan>like… all of that?? in one little chip?? slay.</cyan> 🦋

- **Microcontroller:** `STM32F100RBT6`
- **Frequency:** `24MHz`
- **Flash:** `128KB`
- **RAM:** `8KB`
- **Vendor:** `ST`

---

## ⚙️ Configuration ⚙️

Please use `disco_f100rb` ID for `projectconf_env_board` option in `projectconf`:

[env:disco_f100rb] platform = ststm32 board = disco_f100rb


You can override default ST STM32VLDISCOVERY settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `disco_f100rb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Go off, customise your little heart out 💅

[env:disco_f100rb] platform = ststm32 board = disco_f100rb

; change microcontroller board_build.mcu = stm32f100rbt6

; change MCU frequency board_build.f_cpu = 24000000L


---

## 🚀 Uploading 🚀

ST STM32VLDISCOVERY supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` <mint>⭐</mint>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:disco_f100rb] platform = ststm32 board = disco_f100rb

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` - "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>don't skip this one bestie, fr fr 😭</red>

You can switch between `debugging` `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST STM32VLDISCOVERY has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. <green>main character energy honestly, it just shows up ready 🫶</green>

**Compatible Tools:**

- `debugging_tool_blackmagic` — On-board: *(blank)*, Default: *(blank)*
- `debugging_tool_jlink` — On-board: *(blank)*, Default: *(blank)*
- `debugging_tool_stlink` — On-board: Yes, Default: Yes

---

## 🌈 Frameworks 🌈

The table's got two columns — `Name` and `Description` — and here's where it begins:

- **`framework_arduino`** — the <pink>Arduino Wiring-based Framework</pink> 💖 like, it lets you write cross-platform software that controls devices hooked up to a whole range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. no cap, it's giving *maker chaos in the best way* 🎀

- **`framework_mbed`** — the <purple>mbed framework</purple> ✨ the mbed SDK was designed to give you enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. it's built on the low-level ARM CMSIS APIs, so you can code down to the metal if needed 🦋 on top of RTOS, USB and Networking libraries there's a whole cookbook of hundreds of reusable peripheral and module libraries that the mbed Developer Community built on top of the SDK. iconic honestly 👑

- **`framework_stm32cube`** — <cyan>STM32Cube embedded software libraries</cyan> 🌈 including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 💅

---

# 🌸 ST Sensor Node 🌸

## 💖 Contents

- ST Sensor Node
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🛠️ Hardware

**Platform `platform_ststm32`**: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users 🔥 it offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development ⭐

- **Microcontroller** — `STM32L476JG`
- **Frequency** — `80MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `Avnet Silica`

---

## ⚙️ Configuration

bestie, please use the `silica_sensor_node` ID for the `projectconf_env_board` option in `projectconf` 🫶

[env:silica_sensor_node] platform = ststm32 board = silica_sensor_node


You can override the default ST Sensor Node settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `silica_sensor_node.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:silica_sensor_node] platform = ststm32 board = silica_sensor_node

; change microcontroller board_build.mcu = stm32l476jg

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🚀 Uploading

ST Sensor Node supports the next uploading protocols 💅

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `mbed` 🌸

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:silica_sensor_node] platform = ststm32 board = silica_sensor_node

upload_protocol = mbed


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration 🎀

> **WARNING** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

ST Sensor Node has an on-board debug probe and **IS READY** for debugging 👑 You don't need to use/buy an external debug probe. periodt.

- **Compatible Tools** — On-board: *(none listed)* — Default: *(none listed)*
  - `debugging_tool_blackmagic`
  - `debugging_tool_jlink`

- **`debugging_tool_stlink`** — On-board: **Yes** ✨ · Default: **Yes** 💅

...and that's a wrap on that table, bestie. 🎀

---

## 🧚 Frameworks 🧚

okay so these are the frameworks this thing can vibe with, and there's literally two of them, so let's go:

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🦋

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

# 🌈 STEVAL-FCU001V1 Flight controller unit evaluation board 🌈

## 💖 Contents 💖

- STEVAL-FCU001V1 Flight controller unit evaluation board
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌸 Hardware 🌸

**Platform** `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

the specs, bestie, and they are *giving*:

- **Microcontroller** — `STM32F401CCU6`
- **Frequency** — `84MHz`
- **Flash** — `256KB`
- **RAM** — `64KB`
- **Vendor** — `ST`

---

## 💅 Configuration 💅

Please use `steval_fcu001v1` ID for `projectconf_env_board` option in projectconf:

[env:steval_fcu001v1] platform = ststm32 board = steval_fcu001v1


You can override default STEVAL-FCU001V1 Flight controller unit evaluation board settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `steval_fcu001v1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

so like, here's what that looks like in the wild:

[env:steval_fcu001v1] platform = ststm32 board = steval_fcu001v1

; change microcontroller board_build.mcu = stm32f401ccu6

; change MCU frequency board_build.f_cpu = 84000000L


---

## 🔥 Uploading 🔥

STEVAL-FCU001V1 Flight controller unit evaluation board supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 👑

You can change upload protocol using `projectconf_upload_protocol` option:

[env:steval_fcu001v1] platform = ststm32 board = steval_fcu001v1

upload_protocol = stlink


---

## 👑 Debugging 👑

`piodebug` — "1-click" solution for debugging with a zero configuration. zero config, zero stress, we love to see it. ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in projectconf.

STEVAL-FCU001V1 Flight controller unit evaluation board does not have on-board debug probe and **IS NOT READY for debugging**. You will need to use/buy one of external probe listed below. 💀 like, no on-board probe at all, so you *will* be shopping.

Compatible Tools:

- **Compatible Tools** / **On-board** / **Default**
- **`debugging_tool_blackmagic`** — On-board: — · Default: **Yes**

- **`debugging_tool_jlink`** — SEGGER J-Link, the fancy one 🎀
- **`debugging_tool_stlink`** — ST-Link, the classic bestie 💅

---

# 🌈 Frameworks 🌈

okay so here's what you can actually *build* on this thing, and honestly? the options ate 💖

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. like, it's giving "we made it portable AND fast," no cap ✨
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. tiny chip, big main character energy 👑

---

# 🦋 STM32-E407 Contents 🦋

here's the lil map of everything this board page covers, bestie:

- STM32-E407
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

# 🔧 Hardware 🔧

**Platform** `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. fr fr that's a whole lot of chips and they all slay 🌸

and now the specs, babes — the moment you've been waiting for:

- **Microcontroller**: `STM32F407ZGT6`
- **Frequency**: `168MHz`
- **Flash**: `1MB`
- **RAM**: `128KB`
- **Vendor**: `Olimex`

like okay `168MHz` and `1MB` of flash?? she's not playing around 💀✨

---

# ⚙️ Configuration ⚙️

Please use `olimex_e407` ID for `projectconf_env_board` option in `projectconf`:

[env:olimex_e407] platform = ststm32 board = olimex_e407


You can override default STM32-E407 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `olimex_e407.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. — yes you can customize her, she loves that 💅

[env:olimex_e407] platform = ststm32 board = olimex_e407

; change microcontroller board_build.mcu = stm32f407zgt6

; change MCU frequency board_build.f_cpu = 168000000L


> not me putting the exact same env block twice and it being correct both times 😭 that's just how the page is, bestie, don't @ me

---

# 📤 Uploading 📤

STM32-E407 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:olimex_e407] platform = ststm32 board = olimex_e407

upload_protocol = stlink


---

# 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. one click?? zero config?? iconic behavior honestly 🫶

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

STM32-E407 does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 💀 like she literally cannot debug herself, you gotta bring your own probe, sorry babe

**Compatible Tools** — On-board / Default:

- `debugging_tool_blackmagic` — On-board: (no) · Default: **Yes**
- `debugging_tool_jlink` — On-board: (no) · Default: (no)
- `debugging_tool_stlink` — On-board: (no) · Default: (no)

## 🦋 Frameworks

okay so these are the frameworks you can build on, and each one is lowkey a whole personality:

- **`framework_arduino`** — the Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving "make literally anything blink" ✨

- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS). It's a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. 💅

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🎀

---

## 🌸 STM32-H407 Contents

here's the little map of everything this board page covers, bestie:

- STM32-H407
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💜 Hardware

**Platform `platform_ststm32`:** The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

and here's the silicon tea, sip it slowly:

- **Microcontroller** — `STM32F407ZGT6`
- **Frequency** — `168MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `Olimex`

---

## ✨ Configuration

Please use `olimex_h407` ID for `projectconf_env_board` option in `projectconf`:

[env:olimex_h407] platform = ststm32 board = olimex_h407


You can override default STM32-H407 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `olimex_h407.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:olimex_h407] platform = ststm32 board = olimex_h407

; change microcontroller board_build.mcu = stm32f407zgt6

; change MCU frequency board_build.f_cpu = 168000000L


---

## 🎀 Uploading

STM32-H407 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:olimex_h407] platform = ststm32 board = olimex_h407

upload_protocol = stlink


---

## 🫶 Debugging

`pio debug` — the "1-click" solution for debugging with a zero configuration. literally iconic.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🫶

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

STM32-H407 does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 💀

the compatible-tools table has these columns — **Compatible Tools**, **On-board**, **Default** — and the rows go like this:

- **`debugging_tool_blackmagic`** — On-board: *(blank)* · Default: **Yes**

- **`debugging_tool_jlink`** — debug tool entry, and ngl the description columns are just… empty in the source? 🙈 she's mysterious, she's giving nothing
- **`debugging_tool_stlink`** — same vibe, name only, no description on the record ✨

---

## ✨ Frameworks ✨

okay so these are the frameworks this platform can run, and they are *so* different from each other, it's giving range 💅

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 🌈 literally the "make a lamp that sings" framework
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS), a vendor-independent hardware abstraction layer for the Cortex-M processor series that also specifies debugger interfaces. It enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware, and it simplifies software re-use — which means a shorter learning curve for new microcontroller developers and a shorter time-to-market for devices 👑
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🔥
- **`framework_zephyr`** — the Zephyr Project, a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind 🛡️

---

## 🦋 STM3210C-EVAL 🦋

Contents, bestie, so you can jump around:

- `STM3210C-EVAL`
  - `Hardware`
  - `Configuration`
  - `Uploading`
  - `Debugging`
  - `Frameworks`

---

### 💖 Hardware 💖

**Platform `platform_ststm32`:** The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development ✨

And here's the spec sheet, bestie, no cap:

- **Microcontroller** — `STM32F107VCT6`
- **Frequency** — `72MHz`
- **Flash** — `256KB`
- **RAM** — `64KB`
- **Vendor** — `ST`

---

### 🎀 Configuration 🎀

Please use `eval_f107vc` ID for the `projectconf_env_board` option in `projectconf`:

[env:eval_f107vc] platform = ststm32 board = eval_f107vc


You can override default STM3210C-EVAL settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `eval_f107vc.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:eval_f107vc] platform = ststm32 board = eval_f107vc

; change microcontroller board_build.mcu = stm32f107vct6

; change MCU frequency board_build.f_cpu = 72000000L


---

### 🌸 Uploading 🌸

STM3210C-EVAL supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:eval_f107vc] platform = ststm32 board = eval_f107vc

upload_protocol = stlink


---

## 🐛 Debugging 🐛

<cyan>`piodebug`</cyan> — it's the "1-click" solution for debugging with a zero configuration. literally zero. you just click. bestie behaviour fr 💅

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using <yellow>`projectconf_debug_tool`</yellow> option in projectconf.

<red>STM3210C-EVAL does not have on-board debug probe and IS NOT READY for debugging.</red> You will need to use/buy one of external probe listed below. no cap, it's giving "bring your own probe" energy 😭

Compatible Tools:

- <purple>`debugging_tool_blackmagic`</purple> — On-board: **Yes**
- <purple>`debugging_tool_jlink`</purple> — On-board: (none)
- <purple>`debugging_tool_stlink`</purple> — On-board: (none)

The **Default** column is blank for all three, so nothing is pre-picked for you — you gotta choose your own adventure 🎀

---

## 🌈 Frameworks 🌈

- <mint>`framework_cmsis`</mint> — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. ✨

- <mint>`framework_stm32cube`</mint> — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 💖

- <mint>`framework_zephyr`</mint> — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🦋

---

# 👑 STM32373C-EVAL 👑

## Contents 🍓

- STM32373C-EVAL
- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

## 🔧 Hardware 🔧

Platform <lavender>`platform_ststm32`</lavender>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. periodt 💅

- **Microcontroller** — `STM32F373VCT6`
- **Frequency** — `72MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration ⚙️

Please use <hotpink>`eval_f373vc`</hotpink> ID for <yellow>`projectconf_env_board`</yellow> option in projectconf:

[env:eval_f373vc] platform = ststm32 board = eval_f373vc


You can override default STM32373C-EVAL settings per build environment using <yellow>`board_***`</yellow> option, where <yellow>`***`</yellow> is a JSON object path from board manifest `eval_f373vc.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. iykyk 🌸

[env:eval_f373vc] platform = ststm32 board = eval_f373vc

; change microcontroller board_build.mcu = stm32f373vct6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 🚀 Uploading 🚀

STM32373C-EVAL supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

<pink>Default protocol is</pink> `stlink` — that's the vibe out of the box, bestie. 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:eval_f373vc] platform = ststm32 board = eval_f373vc

upload_protocol = stlink


---

## <purple>Debugging</purple> 🐛✨

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. Literally just click and go, no cap.

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<red>STM32373C-EVAL does not have on-board debug probe and IS NOT READY for debugging.</red> 😭 You will need to use/buy one of external probe listed below.

- **`debugging_tool_blackmagic`** — On-board: Yes, Default: Yes 👑
- **`debugging_tool_jlink`**
- **`debugging_tool_stlink`**

---

## <cyan>Frameworks</cyan> 🧚💖

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

# 🌸 STM32F072-EVAL 🌸

## <lavender>Contents</lavender> 🎀

- STM32F072-EVAL
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## <mint>Hardware</mint> 🔧

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

- **Microcontroller** — `STM32F072VBT6`
- **Frequency** — `48MHz`
- **Flash** — `128KB`
- **RAM** — `16KB`
- **Vendor** — `ST`

## <peach>Configuration</peach> ⚙️✨

Please use `eval_f072vb` ID for `projectconf_env_board` option in `projectconf`:

[env:eval_f072vb] platform = ststm32 board = eval_f072vb


You can override default STM32F072-EVAL settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `eval_f072vb.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:eval_f072vb] platform = ststm32 board = eval_f072vb

; change microcontroller board_build.mcu = stm32f072vbt6

; change MCU frequency board_build.f_cpu = 48000000L


## <yellow>Uploading</yellow> 📤💫

STM32F072-EVAL supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:eval_f072vb] platform = ststm32 board = eval_f072vb

upload_protocol = stlink


## <purple>Debugging</purple> 🐛✨

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration.

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<cyan>STM32F072-EVAL</cyan> is giving "I have no on-board debug probe" energy, and bestie, that means it is <red>**NOT READY**</red> for debugging. 💀 Like, at all. You're gonna need to use or buy one of the external probes listed below — no cap, there's no getting around it. 🫶

Here's the vibe check on what's compatible:

- **`debugging_tool_blackmagic`** — compatible 💖, no on-board version, and it's the **Default** (`Yes`) ✨
- **`debugging_tool_jlink`** — compatible 💅, no on-board version, not the default
- **`debugging_tool_stlink`** — compatible 🌸, no on-board version, not the default

> So to be clear: <yellow>none</yellow> of these are on-board, because this board literally doesn't ship with a debug probe. You're sourcing one yourself, queen. 👑

---

- **`framework_stm32cube`** — okay so this one is the STM32Cube embedded software libraries, and bestie it is *a lot* of stuff in one box 💖 it includes: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. it's giving "I actually read the datasheet" energy, no cap ✨

- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. safety girl summer fr fr 🛡️💜

---

## 🎀 STM32F103C8 (20k RAM. 64k Flash) 🎀

### Contents

- Hardware
- Configuration
- Uploading
- Debugging
- Frameworks

---

### 🔧 Hardware

<purple>Platform</purple> `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. like. that is a *resume*. okay periodt 👑

- **Microcontroller** — `STM32F103C8T6`
- **Frequency** — `72MHz`
- **Flash** — `64KB`
- **RAM** — `20KB`
- **Vendor** — `Generic`

---

### ⚙️ Configuration

Please use `genericSTM32F103C8` ID for `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F103C8] platform = ststm32 board = genericSTM32F103C8


You can override default STM32F103C8 (20k RAM. 64k Flash) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `genericSTM32F103C8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:genericSTM32F103C8] platform = ststm32 board = genericSTM32F103C8

; change microcontroller board_build.mcu = stm32f103c8t6

; change MCU frequency board_build.f_cpu = 72000000L


---

### 🚀 Uploading

STM32F103C8 (20k RAM. 64k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:genericSTM32F103C8] platform = ststm32 board = genericSTM32F103C8

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. iconic behaviour honestly 😭✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

STM32F103C8 (20k RAM. 64k Flash) does not have on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of external probe listed below. not the free-trial lifestyle, bestie 😭

- **`debugging_tool_blackmagic`** — On-board: *(nothing here)* · Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(nothing here)* · Default: *(nothing here)*
- **`debugging_tool_stlink`** — On-board: *(nothing here)* · Default: *(nothing here)*

---

### 🧚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding,

interactive objects, spaces or physical experiences.

- **`framework_cmsis`** — bestie, this is the ARM Cortex Microcontroller Software Interface Standard (CMSIS) 💅 and it's a *vendor-independent* hardware abstraction layer for the Cortex-M processor series that also specifies debugger interfaces. What it does is give you consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. Basically it simplifies software re-use, lowers the learning curve for new microcontroller developers, and cuts the time-to-market for devices. Iconic behavior honestly.

- **`framework_libopencm3`** — the libOpenCM3 framework is out here trying to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. It's giving "community project with range" ✨

- **`framework_mbed`** — okay so this one's called "The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects." It's built on the low-level ARM CMSIS APIs, so you can code down to the metal if needed 🔥 and on top of that, in addition to RTOS, USB and Networking libraries, a whole cookbook of hundreds of reusable peripheral and module libraries has been built on top of the SDK by the mbed Developer Community. So many libraries. So much community.

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. Two layers, one vibe. 🫶

---

## 🦋 STM32F103CB (20k RAM. 128k Flash)

### Contents

- STM32F103CB (20k RAM. 128k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform: `ststm32`. The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. No cap, that's a whole paragraph of flex 💖

- **Microcontroller** — `STM32F103CBT6`
- **Frequency** — `72MHz`
- **Flash** — `128KB`
- **RAM** — `20KB`
- **Vendor** — `Generic`

### Configuration

Please use the `genericSTM32F103CB` ID for the `projectconf_env_board` option in `projectconf` 🌸

[env:genericSTM32F103CB] platform = ststm32 board = genericSTM32F103CB


You can override default STM32F103CB (20k RAM. 128k Flash) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F103CB.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:genericSTM32F103CB] platform = ststm32 board = genericSTM32F103CB

; change microcontroller board_build.mcu = stm32f103cbt6

; change MCU frequency board_build.f_cpu = 72000000L


### Uploading

STM32F103CB (20k RAM. 128k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Please use `genericSTM32F103R8` ID for `projectconf_env_board` option in `projectconf`.

---

## 🔌 Uploading

Default protocol is `stlink`.

You can change upload protocol using `projectconf_upload_protocol` option:

[env:genericSTM32F103R8] platform = ststm32 board = genericSTM32F103R8

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration.

> <red>**WARNING:**</red>
>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

STM32F103R8 (20k RAM. 64 Flash) does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below.

So the table has three columns — **Compatible Tools**, **On-board**, and **Default** — and bestie, here's what's in it:

- **`debugging_tool_blackmagic`** — Default: **Yes** 💅
- **`debugging_tool_jlink`**
- **`debugging_tool_stlink`**

(and yeah, the <pink>On-board</pink> column is just sitting there empty for all three of them, no cap 🫶)

---

## 🧩 Frameworks

- **`framework_arduino`** — <cyan>Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.</cyan> ✨

- **`framework_cmsis`** — <lavender>The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices.</lavender>

- **`framework_libopencm3`** — <mint>The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others.</mint> 🦋

- **`framework_stm32cube`** — <peach>STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.</peach> 🔥

<pink>okay so</p> your `projectconf:` is giving main character energy here:

[env:genericSTM32F103R8] platform = ststm32 board = genericSTM32F103R8


You can override the default <yellow>STM32F103R8</yellow> (<cyan>20k RAM. 64 Flash</cyan>) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F103R8.json`. Like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:genericSTM32F103R8] platform = ststm32 board = genericSTM32F103R8

; change microcontroller board_build.mcu = stm32f103r8t6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 🌸 Uploading 🌸

<hotpink>STM32F103R8</hotpink> (<cyan>20k RAM. 64 Flash</cyan>) supports the next uploading protocols, bestie:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:genericSTM32F103R8] platform = ststm32 board = genericSTM32F103R8

upload_protocol = stlink


---

## 🦋 Debugging 🦋

`piodebug` — the "1-click" solution for debugging with a zero configuration. It's giving effortless, fr fr.

> <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<purple>STM32F103R8</purple> (<cyan>20k RAM. 64 Flash</cyan>) does **not** have on-board debug probe and <red>IS NOT READY for debugging</red>. 😭 You will need to use/buy one of the external probes listed below.

### 🔥 Compatible Tools 🔥

- `debugging_tool_blackmagic` — On-board: <green>Yes</green>, Default: <green>Yes</green>
- `debugging_tool_jlink` — On-board: (blank), Default: (blank)
- `debugging_tool_stlink` — On-board: (blank), Default: (blank)

---

## 💜 Frameworks 💜

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic, honestly.
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices.
- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

# 👑 STM32F103RB (20k RAM. 128k Flash) 👑

## ✨ Contents ✨

- <hotpink>STM32F103RB (20k RAM. 128k Flash)</hotpink>
  - Hardware
  - Configuration

- <pink>Frameworks</pink> 🧚

---

## 🌈 Hardware 🌈

<cyan>Platform</cyan> `platform_ststm32`: bestie, this is the STM32 squad — 32-bit Flash MCUs built on the ARM Cortex-M processor, and honestly? They were designed to hand MCU users a whole new level of freedom. It's a 32-bit product range that pulls together <hotpink>very high performance</hotpink>, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development. It's giving *iconic* and *efficient* at the same time. 💅

Here's the deets on this particular board:

- **Microcontroller**: `STM32F103RBT6`
- **Frequency**: `72MHz`
- **Flash**: `128KB`
- **RAM**: `20KB`
- **Vendor**: `Generic`

---

## ✨ Configuration ✨

Okay so for the `projectconf_env_board` option in `projectconf`, pls use the `genericSTM32F103RB` ID, mwah 💖:

[env:genericSTM32F103RB] platform = ststm32 board = genericSTM32F103RB


And get this — you can override the default STM32F103RB settings (<lavender>20k RAM. 128k Flash</lavender>) per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F103RB.json`. Like, `board_build.mcu`, `board_build.f_cpu`, all of those. No cap:

[env:genericSTM32F103RB] platform = ststm32 board = genericSTM32F103RB

; change microcontroller board_build.mcu = stm32f103rbt6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 💫 Uploading 💫

STM32F103RB (<lavender>20k RAM. 128k Flash</lavender>) supports the next uploading protocols, and you *will* be picking one of these:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

The default protocol is `stlink`, periodt.

You can change the upload protocol using the `projectconf_upload_protocol` option, like so 🫶:

[env:genericSTM32F103RB] platform = ststm32 board = genericSTM32F103RB

upload_protocol = stlink


---

## 🎀 Debugging 🎀

`piodebug` — it's the "1-click" solution for debugging with a zero configuration. Obsessed. 😭

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. ✨

Heads up bestie: STM32F103RB (<lavender>20k RAM. 128k Flash</lavender>) does <red>not</red> have an on-board debug probe and is <red>**NOT READY**</red> for debugging. You will need to use/buy one of the external probes listed below, fr fr. 🙈

- **Compatible Tools**: `debugging_tool_blackmagic` — **On-board**: (none) — **Default**: `Yes`
- **Compatible Tools**: `debugging_tool_jlink` — **On-board**: (none) — **Default**: (none)
- **Compatible Tools**: `debugging_tool_stlink` — **On-board**: (none) — **Default**: (none)

---

## 🦋 Frameworks 🦋

The framework lineup, and every single one is a whole vibe:

- **`framework_arduino`** — The Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Main character energy, honestly. 👑

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. Like, efficiency queen. ⭐

- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. The range?? Immaculate. 🌈

- **`framework_mbed`** — The mbed framework: The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. She does it all, bestie. 🎀

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. It's giving *expert* and *fast* at the same time. 💜

## <pink>🔧 Hardware 🔧</pink>

Platform `platform_ststm32`: <purple>The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.</purple> ✨

okay so here's the tea on this lil chip, bestie 👇

- **Microcontroller** — `STM32F103RCT6`
- **Frequency** — `72MHz`
- **Flash** — `256KB`
- **RAM** — `48KB`
- **Vendor** — `Generic`

---

## <cyan>⚙️ Configuration ⚙️</cyan>

fr fr, you're gonna want to use the `genericSTM32F103RC` ID for the `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F103RC] platform = ststm32 board = genericSTM32F103RC


And the way that you can override the default <hotpink>STM32F103RC (48k RAM. 256k Flash)</hotpink> settings per build environment is with the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F103RC.json`. So like, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:genericSTM32F103RC] platform = ststm32 board = genericSTM32F103RC

; change microcontroller board_build.mcu = stm32f103rct6

; change MCU frequency board_build.f_cpu = 72000000L


---

## <mint>🚀 Uploading 🚀</mint>

<pink>STM32F103RC (48k RAM. 256k Flash)</pink> supports the next uploading protocols, no cap:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:genericSTM32F103RC] platform = ststm32 board = genericSTM32F103RC

upload_protocol = stlink


---

## <purple>🐛 Debugging 🐛</purple>

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic behaviour honestly 🫶

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>STM32F103RC (48k RAM. 256k Flash)</pink> does **not** have on-board debug probe and **IS NOT READY for debugging**. You will need to use/buy one of the external probes listed below. 💀

- **`debugging_tool_blackmagic`** — On-board: *(nothing listed)* · Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(nothing listed)* · Default: *(nothing listed)*
- **`debugging_tool_stlink`** — On-board: *(nothing listed)* · Default: *(nothing listed)*

---

## <lavender>📚 Frameworks 📚</lavender>

- **`framework_arduino`** — The Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. ✨
- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. 🌈
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

# 💜 STM32F103RE (64k RAM. 512k Flash) 💜

## <cyan>📋 Contents 📋</cyan>

- STM32F103RE (64k RAM. 512k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## <pink>🔧 Hardware 🔧</pink>

Platform `platform_ststm32`: <purple>The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.</purple> 🌸

and here's the spec sheet, bestie 👇

- **Microcontroller** — `STM32F103RET6`
- **Frequency** — `72MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `Generic`

You can switch between debugging debugging_tools using `projectconf_debug_tool` option in `projectconf`.

STM32F103T8 (20k RAM. 64k Flash) does **not** have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below.

┌───────────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_blackmagic │ │ Yes │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_jlink │ │ │ ├───────────────────────────┼──────────┼─────────┤ │ debugging_tool_stlink │ │ │ └───────────────────────────┴──────────┴─────────┘


---

## 🌈 Frameworks 🌈

okay bestie here's the menu of frameworks you can pick from, each one a whole vibe 👑

┌──────────────────────┬────────────────────────────┐ │ Name │ Description │ ├──────────────────────┼────────────────────────────┤ │ framework_arduino │ Arduino Wiring-based │ │ │ Framework allows writing │ │ │ cross-platform software to │ │ │ control devices attached │ │ │ to a wide range of Arduino │ │ │ boards to create all kinds │ │ │ of creative coding, │ │ │ interactive objects, │ │ │ spaces or physical │ │ │ experiences. │ ├──────────────────────┼────────────────────────────┤ │ framework_cmsis │ The ARM Cortex │ │ │ Microcontroller Software │ │ │ Interface Standard (CMSIS) │ │ │ is a vendor-independent │ │ │ hardware abstraction layer │ │ │ for the Cortex-M processor │ │ │ series and specifies │ │ │ debugger interfaces. The │ │ │ CMSIS enables consistent │ │ │ and simple software │ │ │ interfaces to the │ │ │ processor for interface │ │ │ peripherals, real-time │ │ │ operating systems, and │ │ │ middleware. It simplifies │ │ │ software re-use, reducing │ │ │ the learning curve for new │ │ │ microcontroller developers │ │ │ and cutting the │ │ │ time-to-market for │ │ │ devices. │ ├──────────────────────┼────────────────────────────┤ │ framework_libopencm3 │ The libOpenCM3 framework │ │ │ aims to create a │ │ │ free/libre/open-source │ │ │ firmware library for │ │ │ various ARM │ │ │ Cortex-M0(+)/M3/M4 │ │ │ microcontrollers, │ │ │ including ST STM32, Ti │ │ │ Tiva and Stellaris, NXP │ │ │ LPC 11xx, 13xx, 15xx, 17xx │ │ │ parts, Atmel SAM3, Energy │ │ │ Micro EFM32 and others. │ ├──────────────────────┼────────────────────────────┤ │ framework_stm32cube │ STM32Cube embedded │ │ │ software libraries, │ │ │ including: The HAL │ │ │ hardware abstraction │ │ │ layer, enabling │ │ │ portability between │ │ │ different STM32 devices │ │ │ via standardized API │ │ │ calls; The Low-Layer (LL) │ │ │ APIs, a light-weight, │ │ │ optimized, expert oriented │ │ │ set of APIs designed for │ │ │ both performance and │ │ │ runtime efficiency. │ └──────────────────────┴────────────────────────────┘


---

## 🦋 STM32F103T8 (20k RAM. 64k Flash) 🦋

### ✨ Contents ✨

- STM32F103T8 (20k RAM. 64k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 💅 Hardware 💅

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

┌─────────────────┬───────────────┐ │ Microcontroller │ STM32F103T8T6 │ ├─────────────────┼───────────────┤ │ Frequency │ 72MHz │ ├─────────────────┼───────────────┤ │ Flash │ 64KB │ ├─────────────────┼───────────────┤ │ RAM │ 20KB │ ├─────────────────┼───────────────┤ │ Vendor │ Generic │ └─────────────────┴───────────────┘


---

### 🎀 Configuration 🎀

Please use `genericSTM32F103T8` ID for `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F103T8] platform = ststm32 board = genericSTM32F103T8


You can override default STM32F103T8 (20k RAM. 64k Flash) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `genericSTM32F103T8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:genericSTM32F103T8] platform = ststm32 board = genericSTM32F103T8

; change microcontroller board_build.mcu = stm32f103t8t6

; change MCU frequency board_build.f_cpu = 72000000L


---

### 🌸 Uploading 🌸

STM32F103T8 (20k RAM. 64k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:genericSTM32F103T8] platform = ststm32 board = genericSTM32F103T8

upload_protocol = stlink


---

### 💜 Debugging 💜

`piodebug` - "1-click" solution for debugging with a zero configuration.

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debugging_tools using `projectconf_debug_tool` option in `projectconf`.

<pink>so real talk bestie</p> — `STM32F103T8` (20k RAM. 64k Flash) does <red>NOT</red> have an on-board debug probe and it <red>IS NOT READY</red> for debugging. Like, at all. You will need to use/buy one of the external probes listed below. No probe, no debugging, periodt. 💅

Here's the compatible-tools vibe check:

- **`debugging_tool_blackmagic`** — On-board: nope (blank). Default: <green>Yes</green> ✨
- **`debugging_tool_jlink`** — On-board: nope (blank). Default: nope (blank).
- **`debugging_tool_stlink`** — On-board: nope (blank). Default: nope (blank).

---

### 🌈 Frameworks

Okay so these are the frameworks you can plug into this board, and honestly each one is giving a whole different personality:

- **`framework_arduino`** — <purple>Arduino Wiring-based Framework</purple> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. It's giving *maker energy*, fr fr. 🎀
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. <cyan>Very "I read the datasheet" of it.</cyan> 👑
- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. <mint>Open source slay.</mint> 🦋
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <yellow>Two layers, one iconic duo.</yellow> ⭐

---

## 💖 STM32F103TB (20k RAM. 128k Flash)

### 📖 Contents

- STM32F103TB (20k RAM. 128k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

The stats, bestie, look at them:

- **Microcontroller** — `STM32F103TBT6`
- **Frequency** — `72MHz`
- **Flash** — `128KB`
- **RAM** — `20KB`
- **Vendor** — `Generic`

---

### ⚙️ Configuration

Please use `genericSTM32F103TB` ID for `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F103TB] platform = ststm32 board = genericSTM32F103TB


You can override default STM32F103TB (20k RAM. 128k Flash) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `genericSTM32F103TB.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:genericSTM32F103TB] platform = ststm32 board = genericSTM32F103TB

; change microcontroller board_build.mcu = stm32f103tbt6

; change MCU frequency board_build.f_cpu = 72000000L


---

### 🚀 Uploading

STM32F103TB (20k RAM. 128k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using `projectconf_upload_protocol` option:

[env:genericSTM32F103TB] platform = ststm32 board = genericSTM32F103TB

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <rainbow>iconic behaviour honestly</rainbow> ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>Don't skip this step bestie, I'm begging.</red> 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

STM32F103TB (20k RAM. 128k Flash) does not have on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of external probe listed below.

- **`debugging_tool_blackmagic`** — On-board: nope (blank). Default: <green>Yes</green> 🌸
- **`debugging_tool_jlink`** — On-board: nope (blank). Default: nope (blank).
- **`debugging_tool_stlink`** — On-board: nope (blank). Default: nope (blank).

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *maker era*, no cap.

- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a <purple>vendor-independent hardware abstraction layer</purple> for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. lowkey a whole glow-up for portability ✨

- **`framework_libopencm3`** — the libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. open source icon behaviour fr fr 🫶

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. HAL for the girlies who want portability, LL for the ones who want *speed* 💅

---

# 🌸 STM32F103VB (20k RAM. 128k Flash) 🌸

## 📖 Contents

- STM32F103VB (20k RAM. 128k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. like… she does it ALL 👑

- **Microcontroller** — `STM32F103VBT6`
- **Frequency** — `72MHz`
- **Flash** — `128KB`
- **RAM** — `20KB`
- **Vendor** — `Generic`

---

## ⚙️ Configuration

Please use the `genericSTM32F103VB` ID for the `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F103VB] platform = ststm32 board = genericSTM32F103VB


You can override the default STM32F103VB (20k RAM. 128k Flash) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F103VB.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. yes bestie you can customise everything, main character energy ✨

[env:genericSTM32F103VB] platform = ststm32 board = genericSTM32F103VB

; change microcontroller board_build.mcu = stm32f103vbt6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 🚀 Uploading

STM32F103VB (20k RAM. 128k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 🎀

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:genericSTM32F103VB] platform = ststm32 board = genericSTM32F103VB

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed actually 💖

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

STM32F103VB (20k RAM. 128k Flash) does **not** have an on-board debug probe and **IS NOT READY for debugging** 😭. You will need to use/buy one of the external probes listed below. not me having to go shopping for hardware again 🙈

- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)* — Default: *(none)*

## 🧚 Frameworks

okay so these are the framework options you can plug into this platform, and each one is literally its own whole world:

- **`framework_arduino`** — the Arduino Wiring-based Framework 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving "art kid meets engineer" fr fr.
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. it simplifies software re-use, reduces the learning curve for new microcontroller developers, and cuts the time-to-market for devices. queen behavior honestly 👑
- **`framework_libopencm3`** — the libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. so many chips, so little time 😭
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. iconic combo, no cap ✨

---

## 💅 STM32F103VC (48k RAM. 256k Flash)

### 🎀 Contents

- STM32F103VC (48k RAM. 256k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. main character energy for real 🫶

- **Microcontroller** — `STM32F103VCT6`
- **Frequency** — `72MHz`
- **Flash** — `256KB`
- **RAM** — `48KB`
- **Vendor** — `Generic`

---

### ⚙️ Configuration

bestie, please use `genericSTM32F103VC` ID for `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F103VC] platform = ststm32 board = genericSTM32F103VC


You can override default STM32F103VC (48k RAM. 256k Flash) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `genericSTM32F103VC.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:genericSTM32F103VC] platform = ststm32 board = genericSTM32F103VC

; change microcontroller board_build.mcu = stm32f103vct6

; change MCU frequency board_build.f_cpu = 72000000L


---

### 🚀 Uploading

STM32F103VC (48k RAM. 256k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:genericSTM32F103VC] platform = ststm32 board = genericSTM32F103VC

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed 😌

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🔥

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

STM32F103VC (48k RAM. 256k Flash) does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 💀

- **`debugging_tool_blackmagic`** — On-board: *(nothing)*, Default: `Yes`
- **`debugging_tool_jlink`** — On-board: *(nothing)*, Default: *(nothing)*
- **`debugging_tool_stlink`** — On-board: *(nothing)*, Default: *(nothing)*

## ✨ Frameworks ✨

bestie these are the frameworks this platform ships with, and honestly? a whole buffet 💅

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *make anything, anywhere* 🌈
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS), a vendor-independent hardware abstraction layer for the Cortex-M processor series that also specifies debugger interfaces. CMSIS gives you consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. it simplifies software re-use, cuts the learning curve for new microcontroller developers, and cuts the time-to-market for devices. lowkey iconic ✨
- **`framework_libopencm3`** — libOpenCM3 is aiming to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others 🫶
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🔥

---

## 👑 STM32F103VD (64k RAM. 384k Flash)

### 📋 Contents

- STM32F103VD (64k RAM. 384k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🛠️ Hardware

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. no cap, that's a lot of slay in one chip 💜

- **Microcontroller** — `STM32F103VDT6`
- **Frequency** — `72MHz`
- **Flash** — `384KB`
- **RAM** — `64KB`
- **Vendor** — `Generic`

---

### ⚙️ Configuration

okay so, please use the `genericSTM32F103VD` ID for the `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F103VD] platform = ststm32 board = genericSTM32F103VD


you can override the default STM32F103VD (64k RAM. 384k Flash) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F103VD.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. 🎀

[env:genericSTM32F103VD] platform = ststm32 board = genericSTM32F103VD

; change microcontroller board_build.mcu = stm32f103vdt6

; change MCU frequency board_build.f_cpu = 72000000L


---

### 🚀 Uploading

STM32F103VD (64k RAM. 384k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

default protocol is `stlink` 💅

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:genericSTM32F103VD] platform = ststm32 board = genericSTM32F103VD

upload_protocol = stlink


---

### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed honestly 😭

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further instructions and configuration information. don't skip this bestie, fr fr 🙈

you can switch between debugging tools using the `projectconf_debug_tool` option in `projectconf`.

<pink>STM32F103VD (64k RAM. 384k Flash)</pink> does <hotpink>NOT</hotpink> have an on-board debug probe and is <red>IS NOT READY for debugging</red>. 💀 You will need to use/buy one of the external probes listed below, bestie.

Compatible Tools for it:

- **`debugging_tool_blackmagic`** — On-board: *(blank)*, Default: <green>Yes</green>
- **`debugging_tool_jlink`** — On-board: *(blank)*, Default: *(blank)*
- **`debugging_tool_stlink`** — On-board: *(blank)*, Default: *(blank)*

---

## 🌸 Frameworks 🌸

Here's the tea on what you can build with:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. 💅

- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. 🦋

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

## 👑 STM32F103VE (64k RAM. 512k Flash) 👑

### Contents

- STM32F103VE (64k RAM. 512k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

**Platform `platform_ststm32`**: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 🌈

| | |
|---|---|
| Microcontroller | `STM32F103VET6` |
| Frequency | `72MHz` |
| Flash | `512KB` |
| RAM | `64KB` |
| Vendor | `Generic` |

### Configuration

Please use `genericSTM32F103VE` ID for `projectconf_env_board` option in projectconf:

[env:genericSTM32F103VE] platform = ststm32 board = genericSTM32F103VE


You can override default <pink>STM32F103VE (64k RAM. 512k Flash)</pink> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `genericSTM32F103VE.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:genericSTM32F103VE] platform = ststm32 board = genericSTM32F103VE

; change microcontroller board_build.mcu = stm32f103vet6

; change MCU frequency board_build.f_cpu = 72000000L


### Uploading

<pink>STM32F103VE</pink> (64k RAM. 512k Flash) says bestie I can upload with ALL of these 💅:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

<purple>Default protocol is `stlink`</purple> — that's the vibe unless you say otherwise.

Wanna switch it up? Use the `projectconf_upload_protocol` option, like:

[env:genericSTM32F103VE] platform = ststm32 board = genericSTM32F103VE

upload_protocol = stlink


---

### 🦋 Debugging 🦋

`piodebug` — the "1-click" solution for debugging with a zero configuration. no cap, it just works ✨

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging debug tools using the `projectconf_debug_tool` option in `projectconf`.

<pink>STM32F103VE</pink> (64k RAM. 512k Flash) does **not** have an on-board debug probe and **IS NOT READY for debugging** 😭 You will need to use/buy one of the external probes listed below.

- **`debugging_tool_blackmagic`** — On-board: (nope), Default: **Yes** 👑
- **`debugging_tool_jlink`** — On-board: (nope), Default: (nope)
- **`debugging_tool_stlink`** — On-board: (nope), Default: (nope)

---

### 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. the main character of frameworks fr 💖

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. so organized, so iconic ✨

- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. free/libre/open-source?? we love to see it 🫶

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. lowkey the expert mode pick 💅

---

## 💜 STM32F103ZC (48k RAM. 256k Flash) 💜

### Contents

- STM32F103ZC (48k RAM. 256k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🎀 Hardware 🎀

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. okay but that's a LOT of slay packed into one chip 😭🔥

- **Microcontroller** — `STM32F103ZCT6`
- **Frequency** — `72MHz`
- **Flash** — `256KB`

- **RAM** — `48KB` 💾
  - **Vendor** — `Generic`

---

### 🌸 Configuration

<pink>Okay bestie, listen</pink> — please use the `genericSTM32F103ZC` ID for the `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F103ZC] platform = ststm32 board = genericSTM32F103ZC


<purple>And here's the tea ☕</purple> — you can override the default STM32F103ZC (48k RAM. 256k Flash) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F103ZC.json`. Like, for example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:genericSTM32F103ZC] platform = ststm32 board = genericSTM32F103ZC

; change microcontroller board_build.mcu = stm32f103zct6

; change MCU frequency board_build.f_cpu = 72000000L


---

### ✨ Uploading

STM32F103ZC (48k RAM. 256k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:genericSTM32F103ZC] platform = ststm32 board = genericSTM32F103ZC

upload_protocol = stlink


---

### 🦋 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <cyan>literally iconic fr</cyan>

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<purple>Not me being the bearer of bad news</purple> 😭 — STM32F103ZC (48k RAM. 256k Flash) does **not** have an on-board debug probe and is **NOT READY** for debugging. You will need to use/buy one of the external probes listed below.

Compatible Tools:

- `debugging_tool_blackmagic` — On-board: (blank) — Default: **Yes**
- `debugging_tool_jlink` — On-board: (blank) — Default: (blank)
- `debugging_tool_stlink` — On-board: (blank) — Default: (blank)

---

### 🎀 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🔥

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices.

- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. 🫶

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 💅

- STM32F103ZD (64k RAM. 384k Flash) 💖

  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## <pink>Hardware</pink> 🛠️✨

<purple>Platform</purple> `platform_ststm32`: bestie, the STM32 family is a whole lineup of 32-bit Flash MCUs built on the ARM Cortex-M processor, and it's literally designed to hand MCU users new degrees of freedom. It's giving a 32-bit product range that pulls together **very high performance**, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development. periodt. 💅

- **Microcontroller**: `STM32F103ZDT6`
- **Frequency**: `72MHz`
- **Flash**: `384KB`
- **RAM**: `64KB`
- **Vendor**: `Generic`

---

## <cyan>Configuration</cyan> 🎀

okay so please use the `genericSTM32F103ZD` ID for the `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F103ZD] platform = ststm32 board = genericSTM32F103ZD


You can override the default STM32F103ZD (64k RAM. 384k Flash) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F103ZD.json`. Like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:genericSTM32F103ZD] platform = ststm32 board = genericSTM32F103ZD

; change microcontroller board_build.mcu = stm32f103zdt6

; change MCU frequency board_build.f_cpu = 72000000L


---

## <mint>Uploading</mint> 🚀

STM32F103ZD (64k RAM. 384k Flash) supports the next uploading protocols, no cap:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 👑

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:genericSTM32F103ZD] platform = ststm32 board = genericSTM32F103ZD

upload_protocol = stlink


---

## <purple>Debugging</purple> 🐛💜

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic fr fr.

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

STM32F103ZD (64k RAM. 384k Flash) does **not** have an on-board debug probe and is **NOT READY** for debugging 😭. You will need to use/buy one of the external probes listed below:

- **`debugging_tool_blackmagic`** — On-board: (none) — Default: **Yes** ✅
- **`debugging_tool_jlink`** — On-board: (none) — Default: (none)
- **`debugging_tool_stlink`** — On-board: (none) — Default: (none)

---

## <yellow>Frameworks</yellow> 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. 💅
- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. 🦋
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

## <hotpink>STM32F103ZE (64k RAM. 512k Flash)</hotpink> 💖

### Contents 🎀

- STM32F103ZE (64k RAM. 512k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🛠️ Hardware

**Platform `platform_ststm32`**: ok so the STM32 family of 32-bit Flash MCUs is built on the ARM Cortex-M processor, and bestie, it was literally *designed* to give MCU users new degrees of freedom. It's giving a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development. <pink>iconic behavior tbh</pink> 💅

Here's the tea on this specific chip:

- **Microcontroller** — `STM32F103ZET6`
- **Frequency** — `72MHz`
- **Flash** — `512KB`
- **RAM** — `64KB`
- **Vendor** — `Generic`

---

## ⚙️ Configuration

Please use the <purple>`genericSTM32F103ZE`</purple> ID for the `projectconf_env_board` option in projectconf:

[env:genericSTM32F103ZE] platform = ststm32 board = genericSTM32F103ZE


You can override the default `STM32F103ZE` (<cyan>64k RAM. 512k Flash</cyan>) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F103ZE.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:genericSTM32F103ZE] platform = ststm32 board = genericSTM32F103ZE

; change microcontroller board_build.mcu = stm32f103zet6

; change MCU frequency board_build.f_cpu = 72000000L


---

## 🚀 Uploading

`STM32F103ZE` (<cyan>64k RAM. 512k Flash</cyan>) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink> 💖

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:genericSTM32F103ZE] platform = ststm32 board = genericSTM32F103ZE

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. <rainbow>obsessed</rainbow> 🦋

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on a compatible debug tool below for the further instructions and configuration information. <red>do not skip this bestie, fr fr</red> 😭

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in projectconf.

`STM32F103ZE` (<cyan>64k RAM. 512k Flash</cyan>) does **not** have an on-board debug probe and <red>IS NOT READY for debugging</red>. You will need to use/buy one of the external probes listed below. 💀

- **Compatible Tools:**
  - `debugging_tool_blackmagic` — On-board: *(none)* — Default: `Yes`
  - `debugging_tool_jlink` — On-board: *(none)* — Default: *(none)*
  - `debugging_tool_stlink` — On-board: *(none)* — Default: *(none)*

---

## 📚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>so cute, so versatile</pink> 🎀
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. <purple>slay, standardized, streamlined</purple> ✨
- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. <mint>open source queen behavior</mint> 🫶
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

## 🌸 STM32F303CB (32k RAM. 128k Flash)

### 📑 Contents

- STM32F303CB (32k RAM. 128k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🛠️ Hardware

**Platform `platform_ststm32`**: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💖

- **Microcontroller** — `STM32F303CBT6`
- **Frequency** — `72MHz`
- **Flash** — `128KB`
- **RAM** — `32KB`
- **Vendor** — `Generic`

### ⚙️ Configuration

Please use the <purple>`genericSTM32F303CB`</purple> ID for the `projectconf_env_board` option in projectconf:

[env:genericSTM32F303CB] platform = ststm32 board = genericSTM32F303CB


<pink>okay so</pink> you can override the default <hotpink>STM32F303CB</hotpink> (32k RAM. 128k Flash) settings <purple>per build environment</purple> using the `board_***` option, where `***` is a JSON object path straight out of the board manifest `genericSTM32F303CB.json`. Think `board_build.mcu`, `board_build.f_cpu`, etc. <rainbow>✨</rainbow>

[env:genericSTM32F303CB] platform = ststm32 board = genericSTM32F303CB

; change microcontroller board_build.mcu = stm32f303cbt6

; change MCU frequency board_build.f_cpu = 72000000L


---

## <cyan>Uploading</cyan> 🚀💖

<hotpink>STM32F303CB</hotpink> (32k RAM. 128k Flash) supports the next uploading protocols, bestie:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` <yellow>(the moment of truth)</yellow> ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:genericSTM32F303CB] platform = ststm32 board = genericSTM32F303CB

upload_protocol = stlink


---

## <lavender>Debugging</lavender> 🐛💅

`piodebug` — the "1-click" solution for debugging with a zero configuration. <pink>obsessed, honestly.</pink>

> <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<hotpink>STM32F303CB</hotpink> (32k RAM. 128k Flash) does <red>not</red> have an on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of the external probes listed below. <cyan>(no cap, it's giving "go shopping")</cyan> 🛍️

**Compatible Tools — On-board — Default:**

- `debugging_tool_blackmagic` — on-board: *(none)*, default: `Yes` <green>👑</green>
- `debugging_tool_jlink` — on-board: *(none)*, default: *(none)*
- `debugging_tool_stlink` — on-board: *(none)*, default: *(none)*

---

## <mint>Frameworks</mint> 🌈🦋

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a <purple>vendor-independent</purple> hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, <yellow>reducing the learning curve</yellow> for new microcontroller developers and <yellow>cutting the time-to-market</yellow> for devices. <pink>(it's giving "we made it easy for u")</pink> 💖
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs — a light-weight, optimized, expert-oriented set of APIs designed for both performance and runtime efficiency. <hotpink>slay.</hotpink> ⭐

---

# <rainbow>STM32F401RB (64k RAM. 128k Flash)</rainbow> 👑

## <lavender>Contents</lavender> 📋

- STM32F401RB (64k RAM. 128k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## <cyan>Hardware</cyan> 🔧

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <pink>iconic behavior.</pink> ✨

**Specs, bestie:**

- Microcontroller — `STM32F401RB`
- Frequency — `84MHz`
- Flash — `128KB`
- RAM — `64KB`
- Vendor — `Generic`

## <purple>Configuration</purple> 🎀

Please use the `genericSTM32F401RB` ID for the `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F401RB] platform = ststm32 board = genericSTM32F401RB


You can override the default <hotpink>STM32F401RB</hotpink> (64k RAM. 128k Flash) settings <purple>per build environment</purple> using the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F401RB.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <rainbow>💅</rainbow>

[env:genericSTM32F401RB] platform = ststm32 board = genericSTM32F401RB

; change microcontroller board_build.mcu = stm32f401rb

; change MCU frequency board_build.f_cpu = 84000000L


## <mint>Uploading</mint> 🚀🌸

<hotpink>STM32F401RB</hotpink> (64k RAM. 128k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `serial` <yellow>(the moment of truth, part two)</yellow> ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:genericSTM32F401RB] platform = ststm32 board = genericSTM32F401RB

upload_protocol = serial


## <lavender>Debugging</lavender> 🐛💜

`piodebug` — the "1-click" solution for debugging with a zero configuration. <pink>no setup, just vibes.</pink>

> <red>WARNING:</red>
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<hotpink>STM32F401RB</hotpink> (64k RAM. 128k Flash) does <red>not</red> have an on-board debug probe and <red>IS NOT READY</red> for debugging. You will need to use/buy one of the external probes listed below. <cyan>(same energy as before, bestie — external probe or it's not happening)</cyan> 🫶

**Compatible Tools — On-board — Default:**

- `debugging_tool_blackmagic` — on-board: *(none)*, default: `Yes` <green>👑</green>
- `debugging_tool_jlink` — on-board: *(none)*, default: *(none)*
- `debugging_tool_stlink` — on-board: *(none)*, default: *(none)*

---

## <mint>Frameworks</mint> 🌈🦋

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a <purple>vendor-independent</purple> hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, <yellow>reducing the learning curve</yellow> for new microcontroller developers and <yellow>cutting the time-to-market</yellow> for devices. <pink>(yes, same queen, different board)</pink> 💖
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs — a light-weight, optimized, expert-oriented set of APIs designed for both performance and runtime efficiency. <hotpink>ate and left no crumbs.</hotpink> ⭐

## ✨ Frameworks ✨

ok so here's the whole framework buffet, bestie — pick your fighter 💅

- **`framework_arduino`** — the Arduino Wiring-based Framework, aka the glow-up that lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can build all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving art-school-meets-electronics 🎨
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. it's the peace-treaty framework, no cap 🤝
- **`framework_spl`** — The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers. literally a "don't talk to the registers, they're scary" framework 🙈
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. main character framework energy fr fr 👑

---

## 🎀 STM32F401RC (64k RAM. 256k Flash) 🎀

### 📋 Contents

- STM32F401RC (64k RAM. 256k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 🔧 Hardware

**Platform `platform_ststm32`:** The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. iconic behaviour honestly 🌈

here's the lil spec sheet moment:

- **Microcontroller:** `STM32F401RC`
- **Frequency:** `84MHz`
- **Flash:** `256KB`
- **RAM:** `64KB`
- **Vendor:** `Generic`

---

### ⚙️ Configuration

Please use `genericSTM32F401RC` ID for `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F401RC] platform = ststm32 board = genericSTM32F401RC


You can override default STM32F401RC (64k RAM. 256k Flash) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `genericSTM32F401RC.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:genericSTM32F401RC] platform = ststm32 board = genericSTM32F401RC

; change microcontroller board_build.mcu = stm32f401rc

; change MCU frequency board_build.f_cpu = 84000000L


see how easy that was?? customize away, queen 💅✨

---

### 🚀 Uploading

STM32F401RC (64k RAM. 256k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `serial` 🍓

You can change upload protocol using `projectconf_upload_protocol` option:

[env:genericSTM32F401RC] platform = ststm32 board = genericSTM32F401RC

upload_protocol = serial


---

### 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. obsessed 😭🫶

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

STM32F401RC (64k RAM. 256k Flash) does not have on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of external probe listed below. 💀 no on-board probe bestie, you gotta go shopping 🛍️

okay so bestie, we're mid-table but it's fine, let's keep it moving 💖

Compatible Tools:
- **`debugging_tool_blackmagic`** — On-board: *(nothing)*, Default: **Yes** ✨
- **`debugging_tool_jlink`** — On-board: *(nothing)*, Default: *(nothing)*
- **`debugging_tool_stlink`** — On-board: *(nothing)*, Default: *(nothing)*

---

## <pink>Frameworks</pink> 🌈

- **`framework_arduino`** — The Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces, or physical experiences. It's giving main character energy for your DIY projects. 🎀

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reduces the learning curve for new microcontroller developers, and cuts the time-to-market for devices. Lowkey iconic. 👑

- **`framework_spl`** — The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The whole idea is to save you (especially new users) from having to deal directly with the registers. No cap, it's a lifesaver. 🦋

- **`framework_stm32cube`** — STM32Cube embedded software libraries include: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert-oriented set of APIs designed for both performance and runtime efficiency. It's giving versatility and efficiency, periodt. 💅

---

## <purple>STM32F401RE (96k RAM. 512k Flash)</purple> 🌟

### Contents

- STM32F401RE (96k RAM. 512k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <cyan>Hardware</cyan>

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💖

- Microcontroller: `STM32F401RE`
- Frequency: `84MHz`
- Flash: `512KB`
- RAM: `96KB`
- Vendor: `Generic`

---

### <mint>Configuration</mint>

Please use `genericSTM32F401RE` ID for `projectconf_env_board` option in `projectconf`:

[env:genericSTM32F401RE] platform = ststm32 board = genericSTM32F401RE


You can override default STM32F401RE (96k RAM. 512k Flash) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `genericSTM32F401RE.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:genericSTM32F401RE] platform = ststm32 board = genericSTM32F401RE

; change microcontroller board_build.mcu = stm32f401re

; change MCU frequency board_build.f_cpu = 84000000L


---

### <yellow>Uploading</yellow>

STM32F401RE (96k RAM. 512k Flash) supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`

- **`stlink`** 💅 — that's the vibe, okay?

<pink>Default protocol is serial</p>, bestie. That's just how it comes out the box.

You can change upload protocol using <purple>`projectconf_upload_protocol`</purple> option:

[env:genericSTM32F401RE] platform = ststm32 board = genericSTM32F401RE

upload_protocol = serial


---

## 🌸 Debugging 🌸

<hotpink>`piodebug`</hotpink> — the "1-click" solution for debugging with a zero configuration. literally one click, no setup arc, no drama. ✨

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. no skipping this step, it WILL be a whole thing if you do. 😭

You can switch between <purple>`debugging`</purple> <purple>`debugging_tools`</purple> using <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

STM32F401RE (96k RAM. 512k Flash) does not have on-board debug probe and <red>**IS NOT READY**</red> for debugging. You will need to use/buy one of external probe listed below. she's giving "bring your own probe" energy fr fr. 💀

**Compatible Tools** — the columns here are *Compatible Tools*, *On-board*, and *Default*:

- **`debugging_tool_blackmagic`** — Default: `Yes` 👑 (nothing listed under On-board)
- **`debugging_tool_jlink`** — no values listed in this table
- **`debugging_tool_stlink`** — no values listed in this table

---

## 🎀 Frameworks 🎀

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. cute, chaotic, iconic. 🦋

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. so organized of her. ✨

- **`framework_spl`** — The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers. yes queen, save us from the registers. 🙈

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. lowkey the whole package. 💜

---

# 👑 STM32F407VE (192k RAM. 512k Flash) 👑

## Contents

- STM32F407VE (192k RAM. 512k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌈 Hardware 🌈

Platform <purple>`platform_ststm32`</purple>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. okay she's doing a LOT and doing it well. 💅

- **Microcontroller** — `STM32F407VET6`
- **Frequency** — `168MHz`
- **Flash** — `502.23KB`
- **RAM** — `128KB`
- **Vendor** — `Generic`

---

## ⭐ Configuration ⭐

Please use <purple>`genericSTM32F407VET6`</purple> ID for <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:genericSTM32F407VET6] platform = ststm32 board = genericSTM32F407VET6


You can override the default <pink>STM32F407VE (192k RAM. 512k Flash)</pink> settings *per build environment* using the `board_***` option, where `***` is a JSON object path from the board manifest `genericSTM32F407VET6.json`. Like, for example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:genericSTM32F407VET6] platform = ststm32 board = genericSTM32F407VET6

; change microcontroller board_build.mcu = stm32f407vet6

; change MCU frequency board_build.f_cpu = 168000000L


---

## ✨ Uploading ✨

<cyan>STM32F407VE (192k RAM. 512k Flash)</cyan> supports the next uploading protocols, bestie:

- `dfu`
- `jlink`
- `stlink`

The default protocol is `stlink` — that's the one it reaches for automatically, no cap. 🫶

Wanna switch it up? You can change the upload protocol using the `upload_protocol` option:

[env:genericSTM32F407VET6] platform = ststm32 board = genericSTM32F407VET6

upload_protocol = stlink


---

## ✨ Debugging ✨

`piodebug` — the "1-click" solution for debugging with a zero configuration. Iconic behaviour honestly. ✨

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debug_tools` using the `debug_tool` option in `platformio.ini`. 🎀

<purple>STM32F407VE (192k RAM. 512k Flash)</purple> does <red>**not**</red> have an on-board debug probe and **IS NOT READY for debugging**. 😭 You will need to use/buy one of the external probes listed below.

**Compatible Tools**

- `jlink` — On-board: *(none)* — Default: *(none)*
- `stlink` — On-board: *(none)* — Default: **Yes** 👑

---

## ✨ Frameworks ✨

- **`arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈
- **`cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. 🦋
- **`stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 💜

---

# 🌸 STM32F407VG (192k RAM. 1024k Flash) 🌸

## Contents

- STM32F407VG (192k RAM. 1024k Flash)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware

Platform `ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 🔥

- **Microcontroller** — `STM32F407VGT6`
- **Frequency** — `168MHz`
- **Flash** — `1MB`
- **RAM** — `192KB`
- **Vendor** — `Generic`

│ └────────────┼────┴───────────────┘ │ │ │ │ Configuration│ │ │ Please use genericSTM32F407VGT6│ID for projectconf_env_board│option in projectconf: │ │ │ │ │ [env:genericSTM32F407VGT6] │ │ platform = ststm32 │ │ board = genericSTM32F407VGT6│ │ │ │ │ You can override default STM32F407VG (192k RAM. 1024k Flash)│settings per build│environment using board_* option, where * is a│JSON object path from│board manifest genericSTM32F407VGT6.json. For example, board_build.mcu, board_build.f_cpu, etc.


okay bestie so real talk — you're gonna wanna use the <pink>`genericSTM32F407VGT6`</pink> ID for the <pink>`projectconf_env_board`</pink> option inside <pink>`projectconf`</pink>, mmkay? like that's the vibe. it's giving:

[env:genericSTM32F407VGT6] platform = ststm32 board = genericSTM32F407VGT6


and the tea ☕ is that you can <hotpink>override the default STM32F407VG (192k RAM. 1024k Flash) settings</hotpink> per build environment using the <pink>`board_***`</pink> option, where <pink>`***`</pink> is a JSON object path from the board manifest <pink>`genericSTM32F407VGT6.json`</pink>. for example: <pink>`board_build.mcu`</pink>, <pink>`board_build.f_cpu`</pink>, etc. etc. 💅

[env:genericSTM32F407VGT6] platform = ststm32 board = genericSTM32F407VGT6

; change microcontroller board_build.mcu = stm32f407vgt6

; change MCU frequency board_build.f_cpu = 168000000L


---

## 🚀 Uploading

so the STM32F407VG <yellow>(192k RAM. 1024k Flash)</yellow> supports these uploading protocols, and no we're not gatekeeping:

- `dfu`
- `jlink`
- `stlink`

the default protocol is <hotpink>`stlink`</hotpink> — like, that's the one it picks if you don't say anything, bestie, no cap.

but you *can* change the upload protocol using the <pink>`projectconf_upload_protocol`</pink> option, and honestly it's so easy:

[env:genericSTM32F407VGT6] platform = ststm32 board = genericSTM32F407VGT6

upload_protocol = stlink


periodt. ✨

---

## 🐛 Debugging

<rainbow>`piodebug`</rainbow> — it's the <purple>"1-click"</purple> solution for debugging with a zero configuration. like, ZERO config. iconic behavior honestly 👑

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

and yeah you can switch between debugging debugging_tools using the <pink>`projectconf_debug_tool`</pink> option in <pink>`projectconf`</pink>. so many options, so much power, we love to see it 💖

---

<pink>okay so real talk before anything else, bestie</pink> — the `STM32F407VG` (192k RAM. 1024k Flash) does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭💀. You will need to use/buy one of the external probes listed below. No skipping this, fr fr.

---

### 🔧 Compatible Tools

- **`debugging_tool_jlink`** — nothing marked in the On-board or Default columns
- **`debugging_tool_stlink`** — On-board: `Yes`

(Nothing in the Default column for either of them, so don't come for me 🫶)

---

### 🧚 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. 👑
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

## 🎀 STM32F4Stamp F405 Contents

- STM32F4Stamp F405
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌸 Hardware

<purple>`platform_ststm32`</purple>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💜

- **Microcontroller** — `STM32F405RGT6`
- **Frequency** — `168MHz`
- **Flash** — `1MB`
- **RAM** — `192KB`
- **Vendor** — `Generic`

---

## ⚙️ Configuration

Please use `stm32f4stamp` ID for `projectconf_env_board` option in `projectconf`:

[env:stm32f4stamp] platform = ststm32 board = stm32f4stamp


You can override default STM32F4Stamp F405 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `stm32f4stamp.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💅

[env:stm32f4stamp] platform = ststm32 board = stm32f4stamp

; change microcontroller board_build.mcu = stm32f405rgt6

; change MCU frequency board_build.f_cpu = 168000000L


---

## 🚀 Uploading

STM32F4Stamp F405 supports the next uploading protocols:

- `dfu`
- `jlink`
- `stlink`

Default protocol is `dfu` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:stm32f4stamp] platform = ststm32 board = stm32f4stamp

upload_protocol = dfu


---

## 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. 🪄

> **WARNING:**

> ⚠️ heads up bestie — depending on your system you're gonna need to install debug tool drivers. Click on the compatible debug tool below for the further instructions and configuration info, okay? 💅

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

<pink>**STM32F4Stamp F405**</pink> does <red>NOT</red> have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. No cap, that's just how it is 😭

Compatible tools for it:

- **`debugging_tool_jlink`** — on-board: *nope* · default: *nope*
- **`debugging_tool_stlink`** — on-board: *nope* · default: **Yes** 👑

---

## ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *art school but make it embedded* 🎨✨
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. literally the whole toolbox, fr fr 🧰

---

# 👑 STM32F7508-DK 👑

## 🎀 Contents 🎀

- STM32F7508-DK
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🌸 Hardware 🌸

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. highkey iconic behaviour 🫶

The deets:

- **Microcontroller** — `STM32F750N8H6`
- **Frequency** — `216MHz`
- **Flash** — `64KB`
- **RAM** — `340KB`
- **Vendor** — `ST`

---

## 🦋 Configuration 🦋

Please use the `disco_f750n8` ID for the `projectconf_env_board` option in `projectconf`:

[env:disco_f750n8] platform = ststm32 board = disco_f750n8


You can override default STM32F7508-DK settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `disco_f750n8.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:disco_f750n8] platform = ststm32 board = disco_f750n8

; change microcontroller board_build.mcu = stm32f750n8h6

; change MCU frequency board_build.f_cpu = 216000000L


---

## 🌈 Uploading 🌈

STM32F7508-DK supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 💖

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:disco_f750n8] platform = ststm32 board = disco_f750n8

upload_protocol = stlink


---

## 💜 Debugging 💜

`piodebug` — the "1-click" solution for debugging with a zero configuration. no setup arc, just vibes 🔥

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

STM32F7508-DK **has** an on-board debug probe and **IS READY** for debugging. You don't need to use/buy an external debug probe. main character energy fr 🎀

Compatible tools:

- **`debugging_tool_blackmagic`** — on-board: *nope* · default: *nope*

- **`debugging_tool_jlink`** — on-board? nope, blank. default? also blank. she's available but she's not the moment 💅
- **`debugging_tool_stlink`** — on-board: **Yes** ✨ default: **Yes** ✨ she's the chosen one, the main character, no cap

---

## 🌸 Frameworks 🌸

- **`framework_stm32cube`** — STM32Cube embedded software libraries, and bestie they are *stacked*, here's the tea:
  - **The HAL** — the hardware abstraction layer, which lets you move between different STM32 devices by using standardized API calls 🦋
  - **The Low-Layer (LL) APIs** — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🔥

---

## 👑 STM32H747I-DISCO Contents 👑

- STM32H747I-DISCO
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## ✨ Hardware ✨

Platform `platform_ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. literally all of that. iconic.

- **Microcontroller** — `STM32H747XIH6`
- **Frequency** — `400MHz`
- **Flash** — `2MB`
- **RAM** — `512KB`
- **Vendor** — `ST`

---

## 🎀 Configuration 🎀

Please use `disco_h743xi` ID for the `projectconf_env_board` option in `projectconf`:

[env:disco_h743xi] platform = ststm32 board = disco_h743xi


You can override default STM32H747I-DISCO settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `disco_h743xi.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💖

[env:disco_h743xi] platform = ststm32 board = disco_h743xi

; change microcontroller board_build.mcu = stm32h747xih6

; change MCU frequency board_build.f_cpu = 400000000L


---

## 🌈 Uploading 🌈

STM32H747I-DISCO supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `stlink` 💅

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:disco_h743xi] platform = ststm32 board = disco_h743xi

upload_protocol = stlink


---

## 🦋 Debugging 🦋

`piodebug` — the "1-click" solution for debugging with a zero configuration. obsessed tbh 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

STM32H747I-DISCO has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. slay, she came prepared 😭✨

- **Compatible Tools** — On-board / Default
- **`debugging_tool_blackmagic`** — blank / blank
- **`debugging_tool_jlink`** — blank / blank
- **`debugging_tool_stlink`** — **Yes** / **Yes** 👑

---

## 💜 Frameworks 💜

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including:
  - **The HAL** — the hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls
  - **The Low-Layer (LL) APIs** — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

  (and yes bestie, we're back here again, she said what she said 💀)

via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

*(yep bestie, that was just the tail end of the row above — carry on 💅)*

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

# 🦋 Seeed Arch Max 🦋

**Contents:**

- Seeed Arch Max
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform <cyan>`ststm32`</cyan>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <pink>like… it does everything?? iconic 💖</pink>

The spec sheet, bestie, no cap:

- **Microcontroller** — `STM32F407VET6`
- **Frequency** — `168MHz`
- **Flash** — `512KB`
- **RAM** — `192KB`
- **Vendor** — `SeeedStudio`

---

## ⚙️ Configuration

Please use <purple>`seeedArchMax`</purple> ID for <purple>`board`</purple> option in <purple>`platformio.ini`</purple>:

[env:seeedArchMax] platform = ststm32 board = seeedArchMax


You can override default Seeed Arch Max settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `seeedArchMax.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <yellow>so much power in ur hands fr fr</yellow>

[env:seeedArchMax] platform = ststm32 board = seeedArchMax

; change microcontroller board_build.mcu = stm32f407vet6

; change MCU frequency board_build.f_cpu = 168000000L


---

## 🚀 Uploading

Seeed Arch Max supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `mbed`
- `stlink`

Default protocol is <cyan>`mbed`</cyan> ✨

You can change upload protocol using the <purple>`upload_protocol`</purple> option:

[env:seeedArchMax] platform = ststm32 board = seeedArchMax

upload_protocol = mbed


---

## 🐛 Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration. <mint>literally one click bestie</mint>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>do NOT skip this, i'm begging 🙈</red>

You can switch between debugging tools using the <purple>`debug_tool`</purple> option in <purple>`platformio.ini`</purple>.

Seeed Arch Max has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. 👑

Compatible tools — the table has three columns, **Compatible Tools**, **On-board** and **Default**:

- `blackmagic` — on-board: no · default: no
- `jlink` — on-board: no · default: no
- `stlink` — on-board: **Yes** · default: **Yes** ✅

---

## 🧩 Frameworks

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <pink>a whole cookbook?? we love a community moment 🍓</pink>

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

...and that's the last row of that framework table, bestie, we ate 💅

---

# 🦋 Seeed Wio 3G 🦋

## 🌸 Contents 🌸

- Seeed Wio 3G
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

**Platform `platform_ststm32`:** The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <pink>like okay, that's the whole vibe of the family, gorgeous</pink> ✨

- **Microcontroller** — `STM32F439VI`
- **Frequency** — `180MHz`
- **Flash** — `2MB`
- **RAM** — `256KB`
- **Vendor** — `SeeedStudio`

---

## ⚙️ Configuration ⚙️

Please use <purple>`wio_3g`</purple> ID for `projectconf_env_board` option in `projectconf`:

[env:wio_3g] platform = ststm32 board = wio_3g


You can override default Seeed Wio 3G settings per build environment using <purple>`board_***`</purple> option, where `***` is a JSON object path from board manifest <purple>`wio_3g.json`</purple>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>yes bestie you can remix the whole board config, it's giving customization</cyan> 💖

[env:wio_3g] platform = ststm32 board = wio_3g

; change microcontroller board_build.mcu = stm32f439vi

; change MCU frequency board_build.f_cpu = 180000000L


---

## 🚀 Uploading 🚀

Seeed Wio 3G supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink> ⭐

You can change upload protocol using `projectconf_upload_protocol` option:

[env:wio_3g] platform = ststm32 board = wio_3g

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` — "1-click" solution for debugging with a zero configuration. <mint>one click?? iconic behavior fr fr</mint> 💅

> **WARNING:**
> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Seeed Wio 3G has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <rainbow>no extra shopping trip required, we love that for us</rainbow> 🫶

- **`debugging_tool_blackmagic`** — On-board: (not marked) · Default: (not marked)
- **`debugging_tool_jlink`** — On-board: (not marked) · Default: (not marked)
- **`debugging_tool_stlink`** — On-board: <green>Yes</green> · Default: <green>Yes</green>

---

## 🧚 Frameworks 🧚

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

# 🍓 SensorTile.box 🍓

## 🌈 Contents 🌈

- SensorTile.box
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

**Platform `platform_ststm32`:** The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

- **Microcontroller** — `STM32L4R9ZI`
- **Frequency** — `120MHz`
- **Flash** — `2MB`
- **RAM** — `640KB`
- **Vendor** — `ST`

<purple>640KB of RAM?? that's a whole snack, lowkey generous</purple> 😭✨

---

## ⚙️ Configuration ⚙️

Please use <purple>`steval_mksboxv1`</purple> ID for `projectconf_env_board` option in `projectconf`:

[env:steval_mksboxv1] platform = ststm32 board = steval_mksboxv1


You can override default SensorTile.box settings per build environment using <purple>`board_***`</purple> option, where `***` is a JSON object path from board manifest <purple>`steval_mksboxv1.json`</purple>. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:steval_mksboxv1] platform = ststm32 board = steval_mksboxv1

; change microcontroller board_build.mcu = stm32l4r9zi

; change MCU frequency board_build.f_cpu = 120000000L


---

## 🚀 Uploading 🚀

SensorTile.box supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink> ⭐

You can swap out which upload protocol gets used with the `upload_protocol` option:

[env:steval_mksboxv1] platform = ststm32 board = steval_mksboxv1

upload_protocol = stlink


---

## 🔧 Debugging

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. literally no setup, just vibes ✨

> **WARNING:** you're gonna need to install debug tool drivers, and which ones depends on your system. click on the compatible debug tool below to get the further instructions and configuration info, bestie 🫶

You can switch between the debugging `debugging_tools` with the `debug_tool` option in `platformio.ini`.

SensorTile.box does **not** have an on-board debug probe and is **NOT READY** for debugging 😭 you'll need to use or buy one of the external probes listed below:

- **`blackmagic`** — on-board: *(nope)* · default: *(nope)*
- **`jlink`** — on-board: *(nope)* · default: *(nope)*
- **`stlink`** — on-board: *(nope)* · default: **Yes** 👑

---

## 🎀 Frameworks

- **`arduino`** — the Arduino Wiring-based Framework. it lets you write cross-platform software to control devices attached to a huge range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences 💖
- **`stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer (which enables portability between different STM32 devices via standardized API calls), and the Low-Layer (LL) APIs — a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🔥

---

# 🌸 Sparky V1 F303 🌸

## Contents

- Sparky V1 F303
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🦋 Hardware

Platform `ststm32`: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. it offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. iconic behaviour fr fr 👑

- **Microcontroller** — `STM32F303CCT6`
- **Frequency** — `72MHz`
- **Flash** — `256KB`
- **RAM** — `40KB`
- **Vendor** — `TauLabs`

## ⚙️ Configuration

Please use the `sparky_v1` ID for the `board` option in `platformio.ini`:

[env:sparky_v1] platform = ststm32 board = sparky_v1


You can override the default Sparky V1 F303 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `sparky_v1.json`. for example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:sparky_v1] platform = ststm32 board = sparky_v1

; change microcontroller board_build.mcu = stm32f303cct6

; change MCU frequency board_build.f_cpu = 72000000L


## 📤 Uploading

Sparky V1 F303 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` 💅

You can change the upload protocol using the `upload_protocol` option:

[env:sparky_v1] platform = ststm32 board = sparky_v1

upload_protocol = stlink


## 🔧 Debugging

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. no cap 🫶

> **WARNING:** you will need to install debug tool drivers depending on your system. please click on compatible debug tool below for the further instructions and configuration information.

You can switch between the debugging `debugging_tools` using the `debug_tool` option in `platformio.ini`.

Sparky V1 F303 does **not** have an on-board debug probe and **IS NOT READY** for debugging 😭 you will need to use/buy one of the external probes listed below:

- **`blackmagic`** — on-board: *(nope)* · default: **Yes** 👑
- **`jlink`** — on-board: *(nope)* · default: *(nope)*
- **`stlink`** — on-board: *(nope)* · default: *(nope)*

## 🎀 Frameworks

- **`arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 💖
- **`stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🔥

---

# 🌈 ThunderPack 🌈

## Contents

- ThunderPack
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### <pink>Hardware</pink> 🔧

okay so <cyan>Platform `platform_ststm32`</cyan>: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. <rainbow>It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.</rainbow> 💅

here's the tea on this board bestie:

- **Microcontroller:** `STM32L072KZ`
- **Frequency:** `32MHz`
- **Flash:** `192KB`
- **RAM:** `20KB`
- **Vendor:** `ThunderPack`

---

### <purple>Configuration</purple> ⚙️✨

Please use <hotpink>`thunder_pack`</hotpink> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:thunder_pack] platform = ststm32 board = thunder_pack


You can override default ThunderPack settings per build environment using <hotpink>`board_***`</hotpink> option, where <hotpink>`***`</hotpink> is a JSON object path from board manifest <cyan>`thunder_pack.json`</cyan>. For example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc. 🫶

[env:thunder_pack] platform = ststm32 board = thunder_pack

; change microcontroller board_build.mcu = stm32l072kz

; change MCU frequency board_build.f_cpu = 32000000L


---

### <mint>Uploading</mint> 🚀💖

ThunderPack supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink>

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:thunder_pack] platform = ststm32 board = thunder_pack

upload_protocol = stlink


---

### <yellow>Debugging</yellow> 🐛🔍

<cyan>`piodebug`</cyan> — "1-click" solution for debugging with a zero configuration. iconic behavior honestly ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging <cyan>`debugging_tools`</cyan> using <cyan>`projectconf_debug_tool`</cyan> option in <cyan>`projectconf`</cyan>.

<red>ThunderPack does not have on-board debug probe and **IS NOT READY** for debugging.</red> You will need to use/buy one of external probe listed below. bestie you gotta go shopping fr fr 💀

- <cyan>`debugging_tool_blackmagic`</cyan> — On-board: *(none)*, Default: <green>Yes</green>
- <cyan>`debugging_tool_jlink`</cyan> — On-board: *(none)*, Default: *(none)*
- <cyan>`debugging_tool_stlink`</cyan> — On-board: *(none)*, Default: *(none)*

---

### <lavender>Frameworks</lavender> 🧚🌸

- <hotpink>`framework_arduino`</hotpink> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- <hotpink>`framework_cmsis`</hotpink> — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. 👑
- <hotpink>`framework_stm32cube`</hotpink> — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

## <rainbow>Tiny STM103T</rainbow> 🦋💜

### <peach>Contents</peach> 📜

- Tiny STM103T
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### <pink>Hardware</pink> 🔧

okay so <cyan>Platform `platform_ststm32`</cyan>: the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. <rainbow>It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.</rainbow> 💅

and here's the specs bestie:

- **Microcontroller:** `STM32F103TBU6`
- **Frequency:** `72MHz`
- **Flash:** `128KB`
- **RAM:** `20KB`
- **Vendor:** `HY`

---

### <purple>Configuration</purple> ⚙️✨

Please use <hotpink>`hy_tinystm103tb`</hotpink> ID for <cyan>`projectconf_env_board`</cyan> option in <cyan>`projectconf`</cyan>:

[env:hy_tinystm103tb] platform = ststm32 board = hy_tinystm103tb


You can override default Tiny STM103T settings per build environment using <hotpink>`board_***`</hotpink> option, where <hotpink>`***`</hotpink> is a JSON object path from board manifest <cyan>`hy_tinystm103tb.json`</cyan>. For example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc. 🫶

[env:hy_tinystm103tb] platform = ststm32 board = hy_tinystm103tb

; change microcontroller board_build.mcu = stm32f103tbu6

; change MCU frequency board_build.f_cpu = 72000000L


---

### <mint>Uploading</mint> 🚀💖

Tiny STM103T supports the next uploading protocols:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is <hotpink>`dfu`</hotpink>

You can change upload protocol using <cyan>`projectconf_upload_protocol`</cyan> option:

[env:hy_tinystm103tb] platform = ststm32 board = hy_tinystm103tb

upload_protocol = dfu


---

### <yellow>Debugging</yellow> 🐛🔍

<cyan>`piodebug`</cyan> — "1-click" solution for debugging with a zero configuration. no cap, that's the whole vibe ✨

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 😭

You can switch between debugging <cyan>`debugging_tools`</cyan> using <cyan>`projectconf_debug_tool`</cyan> option in <cyan>`projectconf`</cyan>.

Tiny STM103T does **not** have an on-board debug probe and is **NOT READY** for debugging 💀. You will need to use/buy one of the external probes listed below, bestie. No cap.

- **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: **Yes** ✅
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)* · Default: *(none)*

### ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences 🎨✨
- **`framework_stm32cube`** — the STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🧠💅

---

## 👑 VAkE v1.0 👑

### 🌸 Contents 🌸

- VAkE v1.0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🦋 Hardware 🦋

Platform <purple>`platform_ststm32`</purple>: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. It's giving *main character* silicon 🔥

- **Microcontroller** — `STM32F446RET6`
- **Frequency** — `180MHz`
- **Flash** — `512KB`
- **RAM** — `128KB`
- **Vendor** — `VAE`

### 🎀 Configuration 🎀

Please use `vake_v1` ID for `projectconf_env_board` option in projectconf:

[env:vake_v1] platform = ststm32 board = vake_v1


You can override default VAkE v1.0 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `vake_v1.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Obsessed with how flexible this is 🫶

[env:vake_v1] platform = ststm32 board = vake_v1

; change microcontroller board_build.mcu = stm32f446ret6

; change MCU frequency board_build.f_cpu = 180000000L


### ⭐ Uploading ⭐

VAkE v1.0 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `serial`
- `stlink`

Default protocol is <hotpink>`stlink`</hotpink>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:vake_v1] platform = ststm32 board = vake_v1

upload_protocol = stlink


### 💅 Debugging 💅

`piodebug` — the "1-click" solution for debugging with a zero configuration. Iconic fr fr 💖

> **WARNING:** 🚨 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in projectconf.

VAkE v1.0 does **not** have an on-board debug probe and is **NOT READY** for debugging 😭. You will need to use/buy one of the external probes listed below.

- **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: **Yes** ✅
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)* · Default: *(none)*

### 🌈 Frameworks 🌈

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences 🎨✨
- **`framework_stm32cube`** — the STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🧠💅

---

## 🍓 Wraith V1 ESC 🍓

### 🌸 Contents 🌸

- Wraith V1 ESC
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 🛠️✨

<pink>Platform</pink> `platform_ststm32`: bestie, the STM32 fam is a whole lineup of 32-bit Flash MCUs built on the ARM Cortex-M processor, and they were literally designed to hand MCU users new degrees of freedom. It's a 32-bit product range that pulls together very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation — all while keeping full integration and ease of development intact. It's giving ✨everything✨.

Here's the vibe check on this exact board:

- **Microcontroller** — `STM32F051K6`
- **Frequency** — `48MHz`
- **Flash** — `32KB`
- **RAM** — `7.75KB`
- **Vendor** — `Airbot`

---

### Configuration 🎀

okay so for the `projectconf_env_board` option in `projectconf`, pls use the `wraith32_v1` ID:

[env:wraith32_v1] platform = ststm32 board = wraith32_v1


You can also override the default Wraith V1 ESC settings per build environment with the `board_***` option, where `***` is a JSON object path straight out of the board manifest `wraith32_v1.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. Slay:

[env:wraith32_v1] platform = ststm32 board = wraith32_v1

; change microcontroller board_build.mcu = stm32f051k6

; change MCU frequency board_build.f_cpu = 48000000L


---

### Uploading 🚀💅

Wraith V1 ESC supports these uploading protocols, no cap:

- `blackmagic`
- `dfu`
- `jlink`
- `serial`
- `stlink`

Default protocol is `stlink` 🫶

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:wraith32_v1] platform = ststm32 board = wraith32_v1

upload_protocol = stlink


---

### Debugging 🔍😭

`piodebug` — the "1-click" solution for debugging with a zero configuration. Iconic honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

Wraith V1 ESC does **not** have an on-board debug probe and **IS NOT READY** for debugging 💀. You will need to use/buy one of the external probes listed below.

- **`debugging_tool_blackmagic`** — On-board: *(none)* — Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(none)* — Default: *(none)*
- **`debugging_tool_stlink`** — On-board: *(none)* — Default: *(none)*

---

### Frameworks 🌈👑

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. very main character energy.
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

## 🌸 sakura.io Evaluation Board 🌸

### Contents 🎀

- sakura.io Evaluation Board
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware 🛠️✨

<pink>Platform</pink> `platform_ststm32`: same STM32 situation as always, bestie — the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. literally the blueprint.

The specs on this one:

- **Microcontroller** — `STM32F411RET6`
- **Frequency** — `100MHz`
- **Flash** — `1MB`
- **RAM** — `128KB`
- **Vendor** — `sakura.io`

---

### Configuration 🎀

for the `projectconf_env_board` option in `projectconf`, use the `sakuraio_evb_01` ID:

[env:sakuraio_evb_01] platform = ststm32 board = sakuraio_evb_01


You can override the default sakura.io Evaluation Board settings per build environment with the `board_***` option, where `***` is a JSON object path from the board manifest `sakuraio_evb_01.json`. For example `board_build.mcu`, `board_build.f_cpu`, etc. Obsessed:

[env:sakuraio_evb_01] platform = ststm32 board = sakuraio_evb_01

; change microcontroller board_build.mcu = stm32f411ret6

; change MCU frequency board_build.f_cpu = 100000000L


---

### Uploading 🚀💅

sakura.io Evaluation Board supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `mbed` 🫶

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:sakuraio_evb_01] platform = ststm32 board = sakuraio_evb_01

upload_protocol = mbed


---

### Debugging 🔍😭

`piodebug` — "1-click" solution for debugging with a zero configuration.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

okay so you can swap between different `debugging_tools` whenever you want — just use the `debug_tool` option in your `projectconf` (`debugging_tool` is the one, iykyk). 💅

And for the sakura.io Evaluation Board? She comes with an on-board debug probe and is **READY** for debugging, bestie. You do <rainbow>not</rainbow> need to go buy an external probe. Periodt. 💖

Compatible tools, on-board status and default status:

- `debugging_tool_blackmagic` — not on-board, not default
- `debugging_tool_cmsis-dap` — on-board: **Yes**, default: **Yes** ✨
- `debugging_tool_jlink` — not on-board, not default
- `debugging_tool_stlink` — not on-board, not default

---

### ✨ Frameworks ✨

- `framework_mbed` — the mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It's built on the low-level ARM CMSIS APIs, so you can literally code down to the metal if you need to. On top of that there's RTOS, USB and Networking libraries, plus a whole cookbook of hundreds of reusable peripheral and module libraries that the mbed Developer Community built on top of the SDK. 👑

- `framework_stm32cube` — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which gives you portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🦋

---

## 🌸 u-blox C030-N211 IoT Starter Kit 🌸

### Contents

- u-blox C030-N211 IoT Starter Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 🔥

- Microcontroller — `STM32F437VG`
- Frequency — `180MHz`
- Flash — `1MB`
- RAM — `256KB`
- Vendor — `u-blox`

---

### Configuration

Please use the `ublox_c030_n211` ID for the `env_board` option in `projectconf`, bestie:

[env:ublox_c030_n211] platform = ststm32 board = ublox_c030_n211


You can also override the default u-blox C030-N211 IoT Starter Kit settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `ublox_c030_n211.json`. Like `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:ublox_c030_n211] platform = ststm32 board = ublox_c030_n211

; change microcontroller board_build.mcu = stm32f437vg

; change MCU frequency board_build.f_cpu = 180000000L


---

### Uploading

u-blox C030-N211 IoT Starter Kit supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `mbed` 💅

You can change the upload protocol using the `upload_protocol` option:

[env:ublox_c030_n211] platform = ststm32 board = ublox_c030_n211

upload_protocol = mbed


---

### Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. 🎀

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 👀

You can switch between debugging `debugging_tools` using the `debug_tool` option in `projectconf`.

u-blox C030-N211 IoT Starter Kit does **not** have an on-board debug probe and is **NOT READY** for debugging. You will need to use/buy one of the external probes listed below. 😭

- `debugging_tool_blackmagic` — not on-board, default: **Yes**
- `debugging_tool_cmsis-dap` — not on-board, not default
- `debugging_tool_jlink` — not on-board, not default
- `debugging_tool_stlink` — not on-board, not default

- **`framework_mbed`** — bestie, this is *The mbed framework*. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. like... a whole cookbook?? iconic.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. it's giving *expert oriented* and we respect that fr fr 💅

---

# 🦋 u-blox C030-R410M IoT 🦋

## 📋 Contents 📋

- u-blox C030-R410M IoT
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware 🔧

<purple>Platform</purple> `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. <cyan>no cap, that's a LOT of range and it still stays low-power?? main character behavior.</cyan>

- **Microcontroller** — `STM32F437VG`
- **Frequency** — `180MHz`
- **Flash** — `1MB`
- **RAM** — `256KB`
- **Vendor** — `u-blox`

---

## ⚙️ Configuration ⚙️

Please use `ublox_c030_r410m` ID for `projectconf_env_board` option in `projectconf`:

[env:ublox_c030_r410m] platform = ststm32 board = ublox_c030_r410m


You can override default u-blox C030-R410M IoT settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `ublox_c030_r410m.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <pink>so you can customize it per env, which is lowkey the moment.</pink>

[env:ublox_c030_r410m] platform = ststm32 board = ublox_c030_r410m

; change microcontroller board_build.mcu = stm32f437vg

; change MCU frequency board_build.f_cpu = 180000000L


---

## 📤 Uploading 📤

u-blox C030-R410M IoT supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` <hotpink>periodt 💅</hotpink>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:ublox_c030_r410m] platform = ststm32 board = ublox_c030_r410m

upload_protocol = stlink


---

## 🐛 Debugging 🐛

`piodebug` - "1-click" solution for debugging with a zero configuration. <yellow>zero configuration?? obsessed.</yellow>

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>don't skip this bestie, drivers are not optional 😭</red>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

u-blox C030-R410M IoT has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <rainbow>it's built in!!! no extra shopping trip required 🎀</rainbow>

- **`debugging_tool_blackmagic`** — On-board: *(nothing)*, Default: *(nothing)*
- **`debugging_tool_jlink`** — On-board: *(nothing)*, Default: *(nothing)*
- **`debugging_tool_stlink`** — On-board: `Yes`, Default: `Yes` <mint>the chosen one fr</mint>

---

## 🧚 Frameworks 🧚

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <cyan>hundreds of libraries?? the community ATE.</cyan>
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. <purple>performance AND runtime efficiency, we love a multitasker.</purple>

---

# 🌸 u-blox C030-U201 IoT Starter Kit 🌸

## 📋 Contents 📋

- u-blox C030-U201 IoT Starter Kit
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🦋 Hardware 🦋

OK bestie, so the platform here is <pink>`platform_ststm32`</pink> and it's *literally* iconic 💅. The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. No cap, it's giving everything ✨

Here's the spec sheet:

- **Microcontroller:** `STM32F437VG`
- **Frequency:** `180MHz`
- **Flash:** `1MB`
- **RAM:** `256KB`
- **Vendor:** `u-blox`

---

### ⚙️ Configuration ⚙️

Please use `ublox_c030_u201` ID for `projectconf_env_board` option in `projectconf`:

[env:ublox_c030_u201] platform = ststm32 board = ublox_c030_u201


You can override default u-blox C030-U201 IoT Starter Kit settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `ublox_c030_u201.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:ublox_c030_u201] platform = ststm32 board = ublox_c030_u201

; change microcontroller board_build.mcu = stm32f437vg

; change MCU frequency board_build.f_cpu = 180000000L


---

### 🚀 Uploading 🚀

u-blox C030-U201 IoT Starter Kit supports the next uploading protocols:

- `blackmagic`
- `cmsis-dap`
- `jlink`
- `mbed`
- `stlink`

Default protocol is `mbed` 💖

You can change upload protocol using `projectconf_upload_protocol` option:

[env:ublox_c030_u201] platform = ststm32 board = ublox_c030_u201

upload_protocol = mbed


---

### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. Obsessed 🫶

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

u-blox C030-U201 IoT Starter Kit does not have on-board debug probe and <red>**IS NOT READY**</red> for debugging 😭. You will need to use/buy one of external probe listed below.

- **`debugging_tool_blackmagic`** — On-board: —, Default: **Yes**
- **`debugging_tool_cmsis-dap`** — On-board: —, Default: —
- **`debugging_tool_jlink`** — On-board: —, Default: —
- **`debugging_tool_stlink`** — On-board: —, Default: —

---

### 🌸 Frameworks 🌸

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.

---

## 🛰️ u-blox EVK-ODIN-W2 🛰️

### 📜 Contents 📜

- u-blox EVK-ODIN-W2
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🦋 Hardware 🦋

Next up, bestie: <pink>`platform_ststm32`</pink> is the platform again, and it's giving the exact same energy 💅. The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. 💅

Specs on deck:

- **Microcontroller:** `STM32F439ZIY6`
- **Frequency:** `168MHz`
- **Flash:** `2MB`
- **RAM:** `256KB`
- **Vendor:** `u-blox`

### ⚙️ Configuration ⚙️

Please use `ublox_evk_odin_w2` ID for `projectconf_env_board` option in `projectconf`:

[env:ublox_evk_odin_w2] platform = ststm32 board = ublox_evk_odin_w2


You can override default u-blox EVK-ODIN-W2 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `ublox_evk_odin_w2.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:ublox_evk_odin_w2] platform = ststm32 board = ublox_evk_odin_w2

; change microcontroller board_build.mcu = stm32f439ziy6

; change MCU frequency board_build.f_cpu = 168000000L


### 🚀 Uploading 🚀

u-blox EVK-ODIN-W2 supports the next uploading protocols:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:ublox_evk_odin_w2] platform = ststm32 board = ublox_evk_odin_w2

upload_protocol = stlink


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. 🫶

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<pink>u-blox EVK-ODIN-W2</pink> does **not** have an on-board debug probe, and it is **IS NOT READY** for debugging, bestie. Like, at all. You will need to use/buy one of the external probes listed below. 💀

Here's the compatible-tools lineup — columns are *Compatible Tools*, *On-board*, *Default*:

- **`debugging_tool_blackmagic`** — On-board: *(nope, nothing)* · Default: **Yes** 👑
- **`debugging_tool_jlink`** — On-board: *(nope)* · Default: *(not the default)*
- **`debugging_tool_stlink`** — On-board: *(nope)* · Default: *(not the default)*

---

## ✨ Frameworks ✨

Two frameworks are on the menu for this one, and here's the whole vibe of each (columns: *Name*, *Description*):

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🧚
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. 🔥

---

## 🎀 u-blox ODIN-W2 🎀

### 🌸 Contents 🌸

- u-blox ODIN-W2
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### 💜 Hardware 💜

Platform `platform_ststm32`: The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development.

Specs time, no cap:

- **Microcontroller** — `STM32F439ZIY6`
- **Frequency** — `168MHz`
- **Flash** — `2MB`
- **RAM** — `256KB`
- **Vendor** — `u-blox`

---

### ⭐ Configuration ⭐

Bestie, please use `mtb_ublox_odin_w2` as the ID for the `projectconf_env_board` option in `projectconf`:

[env:mtb_ublox_odin_w2] platform = ststm32 board = mtb_ublox_odin_w2


You can override the default u-blox ODIN-W2 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `mtb_ublox_odin_w2.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:mtb_ublox_odin_w2] platform = ststm32 board = mtb_ublox_odin_w2

; change microcontroller board_build.mcu = stm32f439ziy6

; change MCU frequency board_build.f_cpu = 168000000L


---

### 🌈 Uploading 🌈

u-blox ODIN-W2 supports the next uploading protocols — literally these three and that's the list:

- `blackmagic`
- `jlink`
- `stlink`

Default protocol is `stlink`. 💅

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:mtb_ublox_odin_w2] platform = ststm32 board = mtb_ublox_odin_w2

upload_protocol = stlink


---

### 🦋 Debugging 🦋

`piodebug` — the "1-click" solution for debugging with a zero configuration. Iconic behaviour, honestly.

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. ⚠️

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`.

u-blox ODIN-W2 does **not** have an on-board debug probe and **IS NOT READY** for debugging. You will need to use/buy one of the external probes listed below. 😭

Columns, once again: *Compatible Tools*, *On-board*, *Default*:

- **`debugging_tool_blackmagic`** — On-board: *(none)* · Default: **Yes**
- **`debugging_tool_jlink`** — On-board: *(none)* · Default: *(not the default)*
- **`debugging_tool_stlink`** — On-board: *(none)* · Default: *(not the default)*

## ✨ Frameworks ✨

okay so before we get into the board stuff, here's the framework menu bestie, take notes 📝

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. like… the community really said "we got you" 🫶

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. highkey the expert-mode option, no cap 💅

---

# 🦋 ST STM8 ✨ ST STM8S-DISCOVERY 🦋

## 📑 Contents

- ST STM8S-DISCOVERY
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 🔧 Hardware

<purple>Platform</purple> `platform_ststm8`: The STM8 is an 8-bit microcontroller family by STMicroelectronics an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller. cheap AND full-featured?? it's giving budget queen 👑

- **Microcontroller** — `STM8S105C6T6`
- **Frequency** — `16MHz`
- **Flash** — `32KB`
- **RAM** — `2KB`
- **Vendor** — `ST`

---

## ⚙️ Configuration

Please use `stm8sdisco` ID for `projectconf_env_board` option in `projectconf`:

[env:stm8sdisco] platform = ststm8 board = stm8sdisco


You can override default ST STM8S-DISCOVERY settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `stm8sdisco.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>customization era fr fr</mint> 🌸

[env:stm8sdisco] platform = ststm8 board = stm8sdisco

; change microcontroller board_build.mcu = stm8s105c6t6

; change MCU frequency board_build.f_cpu = 16000000L


---

## 📤 Uploading

ST STM8S-DISCOVERY supports the next uploading protocols:

- `serial`
- `stlink`
- `stlinkv2`

Default protocol is `stlink`. <cyan>the default ate, honestly</cyan> ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:stm8sdisco] platform = ststm8 board = stm8sdisco

upload_protocol = stlink


---

## 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. one click?? main character energy fr 💅

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. bestie do NOT skip the drivers, that's the whole vibe check 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

ST STM8S-DISCOVERY has on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy external debug probe. not me saving money… we love to see it 💖

Compatible Tools:

- **`debugging_tool_stlink`** — On-board: **Yes**, Default: **Yes** 👑

---

## 🎀 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. literally the blueprint for making cool lil gadgets, obsessed 🦋

- **`framework_spl`** — <purple>The ST Standard Peripheral Library</purple> hands you a whole lil' toolkit of functions for handling the peripherals on the <cyan>STM32 Cortex-M3</cyan> family. The whole idea is to save the user (the new user especially, we love a beginner-friendly moment 🫶) from having to deal directly with the registers. <pink>Periodt.</pink>

---

# 👑 ST STM8S103F3 Breakout Board 👑

## 🎀 Contents 🎀

- ST STM8S103F3 Breakout Board
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware 🔧

Platform `platform_ststm8`: The <rainbow>STM8</rainbow> is an 8-bit microcontroller family by STMicroelectronics, an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller. <yellow>budget queen energy honestly 💸</yellow>

- **Microcontroller** — `STM8S103F3P6`
- **Frequency** — `16MHz`
- **Flash** — `8KB`
- **RAM** — `1KB`
- **Vendor** — `ST`

## ⚙️ Configuration ⚙️

Please use `stm8sblue` ID for `projectconf_env_board` option in `projectconf`:

[env:stm8sblue] platform = ststm8 board = stm8sblue


You can override default ST STM8S103F3 Breakout Board settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `stm8sblue.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <lavender>mix and match, bestie ✨</lavender>

[env:stm8sblue] platform = ststm8 board = stm8sblue

; change microcontroller board_build.mcu = stm8s103f3p6

; change MCU frequency board_build.f_cpu = 16000000L


## 🚀 Uploading 🚀

ST STM8S103F3 Breakout Board supports the next uploading protocols:

- `serial`
- `stlinkv2`

Default protocol is `serial`. <mint>no cap, that's the one it rolls with out of the box</mint>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:stm8sblue] platform = ststm8 board = stm8sblue

upload_protocol = serial


## 🐛 Debugging 🐛

`piodebug` currently does **not** support ST STM8S103F3 Breakout Board board. <red>sad girl hours, the debugger said not today 😭</red>

## 🧩 Frameworks 🧩

- **`framework_arduino`** — <cyan>Arduino Wiring-based Framework</cyan> allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <pink>it's giving main character creative energy 💅</pink>
- **`framework_spl`** — <purple>The ST Standard Peripheral Library</purple> provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers.

---

# 🦋 ST STM8S105K4T6 Breakout Board 🦋

## 🎀 Contents 🎀

- ST STM8S105K4T6 Breakout Board
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware 🔧

Platform `platform_ststm8`: The <rainbow>STM8</rainbow> is an 8-bit microcontroller family by STMicroelectronics, an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller. <yellow>cheap and cheerful, we stan 💖</yellow>

- **Microcontroller** — `STM8S105K4T6`
- **Frequency** — `16MHz`
- **Flash** — `16KB`
- **RAM** — `2KB`
- **Vendor** — `ST`

Configuration
       Please use stm8sblack ID for projectconf_env_board option in projectconf:

[env:stm8sblack] platform = ststm8 board = stm8sblack


You can override default ST STM8S105K4T6 Breakout Board settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `stm8sblack.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:stm8sblack] platform = ststm8 board = stm8sblack

; change microcontroller board_build.mcu = stm8s105k4t6

; change MCU frequency board_build.f_cpu = 16000000L


  Uploading
       ST STM8S105K4T6 Breakout Board supports the next uploading protocols:

- `serial`

- `stlinkv2`

Default protocol is `serial`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:stm8sblack] platform = ststm8 board = stm8sblack

upload_protocol = serial


  Debugging
       `piodebug` currently does not support ST STM8S105K4T6 Breakout Board board.

  Frameworks

| Name | Description |
| --- | --- |
| `framework_arduino` | Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. |
| `framework_spl` | The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers. |

  sduino MB (STM8S208MBT6B)
  Contents

- sduino MB (STM8S208MBT6B)

  - Hardware

  - Configuration

  - Uploading

  - Debugging

  - Frameworks

  Hardware
       Platform `platform_ststm8`: The STM8 is an 8-bit microcontroller family by STMicroelectronics an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller.

| Microcontroller | STM8S208MBT6 |
| --- | --- |
| Frequency | 16MHz |
| Flash | 128KB |
| RAM | 6KB |
| Vendor | sduino |

  Configuration
       Please use `mb208` ID for `projectconf_env_board` option in projectconf:

[env:mb208] platform = ststm8 board = mb208


You can override default sduino MB (STM8S208MBT6B) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `mb208.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:mb208] platform = ststm8 board = mb208

; change microcontroller board_build.mcu = stm8s208mbt6

; change MCU frequency board_build.f_cpu = 16000000L


  Uploading
       sduino MB (STM8S208MBT6B) supports the next uploading protocols:

- `serial`

- `stlinkv2`

Default protocol is `serial`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:mb208] platform = ststm8 board = mb208

upload_protocol = serial


  Debugging
       `piodebug` currently does not support sduino MB (STM8S208MBT6B) board.

  Frameworks

| Name | Description |
| --- | --- |

- **`framework_arduino`** — the Arduino Wiring-based Framework, bestie 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. literally the whole vibe ✨
- **`framework_spl`** — the ST Standard Peripheral Library 🎀 it provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) from having to deal directly with the registers. no cap, it's giving "let me handle that for you" 🫶

---

# 🌈 sduino UNO (STM8S105K6) 🌈

## 📋 Contents

- sduino UNO (STM8S105K6)
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_ststm8`: The STM8 is an 8-bit microcontroller family by STMicroelectronics, an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller. 💅

- **Microcontroller** — `STM8S105K6T6`
- **Frequency** — `16MHz`
- **Flash** — `32KB`
- **RAM** — `2KB`
- **Vendor** — `sduino`

## ⚙️ Configuration

Please use `s8uno` ID for `projectconf_env_board` option in `projectconf`:

[env:s8uno] platform = ststm8 board = s8uno


You can override default sduino UNO (STM8S105K6) settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `s8uno.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:s8uno] platform = ststm8 board = s8uno

; change microcontroller board_build.mcu = stm8s105k6t6

; change MCU frequency board_build.f_cpu = 16000000L


## 🚀 Uploading

sduino UNO (STM8S105K6) supports the next uploading protocols:

- `serial`
- `stlinkv2`

Default protocol is `serial` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:s8uno] platform = ststm8 board = s8uno

upload_protocol = serial


## 🐛 Debugging

`piodebug` currently does not support sduino UNO (STM8S105K6) board. 😭 not me crying over missing debug support, it's fine, we move.

## 🧩 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework 💖 it allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic honestly 🌸
- **`framework_spl`** — the ST Standard Peripheral Library 🎀 it provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) from having to deal directly with the registers. periodt 💅

---

# 🌟 Teensy 🌟

## 🦋 Teensy 2.0 🦋

### 📋 Contents

- Teensy 2.0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔧 Hardware

Platform `platform_teensy`: Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No

special programmer is needed, bestie — literally just a standard USB cable and a PC or Macintosh with a USB port. 💅 No cap.

Teensy 2.0 spec sheet, the whole vibe check:

- **Microcontroller**: `ATMEGA32U4`
- **Frequency**: `16MHz`
- **Flash**: `31.50KB`
- **RAM**: `2.50KB`
- **Vendor**: `Teensy`

### ✨ Configuration ✨

Please use `teensy2` ID for the `projectconf_env_board` option in `projectconf`:

[env:teensy2] platform = teensy board = teensy2


You can override default Teensy 2.0 settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `teensy2.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🦋

[env:teensy2] platform = teensy board = teensy2

; change microcontroller board_build.mcu = atmega32u4

; change MCU frequency board_build.f_cpu = 16000000L


### 🚀 Uploading 🚀

Teensy 2.0 supports the next uploading protocols:

- `teensy-cli`
- `teensy-gui`

Default protocol is `teensy-gui`. 👑

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:teensy2] platform = teensy board = teensy2

upload_protocol = teensy-gui


### 🐛 Debugging 🐛

`piodebug` currently does not support Teensy 2.0 board. 😭 That's just how it is, bestie.

### 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

---

## 🎀 Teensy 3.0 🎀

### Contents

- Teensy 3.0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_teensy`: Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port. 💖

The receipts:

- **Microcontroller**: `MK20DX128`
- **Frequency**: `48MHz`
- **Flash**: `128KB`
- **RAM**: `16KB`
- **Vendor**: `Teensy`

### ✨ Configuration ✨

Please use `teensy30` ID for the `projectconf_env_board` option in `projectconf`:

[env:teensy30] platform = teensy board = teensy30


You can override default Teensy 3.0 settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `teensy30.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:teensy30] platform = teensy board = teensy30

; change microcontroller board_build.mcu = mk20dx128

; change MCU frequency board_build.f_cpu = 48000000L


### 🚀 Uploading 🚀

Teensy 3.0 supports the next uploading protocols:

- `teensy-cli`
- `teensy-gui`

Default protocol is `teensy-gui`. 💅

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:teensy30] platform = teensy board = teensy30

upload_protocol = teensy-gui


### 🐛 Debugging 🐛

`piodebug` currently does not support Teensy 3.0 board. Same energy as before, sorry. 🙈

### 🧚 Frameworks 🧚

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌸

---

## 🦋 Teensy 3.1 / 3.2 🦋

### Contents

- Teensy 3.1 / 3.2
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_teensy`: Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port. ⭐

Numbers, and they ate:

- **Microcontroller**: `MK20DX256`
- **Frequency**: `72MHz`
- **Flash**: `256KB`
- **RAM**: `64KB`
- **Vendor**: `Teensy`

### ✨ Configuration ✨

Please use `teensy31` ID for the `projectconf_env_board` option in `projectconf`:

[env:teensy31] platform = teensy board = teensy31


You can override default Teensy 3.1 / 3.2 settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `teensy31.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:teensy31] platform = teensy board = teensy31

; change microcontroller board_build.mcu = mk20dx256

; change MCU frequency board_build.f_cpu = 72000000L


### 🚀 Uploading 🚀

Teensy 3.1 / 3.2 supports the next uploading protocols:

- `jlink`
- `teensy-cli`
- `teensy-gui`

Default protocol is `teensy-gui`. 👑

You can change upload protocol using the `projectconf_upload_protocol` option:

[env:teensy31] platform = teensy board = teensy31

upload_protocol = teensy-gui


### 🐛 Debugging 🐛

`piodebug` — the "1-click" solution for debugging with a zero configuration. 🔥

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. 💜

<pink>Teensy 3.1 / 3.2</pink> does not have on-board debug probe and <red>IS NOT READY</red> for debugging 😭. You will need to use/buy one of external probe listed below. No built-in magic here bestie, you gotta bring your own.

- **Compatible Tools:** `debugging_tool_jlink`
  - **On-board:** <lavender>nope, empty, nothing there 🙈</lavender>
  - **Default:** <green>Yes</green>

---

## ✨ Frameworks ✨

Here's the Name → Description lineup, bestie, take notes 📝:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <rainbow>iconic behavior honestly</rainbow> ✨
- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. like… it's giving full ecosystem 💅

---

## 🦋 Teensy 3.5 🦋

### Contents

- Teensy 3.5
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_teensy`: Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port. <mint>plug and play energy fr fr</mint> 🔌

- **Microcontroller:** `MK64FX512`
- **Frequency:** `120MHz`
- **Flash:** `512KB`
- **RAM:** `255.99KB`
- **Vendor:** Teensy

### Configuration

Please use <hotpink>`teensy35`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:teensy35] platform = teensy board = teensy35


You can override default Teensy 3.5 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `teensy35.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:teensy35] platform = teensy board = teensy35

; change microcontroller board_build.mcu = mk64fx512

; change MCU frequency board_build.f_cpu = 120000000L


### Uploading

Teensy 3.5 supports the next uploading protocols:

- `jlink`
- `teensy-cli`
- `teensy-gui`

Default protocol is `teensy-gui` <purple>(the chosen one ✨)</purple>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:teensy35] platform = teensy board = teensy35

upload_protocol = teensy-gui


### Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. <cyan>one click?? we love efficiency 💅</cyan>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Teensy 3.5 does not have on-board debug probe and <red>IS NOT READY</red> for debugging 😭. You will need to use/buy one of external probe listed below.

- **Compatible Tools:** `debugging_tool_jlink`
  - **On-board:** <lavender>still nothing, sorry bestie 🙈</lavender>
  - **Default:** <green>Yes</green>

### Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🌈

---

## 🌸 Teensy 3.6 🌸

### Contents

- Teensy 3.6
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware

Platform `platform_teensy`: Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port. <mint>same vibe, bigger numbers</mint> 🔌

- **Microcontroller:** `MK66FX1M0`
- **Frequency:** `180MHz`
- **Flash:** `1MB`
- **RAM:** `256KB`
- **Vendor:** Teensy

### Configuration

Please use <hotpink>`teensy36`</hotpink> ID for `projectconf_env_board` option in `projectconf`:

[env:teensy36] platform = teensy board = teensy36


You can override default Teensy 3.6 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `teensy36.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:teensy36] platform = teensy board = teensy36

; change microcontroller board_build.mcu = mk66fx1m0

; change MCU frequency board_build.f_cpu = 180000000L


### Uploading

Teensy 3.6 supports the next uploading protocols:

- `jlink`
- `teensy-cli`
- `teensy-gui`

Default protocol is `teensy-gui` <purple>(yes, again, she's the moment ⭐)</purple>

You can change upload protocol using `projectconf_upload_protocol` option:

[env:teensy36] platform = teensy board = teensy36

upload_protocol = teensy-gui


### Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration. <cyan>zero config?? chef's kiss 😭</cyan>

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

<pink>Teensy 3.6</pink> straight up does <red>NOT</red> have an on-board debug probe and is <red>NOT READY for debugging</red>, bestie 😭 like it's just not the moment for it. You're gonna need to use (or go buy) one of the external probes listed below:

- **Compatible tools** for this board:
  - **`debugging_tool_jlink`** — no on-board probe (that column's just empty, tragic), and yep it's the **Default** = **Yes** ✨

---

### 🧚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework, and the way that it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences 💖 iconic behaviour honestly.

---

## 🌈 Teensy 4.0

### ✨ Contents

- Teensy 4.0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔥 Hardware

Platform `platform_teensy`: Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port. lowkey so convenient, no cap 🫶

- **Microcontroller**: `IMXRT1062`
- **Frequency**: `600MHz`
- **Flash**: `1.94MB`
- **RAM**: `512KB`
- **Vendor**: `Teensy`

### 💅 Configuration

Please use `teensy40` ID for `projectconf_env_board` option in `projectconf`:

[env:teensy40] platform = teensy board = teensy40


You can override default Teensy 4.0 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `teensy40.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:teensy40] platform = teensy board = teensy40

; change microcontroller board_build.mcu = imxrt1062

; change MCU frequency board_build.f_cpu = 600000000L


### ⭐ Uploading

Teensy 4.0 supports the next uploading protocols:

- `jlink`
- `teensy-gui`

Default protocol is `teensy-gui`

You can change upload protocol using `projectconf_upload_protocol` option:

[env:teensy40] platform = teensy board = teensy40

upload_protocol = teensy-gui


### 🦋 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally the main character of debug setups 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 🙈 don't skip this step bestie, fr fr

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

Teensy 4.0 does not have on-board debug probe and <red>IS NOT READY for debugging</red> 💀 You will need to use/buy one of external probe listed below.

- **Compatible tools** for this board:
  - **`debugging_tool_jlink`** — no on-board probe (empty column, we move), and it's the **Default** = **Yes** ✨

### 🎀 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🌸 so much range honestly.

---

## 👑 Teensy 4.1

### 🌸 Contents

- Teensy 4.1
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### Hardware 🦋

<pink>Platform `platform_teensy`</pink>: bestie, Teensy is a whole complete USB-based microcontroller development system, in a <hotpink>very small footprint</hotpink>, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port. 💅

---

- **Microcontroller** — `IMXRT1062`
- **Frequency** — `600MHz`
- **Flash** — `7.75MB`
- **RAM** — `512KB`
- **Vendor** — `Teensy`

---

### Configuration ⚙️✨

Please use `teensy41` ID for `projectconf_env_board` option in `projectconf`:

[env:teensy41] platform = teensy board = teensy41


You can override default <purple>Teensy 4.1</purple> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `teensy41.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:teensy41] platform = teensy board = teensy41

; change microcontroller board_build.mcu = imxrt1062

; change MCU frequency board_build.f_cpu = 600000000L


---

### Uploading 🚀💖

Teensy 4.1 supports the next uploading protocols:

- `jlink`
- `teensy-gui`

Default protocol is `teensy-gui` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:teensy41] platform = teensy board = teensy41

upload_protocol = teensy-gui


---

### Debugging 🔍

`piodebug` — <rainbow>"1-click" solution for debugging with a zero configuration.</rainbow>

> **WARNING:** ⚠️ You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

> <red>Teensy 4.1 does not have on-board debug probe and **IS NOT READY** for debugging.</red> You will need to use/buy one of external probe listed below. 😭

Compatible Tools:

- **`debugging_tool_jlink`** — On-board: *(nothing)*, Default: `Yes`

---

### Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## 🌸 Teensy LC 🌸

### Contents 🎀

- Teensy LC
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware 🦋

<pink>Platform `platform_teensy`</pink>: Teensy is a complete USB-based microcontroller development system, in a <hotpink>very small footprint</hotpink>, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port. 💜

---

- **Microcontroller** — `MKL26Z64`
- **Frequency** — `48MHz`
- **Flash** — `62KB`
- **RAM** — `8KB`
- **Vendor** — `Teensy`

---

### Configuration ⚙️✨

Please use `teensylc` ID for `projectconf_env_board` option in `projectconf`:

[env:teensylc] platform = teensy board = teensylc


You can override default <purple>Teensy LC</purple> settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `teensylc.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 👑

[env:teensylc] platform = teensy board = teensylc

; change microcontroller board_build.mcu = mkl26z64

; change MCU frequency board_build.f_cpu = 48000000L


---

### Uploading 🚀💖

Teensy LC supports the next uploading protocols:

- `jlink`
- `teensy-cli`
- `teensy-gui`

Default protocol is `teensy-gui` ✨

You can change upload protocol using `projectconf_upload_protocol` option:

[env:teensylc] platform = teensy board = teensylc


- **`upload_protocol = teensy-gui`**

---

### Debugging

`piodebug` — the <rainbow>"1-click"</rainbow> solution for debugging with a zero configuration. Literally zero config, bestie. 🫶

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging tools using the `projectconf_debug_tool` option in `projectconf`. 💅

Teensy LC does not have an on-board debug probe and **IS NOT READY** for debugging. You will need to use or buy one of the external probes listed below. No cap, it's giving "go shopping" energy. 💀

Compatible tools for this board:

- **`debugging_tool_jlink`** — On-board probe: *nothing listed* — Default: **Yes** ✅

---

### Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎨✨

---

## <pink>Teensy++ 2.0</pink> 🌸

### Contents

- Teensy++ 2.0
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

### Hardware

Platform `platform_teensy`: Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed — just a standard USB cable and a PC or Macintosh with a USB port. Iconic, honestly. 🔥

- **Microcontroller** — `AT90USB1286`
- **Frequency** — `16MHz`
- **Flash** — `127KB`
- **RAM** — `8KB`
- **Vendor** — `Teensy`

---

### Configuration

Please use `teensy2pp` ID for the `projectconf_env_board` option in `projectconf`:

[env:teensy2pp] platform = teensy board = teensy2pp


You can override the default Teensy++ 2.0 settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `teensy2pp.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. Slay, customization. 💅

[env:teensy2pp] platform = teensy board = teensy2pp

; change microcontroller board_build.mcu = at90usb1286

; change MCU frequency board_build.f_cpu = 16000000L


---

### Uploading

Teensy++ 2.0 supports the next uploading protocols:

- `teensy-cli`
- `teensy-gui`

Default protocol is `teensy-gui`. ✨

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:teensy2pp] platform = teensy board = teensy2pp

upload_protocol = teensy-gui


---

### Debugging

`piodebug` currently does **not** support the Teensy++ 2.0 board. 😭 Sorry bestie, it's just not that girl yet.

---

### Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🦋

---

## <purple>TI MSP430</purple> 💜

## TI FraunchPad MSP-EXP430FR5739LP

### Contents

- TI FraunchPad MSP-EXP430FR5739LP
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### Hardware

Platform `platform_timsp430`: MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications. Lowkey the energy-saving kings. 👑

- **Microcontroller** — `MSP430FR5739`
- **Frequency** — `16MHz`
- **Flash** — `15.37KB`

- **RAM** — `1KB` 🫶

- **Vendor** — `TI` 💅

---

### ✨ Configuration ✨

okay so to actually use this board you have to tell PlatformIO which board ID to use for the `projectconf_env_board` option in `projectconf`, and bestie, that ID is `lpmsp430fr5739`:

[env:lpmsp430fr5739] platform = timsp430 board = lpmsp430fr5739


ngl you can also override the default TI FraunchPad MSP-EXP430FR5739LP settings *per build environment* using the `board_***` option, where `***` is a JSON object path from the board manifest `lpmsp430fr5739.json`. Think `board_build.mcu`, `board_build.f_cpu`, all of that 💖

[env:lpmsp430fr5739] platform = timsp430 board = lpmsp430fr5739

; change microcontroller board_build.mcu = msp430fr5739

; change MCU frequency board_build.f_cpu = 16000000L


---

### ✨ Debugging ✨

`piodebug` is the "1-click" solution for debugging with a zero configuration. literally zero setup, it's giving effortless 🔥

> **WARNING:** you *will* need to install debug tool drivers depending on your system 🙈 please click on the compatible debug tool below for the further instructions and configuration information, okay?

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf` 💫

TI FraunchPad MSP-EXP430FR5739LP has an on-board debug probe and IS READY for debugging. You do **not** need to use or buy an external debug probe, bestie, save your coins 👑

- **`debugging_tool_mspdebug`** — On-board: `Yes`, Default: `Yes` ⭐

---

### ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🌈

---

## 🌸 TI LaunchPad MSP-EXP430F5529LP 🌸

### ✨ Contents ✨

- TI LaunchPad MSP-EXP430F5529LP

  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

### ✨ Hardware ✨

Platform `platform_timsp430`: MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications 💜 like, the range?? unmatched.

- **Microcontroller** — `MSP430F5529`
- **Frequency** — `25MHz`
- **Flash** — `47KB`
- **RAM** — `8KB`
- **Vendor** — `TI`

---

### ✨ Configuration ✨

Please use the `lpmsp430f5529` ID for the `projectconf_env_board` option in `projectconf` 🎀

[env:lpmsp430f5529] platform = timsp430 board = lpmsp430f5529


You can override default TI LaunchPad MSP-EXP430F5529LP settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lpmsp430f5529.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. ✨

[env:lpmsp430f5529] platform = timsp430 board = lpmsp430f5529

; change microcontroller board_build.mcu = msp430f5529

; change MCU frequency board_build.f_cpu = 25000000L


---

### ✨ Debugging ✨

`piodebug` — the "1-click" solution for debugging with a zero configuration. no cap, it just works 🦋

> **WARNING:** you will need to install debug tool drivers depending on your system 😭 please click on the compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf` 💅

TI LaunchPad MSP-EXP430F5529LP has an on-board debug probe and IS READY for debugging. You don't need to use or buy an external debug probe. iconic behavior honestly 👑

- **`debugging_tool_mspdebug`** — On-board: `Yes`, Default: `Yes` ⭐

---

### ✨ Frameworks ✨

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 🌸

and that's the last row of that table, bestie — the framework lineup wraps with exactly one entry, no more, no less 💖

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.

---

## TI LaunchPad MSP-EXP430FR2311LP

### Contents

- TI LaunchPad MSP-EXP430FR2311LP
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### Hardware

Platform `platform_timsp430`: MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications.

okay so here's the spec sheet moment, look at her 👑

- **Microcontroller** — `MSP430FR2311`
- **Frequency** — `16MHz`
- **Flash** — `3.75KB`
- **RAM** — `1KB`
- **Vendor** — `TI`

### Configuration

Please use `lpmsp430fr2311` ID for `projectconf_env_board` option in `projectconf`:

[env:lpmsp430fr2311] platform = timsp430 board = lpmsp430fr2311


You can override default TI LaunchPad MSP-EXP430FR2311LP settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lpmsp430fr2311.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:lpmsp430fr2311] platform = timsp430 board = lpmsp430fr2311

; change microcontroller board_build.mcu = msp430fr2311

; change MCU frequency board_build.f_cpu = 16000000L


### Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration.

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <pink>do NOT skip the drivers, bestie, it's giving chaos otherwise 😭</pink>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

TI LaunchPad MSP-EXP430FR2311LP has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <mint>it comes with the probe already, no shopping trip required 🫶</mint>

- **Compatible Tools** — `debugging_tool_mspdebug` · **On-board** — Yes · **Default** — Yes

---

## TI LaunchPad MSP-EXP430FR2433LP

### Contents

- TI LaunchPad MSP-EXP430FR2433LP
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### Hardware

Platform `platform_timsp430`: MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications.

same platform energy, different little guy, and she's got more room to breathe 🦋

- **Microcontroller** — `MSP430FR2433`
- **Frequency** — `8MHz`
- **Flash** — `15KB`
- **RAM** — `4KB`
- **Vendor** — `TI`

### Configuration

Please use `lpmsp430fr2433` ID for `projectconf_env_board` option in `projectconf`:

[env:lpmsp430fr2433] platform = timsp430 board = lpmsp430fr2433


You can override default TI LaunchPad MSP-EXP430FR2433LP settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lpmsp430fr2433.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc.

[env:lpmsp430fr2433] platform = timsp430 board = lpmsp430fr2433

; change microcontroller board_build.mcu = msp430fr2433

; change MCU frequency board_build.f_cpu = 8000000L


### Debugging

`piodebug` — "1-click" solution for debugging with a zero configuration.

> <red>**WARNING:**</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <peach>drivers first, vibes second, that's the order 🌸</peach>

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

TI LaunchPad MSP-EXP430FR2433LP has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <mint>on-board probe, zero extra purchases, we love a self-sufficient queen 💅</mint>

- **Compatible Tools** — `debugging_tool_mspdebug` · **On-board** — Yes · **Default** — Yes

┌───────────────────┬────────────────────────────┐ │ Name │ Description │ ├───────────────────┼────────────────────────────┤ │ framework_arduino │ Arduino Wiring-based │ │ │ Framework allows writing │ │ │ cross-platform software to │ │ │ control devices attached │ │ │ to a wide range of Arduino │ │ │ boards to create all kinds │ │ │ of creative coding, │ │ │ interactive objects, │ │ │ spaces or physical │ │ │ experiences. │ └───────────────────┴────────────────────────────┘


---

# 🦋 TI LaunchPad MSP-EXP430FR4133LP

## ✨ Contents

- TI LaunchPad MSP-EXP430FR4133LP
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform <pink>`platform_timsp430`</pink>: MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications. no cap, they're little power-sipping icons 🔋✨

┌─────────────────┬──────────────┐ │ Microcontroller │ MSP430FR4133 │ ├─────────────────┼──────────────┤ │ Frequency │ 8MHz │ ├─────────────────┼──────────────┤ │ Flash │ 15KB │ ├─────────────────┼──────────────┤ │ RAM │ 2KB │ ├─────────────────┼──────────────┤ │ Vendor │ TI │ └─────────────────┴──────────────┘


---

## ⚙️ Configuration

okay so bestie, please use the <purple>`lpmsp430fr4133`</purple> ID for the <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:lpmsp430fr4133] platform = timsp430 board = lpmsp430fr4133


You can override the default TI LaunchPad MSP-EXP430FR4133LP settings per build environment using the <lavender>`board_***`</lavender> option, where <lavender>`***`</lavender> is a JSON object path from the board manifest <lavender>`lpmsp430fr4133.json`</lavender>. For example, <lavender>`board_build.mcu`</lavender>, <lavender>`board_build.f_cpu`</lavender>, etc. 💅

[env:lpmsp430fr4133] platform = timsp430 board = lpmsp430fr4133

; change microcontroller board_build.mcu = msp430fr4133

; change MCU frequency board_build.f_cpu = 8000000L


---

## 🐛 Debugging

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. literally zero effort, we love that for you 🫶

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <purple>`debugging_tools`</purple> using the <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

TI LaunchPad MSP-EXP430FR4133LP has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. <rainbow>slay</rainbow> 💖

┌─────────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├─────────────────────────┼──────────┼─────────┤ │ debugging_tool_mspdebug │ Yes │ Yes │ └─────────────────────────┴──────────┴─────────┘


---

## 🌈 Frameworks

┌───────────────────┬────────────────────────────┐ │ Name │ Description │ ├───────────────────┼────────────────────────────┤ │ framework_arduino │ Arduino Wiring-based │ │ │ Framework allows writing │ │ │ cross-platform software to │ │ │ control devices attached │ │ │ to a wide range of Arduino │ │ │ boards to create all kinds │ │ │ of creative coding, │ │ │ interactive objects, │ │ │ spaces or physical │ │ │ experiences. │ └───────────────────┴────────────────────────────┘


---

# 🎀 TI LaunchPad MSP-EXP430FR5969LP

## ✨ Contents

- TI LaunchPad MSP-EXP430FR5969LP
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## 🔧 Hardware

Platform <pink>`platform_timsp430`</pink>: MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications. same energy as before, just a different little guy 👑

┌─────────────────┬──────────────┐ │ Microcontroller │ MSP430FR5969 │ ├─────────────────┼──────────────┤ │ Frequency │ 8MHz │ ├─────────────────┼──────────────┤ │ Flash │ 47KB │ ├─────────────────┼──────────────┤ │ RAM │ 2KB │ ├─────────────────┼──────────────┤ │ Vendor │ TI │ └─────────────────┴──────────────┘


---

## ⚙️ Configuration

Please use the <purple>`lpmsp430fr5969`</purple> ID for the <purple>`projectconf_env_board`</purple> option in <purple>`projectconf`</purple>:

[env:lpmsp430fr5969] platform = timsp430 board = lpmsp430fr5969


You can override the default TI LaunchPad MSP-EXP430FR5969LP settings per build environment using the <lavender>`board_***`</lavender> option, where <lavender>`***`</lavender> is a JSON object path from the board manifest <lavender>`lpmsp430fr5969.json`</lavender>. For example, <lavender>`board_build.mcu`</lavender>, <lavender>`board_build.f_cpu`</lavender>, etc. 💅

[env:lpmsp430fr5969] platform = timsp430 board = lpmsp430fr5969

; change microcontroller board_build.mcu = msp430fr5969

; change MCU frequency board_build.f_cpu = 8000000L


---

## 🐛 Debugging

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. yes bestie, one single click, we're thriving 🦋

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging <purple>`debugging_tools`</purple> using the <purple>`projectconf_debug_tool`</purple> option in <purple>`projectconf`</purple>.

TI LaunchPad MSP-EXP430FR5969LP has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. no extra shopping trip required, iconic behavior honestly 💅

┌─────────────────────────┬──────────┬─────────┐ │ Compatible Tools │ On-board │ Default │ ├─────────────────────────┼──────────┼─────────┤ │ debugging_tool_mspdebug │ Yes │ Yes │ └─────────────────────────┴──────────┴─────────┘


---

## 🌈 Frameworks

┌───────────────────┬────────────────────────────┐ │ Name │ Description │ ├───────────────────┼────────────────────────────┤ │ framework_arduino │ Arduino Wiring-based │ │ │ Framework allows writing │ │ │ cross-platform software to │ │ │ control devices attached │ │ │ to a wide range of Arduino │ │ │ boards to create all kinds │ │ │ of creative coding, │ │ │ interactive objects, │ │ │ spaces or physical │ │ │ experiences. │ └───────────────────┴────────────────────────────┘


---

# 💜 TI LaunchPad MSP-EXP430FR5994LP

## ✨ Contents

- TI LaunchPad MSP-EXP430FR5994LP
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## 🌈 Frameworks

and the framework table for this one is rolling in right here, bestie — keep scrolling 👇✨

### 🛠️ Hardware

<pink>Platform</pink> `platform_timsp430`: MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications. <rainbow>periodt</rainbow> 💅

- **Microcontroller** — `MSP430FR5994`
- **Frequency** — `16MHz`
- **Flash** — `256KB`
- **RAM** — `4KB`
- **Vendor** — `TI`

---

### ⚙️ Configuration

Please use `lpmsp430fr5994` ID for `projectconf_env_board` option in `projectconf`:

[env:lpmsp430fr5994] platform = timsp430 board = lpmsp430fr5994


You can override default TI LaunchPad MSP-EXP430FR5994LP settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lpmsp430fr5994.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <cyan>iykyk</cyan> ✨

[env:lpmsp430fr5994] platform = timsp430 board = lpmsp430fr5994

; change microcontroller board_build.mcu = msp430fr5994

; change MCU frequency board_build.f_cpu = 16000000L


---

### 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration.

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

TI LaunchPad MSP-EXP430FR5994LP has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <mint>no cap, it's literally built in</mint> 🫶

- **Compatible Tools** — `debugging_tool_mspdebug` (On-board: `Yes`, Default: `Yes`) 👑

---

### 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. <lavender>so iconic honestly</lavender> 💖

---

## 🌸 TI LaunchPad MSP-EXP430FR6989LP

### 📋 Contents

- TI LaunchPad MSP-EXP430FR6989LP

  - Hardware

  - Configuration

  - Debugging

  - Frameworks

### 🛠️ Hardware

<pink>Platform</pink> `platform_timsp430`: MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications.

- **Microcontroller** — `MSP430FR6989`
- **Frequency** — `8MHz`
- **Flash** — `47KB`
- **RAM** — `2KB`
- **Vendor** — `TI`

---

### ⚙️ Configuration

Please use `lpmsp430fr6989` ID for `projectconf_env_board` option in `projectconf`:

[env:lpmsp430fr6989] platform = timsp430 board = lpmsp430fr6989


You can override default TI LaunchPad MSP-EXP430FR6989LP settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lpmsp430fr6989.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 💫

[env:lpmsp430fr6989] platform = timsp430 board = lpmsp430fr6989

; change microcontroller board_build.mcu = msp430fr6989

; change MCU frequency board_build.f_cpu = 8000000L


---

### 🐛 Debugging

`piodebug` - "1-click" solution for debugging with a zero configuration.

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

TI LaunchPad MSP-EXP430FR6989LP has on-board debug probe and IS READY for debugging. You don't need to use/buy external debug probe. <mint>bestie you literally don't have to buy anything</mint> 💅

- **Compatible Tools** — `debugging_tool_mspdebug` (On-board: `Yes`, Default: `Yes`) ⭐

---

### 🧩 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀

---

## 🦋 TI LaunchPad MSP-EXP430G2 w/ MSP430G2231

### 📋 Contents

- TI LaunchPad MSP-EXP430G2 w/ MSP430G2231

  - Hardware

  - Configuration

  - Debugging

  - Frameworks

### 🛠️ Hardware

<pink>Platform</pink> `platform_timsp430`: MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications.

- **Microcontroller** — `MSP430G2231`
- **Frequency** — `1MHz`
- **Flash** — `2KB`
- **RAM** — `256B`
- **Vendor** — `TI`

---

### ⚙️ Configuration

Please use `lpmsp430g2231` ID for `projectconf_env_board` option in `projectconf`:

[env:lpmsp430g2231] platform = timsp430 board = lpmsp430g2231


You can override default TI LaunchPad MSP-EXP430G2 w/ MSP430G2231 settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `lpmsp430g2231.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🌈

[env:lpmsp430g2231] platform = timsp430 board = lpmsp430g2231

; change microcontroller board_build.mcu = msp430g2231

; change MCU frequency board_build.f_cpu = 1000000L


### 🐛 Debugging 🐛

<pink>`piodebug`</pink> — the <rainbow>"1-click"</rainbow> solution for debugging with a <purple>zero configuration</purple>. literally just vibe and go 💅

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debug tools using the <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`. pick your fighter bestie 🎀

TI LaunchPad MSP-EXP430G2 w/ MSP430G2231 has an on-board debug probe and is <green>READY</green> for debugging. You don't need to use/buy external debug probe. it's giving self-sufficient queen 👑

- <cyan>`debugging_tool_mspdebug`</cyan> — On-board: **Yes**, Default: **Yes** ✅

---

### 🧩 Frameworks 🧩

- <hotpink>`framework_arduino`</hotpink> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's the blueprint era fr fr ✨

---

## 👑 TI LaunchPad MSP-EXP430G2 w/ MSP430G2452 👑

### 📜 Contents 📜

- TI LaunchPad MSP-EXP430G2 w/ MSP430G2452
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

### 🔧 Hardware 🔧

Platform <cyan>`platform_timsp430`</cyan>: MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications. lowkey iconic energy 🌸

- **Microcontroller** — `MSP430G2452`
- **Frequency** — `16MHz`
- **Flash** — `8KB`
- **RAM** — `256B`
- **Vendor** — `TI`

### ⚙️ Configuration ⚙️

Please use <hotpink>`lpmsp430g2452`</hotpink> ID for the <cyan>`projectconf_env_board`</cyan> option in `projectconf`:

[env:lpmsp430g2452] platform = timsp430 board = lpmsp430g2452


You can override default TI LaunchPad MSP-EXP430G2 w/ MSP430G2452 settings per build environment using the <cyan>`board_***`</cyan> option, where `***` is a JSON object path from the board manifest <purple>`lpmsp430g2452.json`</purple>. For example, `board_build.mcu`, `board_build.f_cpu`, etc. mix and match bestie, it's your build now 💅

[env:lpmsp430g2452] platform = timsp430 board = lpmsp430g2452

; change microcontroller board_build.mcu = msp430g2452

; change MCU frequency board_build.f_cpu = 16000000L


### 🐛 Debugging 🐛

<pink>`piodebug`</pink> — the <rainbow>"1-click"</rainbow> solution for debugging with a <purple>zero configuration</purple>. no cap 🫶

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debug tools using the <cyan>`projectconf_debug_tool`</cyan> option in `projectconf`. switch it up whenever 🦋

TI LaunchPad MSP-EXP430G2 w/ MSP430G2452 has an on-board debug probe and is <green>READY</green> for debugging. You don't need to use/buy external debug probe. main character board behavior 😭✨

- <cyan>`debugging_tool_mspdebug`</cyan> — On-board: **Yes**, Default: **Yes** ✅

### 🧩 Frameworks 🧩

- <hotpink>`framework_arduino`</hotpink> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. the way it just does everything 🎀

---

## 💜 TI LaunchPad MSP-EXP430G2553LP 💜

### 📜 Contents 📜

- TI LaunchPad MSP-EXP430G2553LP
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

<purple>Microcontroller</purple> **`MSP430G2553`** 💜

- <cyan>Frequency</cyan> — **`16MHz`**
- <cyan>Flash</cyan> — **`16KB`**
- <cyan>RAM</cyan> — **`512B`**
- <cyan>Vendor</cyan> — **`TI`**

---

## 🌸 Configuration

bestie, use the <hotpink>`lpmsp430g2553`</hotpink> ID for the <lavender>`projectconf_env_board`</lavender> option inside <lavender>`projectconf`</lavender>:

[env:lpmsp430g2553] platform = timsp430 board = lpmsp430g2553


You can override the default <peach>TI LaunchPad MSP-EXP430G2553LP</peach> settings per build environment using the <hotpink>`board_***`</hotpink> option, where <hotpink>`***`</hotpink> is a JSON object path from the board manifest <lavender>`lpmsp430g2553.json`</lavender>. For example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc. ✨

[env:lpmsp430g2553] platform = timsp430 board = lpmsp430g2553

; change microcontroller board_build.mcu = msp430g2553

; change MCU frequency board_build.f_cpu = 16000000L


---

## 🎀 Debugging

<hotpink>`piodebug`</hotpink> — the "<rainbow>1-click</rainbow>" solution for debugging with a <purple>zero configuration</purple>. iconic honestly 💅

> **WARNING:** you will need to install debug tool drivers depending on your system, bestie. Please click on the compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging <lavender>`debugging_tools`</lavender> using the <hotpink>`projectconf_debug_tool`</hotpink> option in <lavender>`projectconf`</lavender>.

TI LaunchPad <peach>MSP-EXP430G2553LP</peach> has an on-board debug probe and **IS READY for debugging**. You don't need to use/buy an external debug probe. no cap 🫶

- <cyan>Compatible Tools</cyan>: <hotpink>`debugging_tool_mspdebug`</hotpink> — <mint>On-board</mint>: **Yes** — <mint>Default</mint>: **Yes** ⭐

---

## 🦋 Frameworks

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving *main character energy* fr fr 🌈

---

# 👑 TI TIVA

<pink>TI LaunchPad (Stellaris) w/ `lm4f120` (80MHz)</pink>

## 💖 Contents

- TI LaunchPad (Stellaris) w/ `lm4f120` (80MHz)
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

---

## ✨ Hardware

Platform <lavender>`platform_titiva`</lavender>: Texas Instruments <peach>TM4C12x</peach> MCUs offer the industrys most popular <purple>ARM Cortex-M4</purple> core with scalable memory and package options, unparalleled connectivity peripherals, advanced application functions, industry-leading analog integration, and extensive software solutions. she's *that* girl 💅

<purple>Microcontroller</purple> **`LPLM4F120H5QR`** 💜

- <cyan>Frequency</cyan> — **`80MHz`**
- <cyan>Flash</cyan> — **`256KB`**
- <cyan>RAM</cyan> — **`32KB`**
- <cyan>Vendor</cyan> — **`TI`**

---

## 🌸 Configuration

okay so use the <hotpink>`lplm4f120h5qr`</hotpink> ID for the <lavender>`projectconf_env_board`</lavender> option inside <lavender>`projectconf`</lavender>:

[env:lplm4f120h5qr] platform = titiva board = lplm4f120h5qr


You can override the default <peach>TI LaunchPad (Stellaris) w/ lm4f120 (80MHz)</peach> settings per build environment using the <hotpink>`board_***`</hotpink> option, where <hotpink>`***`</hotpink> is a JSON object path from the board manifest <lavender>`lplm4f120h5qr.json`</lavender>. For example, <cyan>`board_build.mcu`</cyan>, <cyan>`board_build.f_cpu`</cyan>, etc. ✨

[env:lplm4f120h5qr] platform = titiva board = lplm4f120h5qr

; change microcontroller board_build.mcu = lplm4f120h5qr

; change MCU frequency board_build.f_cpu = 80000000L


---

## 🎀 Debugging

<hotpink>`piodebug`</hotpink> — the "<rainbow>1-click</rainbow>" solution for debugging with a <purple>zero configuration</purple>. obsessed 😭

> **WARNING:** you will need to install debug tool drivers depending on your system, bestie. Please click on the compatible debug tool below for the further instructions and configuration information. 🙈

You can switch between debugging <lavender>`debugging_tools`</lavender> using the <hotpink>`projectconf_debug_tool`</hotpink> option in <lavender>`projectconf`</lavender>.

TI LaunchPad (Stellaris) w/ <peach>`lm4f120`</peach> (80MHz) has an on-board debug probe and **IS READY for debugging**. You don't need to use/buy an external debug probe. 🫶

- <cyan>Compatible Tools</cyan>: <hotpink>`debugging_tool_ti-icdi`</hotpink> — <mint>On-board</mint>: **Yes** — <mint>Default</mint>: **Yes** ⭐

---

## 🦋 Frameworks

- <cyan>Name</cyan> — <cyan>Description</cyan>

Continuing that Frameworks table, bestie:

- <pink>**`framework_arduino`**</pink> — the Arduino Wiring-based Framework 💖 and its whole thing is letting you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic, honestly ✨
- <hotpink>**`framework_libopencm3`**</hotpink> — the libOpenCM3 framework, and the goal here is to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers — including ST STM32, Ti Tiva and Stellaris, NXP LPC11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. no cap, it covers a LOT 🦋

---

# 🌈 TI LaunchPad (Tiva C) w/ tm4c123 (80MHz) 🌈

## 🎀 Contents

- TI LaunchPad (Tiva C) w/ tm4c123 (80MHz)
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_titiva`: Texas Instruments TM4C12x MCUs offer the industrys most popular ARM Cortex-M4 core with scalable memory and package options, unparalleled connectivity peripherals, advanced application functions, industry-leading analog integration, and extensive software solutions. 💅

- **Microcontroller** — `LPTM4C1230C3PM`
- **Frequency** — `80MHz`
- **Flash** — `256KB`
- **RAM** — `32KB`
- **Vendor** — `TI`

## ⚙️ Configuration

Please use the `lptm4c1230c3pm` ID for the `projectconf_env_board` option in `projectconf`, bestie:

[env:lptm4c1230c3pm] platform = titiva board = lptm4c1230c3pm


You can override the default TI LaunchPad (Tiva C) w/ tm4c123 (80MHz) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lptm4c1230c3pm.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:lptm4c1230c3pm] platform = titiva board = lptm4c1230c3pm

; change microcontroller board_build.mcu = lptm4c1230c3pm

; change MCU frequency board_build.f_cpu = 80000000L


## 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. ✨

> **WARNING:** 😭 You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information.

You can switch between debugging `debugging_tools` using the `projectconf_debug_tool` option in `projectconf`. 🎀

TI LaunchPad (Tiva C) w/ tm4c123 (80MHz) has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. 💅

- **Compatible Tools** — `debugging_tool_ti-icdi`
- **On-board** — Yes
- **Default** — Yes

## 🧚 Frameworks

- <pink>**`framework_arduino`**</pink> — the Arduino Wiring-based Framework 💖 lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨
- <hotpink>**`framework_libopencm3`**</hotpink> — the libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers — including ST STM32, Ti Tiva and Stellaris, NXP LPC11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. 🦋

---

# 🌸 TI LaunchPad (Tiva C) w/ tm4c129 (120MHz) 🌸

## 🎀 Contents

- TI LaunchPad (Tiva C) w/ tm4c129 (120MHz)
  - Hardware
  - Configuration
  - Debugging
  - Frameworks

## 🔧 Hardware

Platform `platform_titiva`: Texas Instruments TM4C12x MCUs offer the industrys most popular ARM Cortex-M4 core with scalable memory and package options, unparalleled connectivity peripherals, advanced application functions, industry-leading analog integration, and extensive software solutions. 👑

- **Microcontroller** — `LPTM4C1294NCPDT`

- **Frequency** — `120MHz` 🌸
- **Flash** — `1MB` ✨
- **RAM** — `256KB` 💖
- **Vendor** — `TI` 👑

### ⚙️ Configuration

ok bestie so to set this board up, please use the `lptm4c1294ncpdt` ID for the `projectconf_env_board` option in `projectconf`:

[env:lptm4c1294ncpdt] platform = titivia board = lptm4c1294ncpdt


and here's the fun part 🎀 you can override the default TI LaunchPad (Tiva C) w/ tm4c129 (120MHz) settings per build environment using the `board_***` option, where `***` is a JSON object path from the board manifest `lptm4c1294ncpdt.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. no cap.

[env:lptm4c1294ncpdt] platform = titivia board = lptm4c1294ncpdt

; change microcontroller board_build.mcu = lptm4c1294ncpdt

; change MCU frequency board_build.f_cpu = 120000000L


### 🐛 Debugging

`piodebug` — the "1-click" solution for debugging with a zero configuration. literally iconic behavior 💅

> ⚠️ **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. 👀

you can switch between debugging debugging_tools using the `projectconf_debug_tool` option in `projectconf`. super easy.

the TI LaunchPad (Tiva C) w/ tm4c129 (120MHz) has an on-board debug probe and IS READY for debugging. You don't need to use/buy an external debug probe. slay, honestly 🙌

compatible tools for this board:

- **`debugging_tool_ti-icdi`** — On-board: **Yes**, Default: **Yes** 🌈

### 🎀 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving main character energy fr fr.
- **`framework_libopencm3`** — the libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. so many boards, so little time 😭.

---

## 🌊 WIZNet W7500 / WIZwiki-W7500

### 📜 Contents

- WIZwiki-W7500
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

### 🔩 Hardware

Platform `platform_wiznet7500`: The IOP (Internet Offload Processor) W7500 is the one-chip solution which integrates an ARM Cortex-M0, 128KB Flash and hardwired TCP/IP core for various embedded application platform especially requiring Internet of things. yes bestie, it does IoT. 🦋

- **Microcontroller** — `WIZNET7500` 💜
- **Frequency** — `48MHz` ⭐
- **Flash** — `128KB` 🌸
- **RAM** — `48KB` 💖
- **Vendor** — `WIZNet` 👑

### ⚙️ Configuration

please use the `wizwiki_w7500` ID for the `projectconf_env_board` option in `projectconf`:

[env:wizwiki_w7500] platform = wiznet7500 board = wizwiki_w7500


you can override default WIZwiki-W7500 settings per build environment using `board_***` option, where `***` is a JSON object path from the board manifest `wizwiki_w7500.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. 🫶

[env:wizwiki_w7500] platform = wiznet7500 board = wizwiki_w7500

; change microcontroller board_build.mcu = wiznet7500

; change MCU frequency board_build.f_cpu = 48000000L


### 🚀 Uploading

WIZwiki-W7500 supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` ✨

you can change the upload protocol using the `projectconf_upload_protocol` option:

[env:wizwiki_w7500] platform = wiznet7500 board = wizwiki_w7500

upload_protocol = mbed


---

## Debugging 💅

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. <pink>Obsessed, honestly.</pink>

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>Do NOT skip this bestie, I'm begging.</red>

You can switch between debugging `debugging_tools` using the <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

WIZwiki-W7500 has an on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy an external debug probe. <mint>She comes prepared, periodt. 💅</mint>

**Compatible Tools 🛠️**

- **`debugging_tool_cmsis-dap`** — On-board: <green>Yes</green> · Default: <green>Yes</green>
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)*

---

## Frameworks 🌈

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. <purple>Like, it's giving entire ecosystem. 🦋</purple>

---

# 👑 WIZwiki-W7500ECO 👑

## Contents 🎀

- WIZwiki-W7500ECO
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## Hardware 🔧

Platform `platform_wiznet7500`: The IOP (Internet Offload Processor) W7500 is the one-chip solution which integrates an ARM Cortex-M0, 128KB Flash and hardwired TCP/IP core for various embedded application platform especially requiring Internet of things. <cyan>It's the whole squad in one chip, no cap.</cyan>

- **Microcontroller** — `WIZNET7500ECO`
- **Frequency** — `48MHz`
- **Flash** — `128KB`
- **RAM** — `48KB`
- **Vendor** — `WIZNet`

---

## Configuration ⚙️

Please use `wizwiki_w7500eco` ID for the `projectconf_env_board` option in `projectconf`:

[env:wizwiki_w7500eco] platform = wiznet7500 board = wizwiki_w7500eco


You can override default WIZwiki-W7500ECO settings per build environment using the `board_***` option, where `***` is a JSON object path from board manifest `wizwiki_w7500eco.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. <mint>Customize her, she loves it. ✨</mint>

[env:wizwiki_w7500eco] platform = wiznet7500 board = wizwiki_w7500eco

; change microcontroller board_build.mcu = wiznet7500eco

; change MCU frequency board_build.f_cpu = 48000000L


---

## Uploading 🚀

WIZwiki-W7500ECO supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed`.

You can change the upload protocol using the `projectconf_upload_protocol` option:

[env:wizwiki_w7500eco] platform = wiznet7500 board = wizwiki_w7500eco

upload_protocol = mbed


---

## Debugging 💅

<pink>`piodebug`</pink> — the "1-click" solution for debugging with a zero configuration. <pink>Still iconic, still undefeated.</pink>

> <red>WARNING:</red> You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. <red>Seriously bestie, drivers first. 🙈</red>

You can switch between debugging `debugging_tools` using the <purple>`projectconf_debug_tool`</purple> option in `projectconf`.

WIZwiki-W7500ECO has an on-board debug probe and <rainbow>IS READY</rainbow> for debugging. You don't need to use/buy an external debug probe. <mint>Main character energy, she's self-sufficient. 👑</mint>

**Compatible Tools 🛠️**

- **`debugging_tool_cmsis-dap`** — On-board: <green>Yes</green> · Default: <green>Yes</green>
- **`debugging_tool_jlink`** — On-board: *(blank)* · Default: *(blank)*

---

## Frameworks 🌈

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet

...powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 💖

---

# 🦋 WIZwiki-W7500P 🦋

## ✨ Contents ✨

okay bestie, here's the whole vibe map for this board, lowkey a little table of contents moment 👑

- WIZwiki-W7500P
  - Hardware
  - Configuration
  - Uploading
  - Debugging
  - Frameworks

---

## 💅 Hardware 💅

<cyan>Platform</cyan> <pink>`platform_wiznet7500`</pink>: the IOP (Internet Offload Processor) W7500 is the one-chip solution which integrates an ARM Cortex-M0, 128KB Flash and hardwired TCP/IP core for various embedded application platform especially requiring Internet of things. fr fr, it's giving tiny-but-mighty 🫶

- **Microcontroller** — `WIZNET7500P`
- **Frequency** — `48MHz`
- **Flash** — `128KB`
- **RAM** — `48KB`
- **Vendor** — `WIZNet`

---

## 🌸 Configuration 🌸

Please use `wizwiki_w7500p` ID for `projectconf_env_board` option in `projectconf`: ✨

[env:wizwiki_w7500p] platform = wiznet7500 board = wizwiki_w7500p


You can override default WIZwiki-W7500P settings per build environment using `board_***` option, where `***` is a JSON object path from board manifest `wizwiki_w7500p.json`. For example, `board_build.mcu`, `board_build.f_cpu`, etc. no cap, you really can poke at these 👇

[env:wizwiki_w7500p] platform = wiznet7500 board = wizwiki_w7500p

; change microcontroller board_build.mcu = wiznet7500p

; change MCU frequency board_build.f_cpu = 48000000L


---

## 🎀 Uploading 🎀

WIZwiki-W7500P supports the next uploading protocols:

- `cmsis-dap`
- `jlink`
- `mbed`

Default protocol is `mbed` 💫

You can change upload protocol using `projectconf_upload_protocol` option:

[env:wizwiki_w7500p] platform = wiznet7500 board = wizwiki_w7500p

upload_protocol = mbed


---

## 🧚 Debugging 🧚

`piodebug` — the "1-click" solution for debugging with a zero configuration. iconic behaviour honestly 👑

> **WARNING:** You will need to install debug tool drivers depending on your system. Please click on compatible debug tool below for the further instructions and configuration information. don't skip this step bestie, your debugger will simply not talk to you otherwise 😭

You can switch between debugging `debugging_tools` using `projectconf_debug_tool` option in `projectconf`.

WIZwiki-W7500P has on-board debug probe and **IS READY** for debugging. You don't need to use/buy external debug probe. the way that's just free?? 💀🫶

**Compatible Tools**

- `debugging_tool_cmsis-dap` — On-board: `Yes`, Default: `Yes`
- `debugging_tool_jlink`

---

## 🌈 Frameworks 🌈

- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. 🌸

---

# 👑 Custom Platform & Board 👑

## ✨ Custom Development Platforms ✨

PlatformIO can build the same binary code under different host systems via the single command `cmd_run` without any dependent software or requirements. highkey magical ✨

A manifest describes how to produce binaries for a particular platform under one or multiple host systems by a set of build scripts, toolchains, the settings for the most popular embedded boards, etc.

This guide explains how to write manifests, to support building for new development platforms. let's get into it, bestie 💅

### 🦋 Step-by-Step Manual 🦋

1. Choose Packages for `platform`

2. Create Manifest File `platform.json`

3. Create Build Script `main.py`

4. Finish with the Installation.

---

## Contents 🗂️

- Custom Development Platforms
  - Packages
  - Manifest File `platform.json`
  - Build Script `main.py`
  - Installation
  - Examples

---

### Packages 📦

Some tools are literally the <pink>same</pink> when you're compiling for several platforms — a common compiler, for example. So a <purple>package</purple> is some tool or framework that can be used when compiling for one *or* multiple platforms. And here's the slay part: even if multiple platforms use the same package, the package only needs to be <hotpink>downloaded once</hotpink>. 💅

Since each package is pre-built for the different host systems (<cyan>Windows</cyan>, <cyan>Mac</cyan>, <cyan>Linux</cyan>), developers can get started without first compiling the tools. No cap, that's a huge time-save. ✨

PlatformIO has a registry with pre-built packages for the most popular operating systems, and you can use them in your platform manifest. These packages are stored in the super-fast and reliably CDN storage provided by <blue>JFrog Bintray</blue>. 🚀

Every platform definition **must** define `packageRepositories` to link to package manifest files that lists how PlatformIO can download the used packages. To use the pre-built packages, include `http://dl.platformio.org/packages/manifest.json` in the `packageRepositories` list. Platform definitions can also use custom packages. 🫶

---

### Manifest File `platform.json` 📝

Each platform definition includes a manifest file with a particular format that is parsed by PlatformIO when handling projects using that platform.

Here is an example `platform.json` for the fictitious platform `"myplatform"`:

{ "name": "myplatform", "title": "My Platform", "description": "My custom development platform", "url": "http://example.com", "homepage": "https://platformio.org/platforms/myplatform", "license": "Apache-2.0", "engines": { "platformio": "~3.0.0" }, "repository": { "type": "git", "url": "https://github.com/platformio/platform-myplatform.git" }, "version": "0.0.0", "packageRepositories": [ "https://dl.bintray.com/platformio/dl-packages/manifest.json", "http://dl.platformio.org/packages/manifest.json", { "my_custom_package": [ { "url": "http://dl.example.com/my_custom_package-darwin_x86_64-1.2.3.tar.gz", "sha1": "bb7ddac56a314b5cb1926cc1790ae4de3a03e65c", "version": "1.2.3", "system": [ "darwin_x86_64", "darwin_i386" ] }, { "url": "http://dl.example.com/my_custom_package-linux_aarch64-1.2.3.tar.gz", "sha1": "127ddac56a314b5cb1926cc1790ae4de3a03e65c", "version": "1.2.3", "system": "linux_aarch64" } ], "framework-%FRAMEWORK_NAME_1%": [ { "url": "http://dl.example.com/packages/framework-%FRAMEWORK_NAME_1%-1.10607.0.tar.gz", "sha1": "adce2cd30a830d71cb6572575bf08461b7b73c07", "version": "1.10607.0", "system": "*" } ] } ], "frameworks": { "%FRAMEWORK_NAME_1%": { "package": "framework-%FRAMEWORK_NAME_1%", "script": "builder/frameworks/%FRAMEWORK_NAME_1%.py" }, "%FRAMEWORK_NAME_N%": { "package": "framework-%FRAMEWORK_NAME_N%", "script": "builder/frameworks/%FRAMEWORK_NAME_N%.py" } }, "packages": { "toolchain-gccarmnoneeabi": { "type": "toolchain", "version": ">=1.40803.0,<1.40805.0" }, "framework-%FRAMEWORK_NAME_1%": { "type": "framework", "optional": true, "version": "~1.10607.0" }, "framework-%FRAMEWORK_NAME_N%": { "type": "framework", "optional": true, "version": "~1.117.0" }, "tool-direct-vcs-url": { "type": "uploader", "optional": true, "version": "https://github.com/user/repo.git" } }, "pythonPackages": { "pypi-pkg-1": "1.2.3", "pypi-pkg-2": ">=2.3, <3" } }


---

### Build Script `main.py` 🐍

Every single platform definition **must** include a `main.py`. Not optional, bestie, it's giving mandatory. 💀

PlatformIO's build script is based on a next-generation build tool named <purple>SCons</purple>. PlatformIO has its own built-in firmware builder `env.BuildProgram` with deep library search. Please see the following template as start for developing your own `main.py`.

""" Build script for test.py test-builder.py """

from os.path import join from SCons.Script import AlwaysBuild, Builder, Default, DefaultEnvironment

env = DefaultEnvironment()

A full list with the available variables

http://www.scons.org/doc/production/HTML/scons-user.html#app-variables

env.Replace( AR="ar", AS="gcc", CC="gcc", CXX="g++", OBJCOPY="objcopy", RANLIB="ranlib",

UPLOADER=join("$PIOPACKAGES_DIR", "tool-bar", "uploader"), UPLOADCMD="$UPLOADER $SOURCES" )

env.Append(

ARFLAGS=["..."], ASFLAGS=["flag1", "flag2", "flagN"], CCFLAGS=["flag1", "flag2", "flagN"], CXXFLAGS=["flag1", "flag2", "flagN"], LINKFLAGS=["flag1", "flag2", "flagN"],

CPPDEFINES=["DEFINE_1", "DEFINE=2", "DEFINE_N"],

LIBS=["additional", "libs", "here"],

BUILDERS=dict( ElfToBin=Builder( action=" ".join([ "$OBJCOPY", "-O", "binary", "$SOURCES", "$TARGET"]), suffix=".bin" ) )


okay bestie, deep breath, we're still inside the platform manifest and it's still giving *config file core*. 💅

The source code of "platformio-build-tool" is here

https://github.com/platformio/platformio-core/blob/develop/platformio/builder/tools/platformio.py

#

Target: Build executable and linkable firmware

# target_elf = env.BuildProgram()

#

Target: Build the .bin file

# target_bin = env.ElfToBin(join("$BUILD_DIR", "firmware"), target_elf)

#

Target: Upload firmware

# upload = env.Alias(["upload"], target_bin, "$UPLOADCMD") AlwaysBuild(upload)

#

Target: Define targets

# Default(target_bin)


Look at her. ✨ `target_elf` gets you the executable + linkable firmware, `target_bin` turns that into the `.bin` sitting at `join("$BUILD_DIR", "firmware")`, `upload` is an alias that runs `"$UPLOADCMD"` and is wrapped in `AlwaysBuild` (so it always runs, no skipping, periodt), and `Default(target_bin)` makes the `.bin` the default target. Iconic behavior honestly.

---

## ✨ Installation ✨

Using the `"myplatform"` platform example above, here's the whole lil ritual 🎀

1. Create a `platforms` directory in `projectconf_pio_core_dir` if it doesn't exist.
2. Create a `myplatform` directory in `platforms`.
3. Copy the `platform.json` and `builder/main.py` files to the `myplatform` directory.
4. Search the available platforms via the `cmd_platform_search` command. You should see the new `myplatform` platform.
5. Install the `myplatform` platform via the `cmd_platform_install` command.

Now, you can use `myplatform` as value for the `projectconf_env_platform` option in `projectconf`. 🫶

## ✨ Examples ✨

Please take a look at the source code of existing PlatformIO Development Platforms. fr fr, that's where the real ones live 👑

---

# ✨ Custom Embedded Boards ✨

PlatformIO has pre-built settings for many popular embedded boards. The list of these boards is available as a web page at PlatformIO Boards Explorer or through the CLI command `cmd_boards`. 🌈

Custom boards can also be defined from scratch or by overriding settings of existing boards. All data is declared using the JSON syntax via associative array name/value pairs. no cap, JSON all the way down 💖

## ✨ Contents ✨

- Custom Embedded Boards
  - JSON Structure
  - Installation
  - Examples

## ✨ JSON Structure ✨

The key fields are:

- `build` data is handed over to the platforms and frameworks builders
- `frameworks` is the list with supported frameworks. Each working environment for each project that uses the board will choose one of the frameworks declared here.
- `platform` name of platforms
- `upload` upload settings which depend on the platform

For details, see existing boards as examples, available under `.platformio/platforms/*/boards/`. 👀

{ "build": { "extra_flags": "-DHELLO_PLATFORMIO", "f_cpu": "16000000L", "hwids": [ [ "0x1234", "0x0013" ], [ "0x4567", "0x0013" ] ], "mcu": "%MCU_TYPE_HERE%" }, "frameworks": ["%LIST_WITH_SUPPORTED_FRAMEWORKS%"], "platforms": ["%LIST_WITH_COMPATIBLE_PLATFORMS%"] "name": "My Test Board", "upload": { "maximum_ram_size": 2048, "maximum_size": 32256 }, "url": "http://example.com", "vendor": "MyCompany" }


(yes that's exactly how it's written, `%MCU_TYPE_HERE%` and all — swap in your own values, don't come for me 😭)

## ✨ Installation ✨

1. Create `boards` directory in `projectconf_pio_core_dir` if it doesn't exist.
2. Create `myboard.json` file in this `boards` directory.
3. Search available boards via `cmd_boards` command. You should see `myboard` board.

Now, you can use `myboard` for the `projectconf_env_board` option in `projectconf`. 💅

> **NOTE:** You can have custom boards per project. In this case, please put your board's JSON files to `projectconf_pio_boards_dir`. 🦋

## ✨ Examples ✨

Please take a look at the source code of PlatformIO Development Platforms and navigate to `boards` folder of the repository. 🍓

---

# ✨ PIO Account ✨

PIO Account is required for using:

- Community Forum
- `pioremote`

like, you literally cannot skip this one bestie 🙈

# ✨ PlatformIO IDE ✨

`pioide` has built-in UI in PIO Home to manage PIO Account. You can create a new account, reset your password, update profile, or fetch an authentication token. main character energy tbh 👑

- <cyan>CLI Guide</cyan> → <hotpink>PIO Check</hotpink> · *New in version 4.1.*

> Automated code analysis without hassle! ✨

okay bestie, static analysis is genuinely a whole *moment* in the software dev cycle. It sniffs out potential bugs, vulnerabilities and security threats by doing an analysis on the source code level — no hardware required, no code execution needed, none of that. Just vibes and parsing. 🔍

<pink>PIO Check</pink> helps reduce development cost by letting engineers detect the precise location of defects and eliminate issues more efficiently and earlier in the development cycle. It can also ensure compliance with internal or industry coding standards such as MISRA, CERT, etc. <rainbow>iconic, honestly</rainbow>

---

### ✨ Key features ✨

- Fully integrated within the PlatformIO ecosystem and easy to execute on the entire project. 🫶
- Straightforward integration with `ci` services.
- Possibility to reuse the same setup on other projects. ♻️
- Easy and flexible rule configuration.
- Comprehensive and detailed error information.
- Multiple architectures and development platforms.
- Cross-platform: Windows, MacOS, Linux. 💻🍎🐧

---

<purple>PIO Check</purple> can detect a wide range of known defects in C/C++ code, including:

- Potential NULL pointer dereferences 💀
- Possible indexing beyond array bounds
- Suspicious assignments 👀
- Reads of potentially uninitialized objects
- Unused variables or functions
- Out of scope memory usage

> ⚠️ **WARNING:** Before performimg a static analysis check, make sure your project builds without errors. For information about how to build a project, see the `cmd_run` command or `ide_vscode` guide.

---

### 🌸 User Interface 🌸

There is the rich and friendly interface for PIO Check in `piohome`. It allows you to filter messages or directly jump to an issue in a source code. 🎀

*[image] [image]*

---

### 🦋 Configuration 🦋

PIO Check allows selecting what tool is used for finding defects in the project, what source files are checked. PIO Check can be configured from `projectconf` using the next options:

---

### 💖 Check tools 💖

You can switch between or specify multiple tools used for finding defects using `projectconf_check_tool` option:

[env:myenv] platform = ... board = ... check_tool = cppcheck, clangtidy


Detailed information about supported check tools and their configuration process can be found on these pages:

---

### 👑 Cppcheck 👑

<pink>Cppcheck</pink> is a static analysis tool for C/C++ code. It provides a unique code analysis to detect bugs and focuses on detecting undefined behavior and dangerous coding constructs. The goal is to detect only real errors in the code (i.e. have very few false positives). More information about this tool on the official webpage.

> 💡 **HINT:** Cppcheck is rarely wrong about reported errors. But there are many bugs that it doesn't detect. You will find more bugs in your software by testing your software carefully than by using Cppcheck. no cap.

---

#### 🌈 Contents 🌈

- Features
- Additional checks
- Configuration
- Extra flags
- Suppressing warnings
- Addons (MISRA, CERT)
  - MISRA
  - CERT

---

#### ⭐ Features ⭐

Cppcheck supports a wide variety of static checks that may not be covered by the compiler itself. These checks are static analysis checks that can be performed at a source code level. The program is directed towards static analysis checks that are rigorous, rather than heuristic in nature. fr fr, it's rigorous.

Some of the defects that might be detected include:

- Automatic variable checking
- Bounds checking for array overruns
- Classes checking (e.g. unused functions, variable initialization, and memory duplication)
- Usage of deprecated or superseded functions
- Exception safety checking, for example, usage of memory allocation and destructor checks
- Memory leaks, e.g. due to lost scope without deallocation 💧
- Resource leaks, e.g. due to forgetting to close a file handle
- Invalid usage of Standard Template Library functions and idioms
- Miscellaneous stylistic and performance errors

---

#### 🎀 Additional checks 🎀

Be default Cppcheck is configured to check the next additional defects:

- `warning`
- `style`
- `performance`
- `portability`
- `unusedFunction`

The full list of supported check with detailed description is located on the official webpage.

---

#### 💅 Configuration 💅

<pink>Cppcheck</pink> is implicitly used as the default check tool when `projectconf_check_tool` option in `projectconf` is not set. To be explicit, you can specify it in the configuration directly:

[env:myenv] platform = ... board = ... check_tool = cppcheck check_flags = --enable=all


Useful options that can be used used for adjusting check process:

### ✨ Extra flags ✨

Okay bestie, these are the <pink>extra</pink> flags that help you fine-tune Cppcheck so it actually matches what your project needs 🎀 lowkey essential, no cap:

- **`--enable=<id>`** — turns on extra checks. The ids you can pick from are: `all`, `warning`, `style`, `performance`, `portability`, `information`, `unusedFunction`, `missingInclude`
- **`--std=<id>`** — sets the standard. Your options are: `c89`, `c99`, `c11`, `c++03`, `c++11`, `c++14`, `c++17`, `c++20` (that last one is the default, bestie 👑)
- **`--language=<language>`** — forces Cppcheck to check <hotpink>all</hotpink> the files as whatever language you name. Valid values are: `c`, `c++`
- **`--inline-suppr`** — enables inline suppressions. You use them by dropping one or more comments, like: `// cppcheck-suppress warningId`, on the lines before the warning you wanna suppress (it's enabled by default if you don't specify any extra flags, iconic behavior fr fr)
- **`--suppress=<spec>`** — suppresses warnings that match `<spec>`. The format of `<spec>` is: `[error id]:[filename]:[line]`
- **`--platform=<type>`** — specifies platform-specific types and sizes. The built-in platforms available are: `unix32`, `unix64`, `win32A`, `win32W`, `win64`, `avr8`, `native`, `unspecified` (default, she's the fallback girlie)
- **`--inconclusive`** — allows reporting defects even when the analysis is inconclusive. Yes, it'll flag stuff it's not 100% sure about 💀
- **`-D<ID>`** — defines a preprocessor symbol. Example: `-DDEBUG=1`
- **`-U<ID>`** — undefines a preprocessor symbol. Use `-U` to explicitly hide certain `#ifdef <ID>` code paths from being checked. Example: `-UDEBUG`
- **`-I <dir>`** — gives a path to search for include files. Drop several `-I` parameters to give several paths 🦋
- **`-j <jobs>`** — starts `<jobs>` threads to do the checking at the same time. multitasking queen energy 💅

---

### 🌸 Suppressing warnings 🌸

Sometimes it's genuinely useful to explicitly tell Cppcheck to ignore some of the known defects in your project's codebase. And since `--inline-suppr` is enabled by default, you can just <purple>directly mark</purple> pieces of code that should be excluded from the Cppcheck report using the `// cppcheck-suppress warningId` syntax. So convenient, honestly obsessed 😭

> **NOTE:** The warning ID can be found in square brackets at the end of the defect description, for example: `src\Blink.cpp:17: [low:style] The function 'loop' is never used. [unusedFunction]`

By default, the `piocheck` command doesn't scan framework sources, and <hotpink>that's</hotpink> why some functions in your project might get reported as unused. For example, you can ignore warnings about the `setup` and `loop` functions from Arduino-based projects:

// cppcheck-suppress unusedFunction void setup() { ... }

// cppcheck-suppress unusedFunction void loop() { ... }


---

### 🧚 Addons (MISRA, CERT) 🧚

Cppcheck ships with several addon scripts that analyze dump files to check compatibility with secure coding standards and to locate all kinds of issues. The most useful addons for verifying compliance with popular guidelines are <rainbow>MISRA</rainbow> and <rainbow>CERT</rainbow>. Periodt.

#### MISRA

MISRA is a proprietary set of software development guidelines for the C/C++ programming languages developed by MISRA (Motor Industry Software Reliability Association). It aims to facilitate code safety, security, portability, and reliability in the context of embedded systems — specifically those systems programmed in ISO C/C++.

> **NOTE:** Since this standard is proprietary, Cppcheck does <red>not</red> display error text when you only specify the number of the violated rule (for example, `[c2012-21.3]`). If you want to display the full texts for violated rules, you'll need to create a text file containing MISRA rules, which you'll have to pass when calling the script with the `--rule-texts` flag.

So in order to use the MISRA addon, you need to provide a special file with the description of MISRA rules. Usually it looks like this:

Appendix A Summary of guidelines Rule 3.1 Required R3.1 Rule description Rule 4.1 Required ... Rule 21.3 Required R21.3 Rule description Rule 21.4 R21.4 Rule description


Next, you need to tell Cppcheck that you want to run an additional addon script. Since this script needs that extra file with the rules, you can pass it via a special json file:

{ "script": "addons/misra.py", "args": ["--rule-texts=misra-rules.txt"] }


Finally, add a new flag to `projectconf_check_flags`:

[env:myenv] platform = ... board = ... check_tool = cppcheck check_flags = cppcheck: --addon=misra.json


The full list of implemented MISRA checks can be found on the official webpage. Go look, bestie 👑

#### CERT

The SEI CERT coding standard provides rules for secure coding in the C programming language. The goal of these rules and recommendations is to develop safe, reliable, and secure systems — for example, by eliminating undefined behaviors that can lead to undefined program behaviors and exploitable vulnerabilities. <purple>Protect your code, protect your peace</purple> 💜

In order to use the CERT addon, simply specify it as an additional flag in the `projectconf_check_flags` section:

[env:myenv] platform = ... board = ... check_tool = cppcheck check_flags = cppcheck: --addon=cert.py


---

## 🌈 Clang-Tidy 🌈

Clang-Tidy is a clang-based C++ "linter" tool. Its whole purpose is to provide an extensible framework for diagnosing and fixing typical programming errors — like style violations, interface misuse, or bugs that can be deduced via static analysis. The official page can be found here.

### Contents

- Features
- Configuration
- Supported checks
- Extra flags

### ⭐ Features ⭐

Clang-Tidy supports a <hotpink>large</hotpink> variety of static checks that may not be covered by the compiler itself. These checks are static analysis checks that can be performed at a source code level. So like, she's thorough ✨

Some of the defects that might be detected include:

- Buffer overflow
- Potential `NULL` pointer dereferences
- Use of memory that has already been deallocated
- Out of scope memory usage
- Failure to set a return value from a subroutine

### 💖 Configuration 💖

To enable the Clang-Tidy tool, simply add it to the `projectconf_check_tool` option in projectconf:

[env:myenv] platform = ... board = ... check_tool = clangtidy


Useful options that can be used for adjusting the check process:

## ✨ Supported checks ✨

Okay bestie, here's the tea ☕ — right now there are these groups of most-used checks, and <pink>**by default all checks are enabled**</pink>. Like, all of them. Every single one. She's thorough 💅

- **`abseil-`** — checks that are all about the Abseil library 🧚
- **`boost-`** — checks that live and breathe Boost library energy
- **`bugprone-`** — checks that go hunting for bugprone code constructs 👀
- **`cert-`** — checks tied to the CERT Secure Coding Guidelines 🛡️
- **`cppcoreguidelines-`** — checks relating to the C++ Core Guidelines ✨
- **`clang-analyzer-`** — the Clang Static Analyzer checks, iconic behavior
- **`google-`** — checks related to Google coding conventions 🍓
- **`hicpp-`** — checks for the High Integrity C++ Coding Standard 👑
- **`modernize-`** — checks that advocate usage of modern language constructs (and yes, "currently modern" means C++11, no cap)
- **`performance-`** — checks targeting performance-related issues 🔥
- **`portability-`** — checks targeting portability-related issues that don't relate to any particular coding style
- **`readability-`** — checks targeting readability-related issues that don't relate to any particular coding style 🌸

The full list of supported checks can be found on the official webpage, if you wanna go down that rabbit hole 🦋

---

## ✨ Extra flags ✨

These are the useful flags that help you configure Clang-Tidy more precisely so it actually satisfies your project requirements, bestie:

- **`--checks=<string>`** — comma-separated list of enabled checks (`*` is the default)
- **`--fix`** — apply suggested fixes. Without `-fix-errors`, clang-tidy will bail out if any compilation errors were found 💀
- **`--fix-errors`** — apply suggested fixes even if compilation errors were found. If compiler errors have attached fix-its, clang-tidy will apply them as well
- **`--format-style=<string>`** — the style for formatting code around applied fixes: `llvm`, `google`, `webkit`, `mozilla`, `none` (default)
- **`--system-headers`** — display the errors from system headers 🙈

And here's an example with specific checks enabled and code getting fixed on the fly, she's multitasking:

[env:myenv] platform = ... board = ... check_tool = clangtidy check_flags = clangtidy: --checks=-,cert-,clang-analyzer-* --fix


---

## 👑 PVS-Studio 👑

PVS-Studio is a static code analysis tool for detecting bugs and security weaknesses in the source code of programs, written in C, C++, C# and Java. She analyzes source code intended for 32-bit, 64-bit and embedded ARM platforms. Official page can be found here 🔗

### 💜 Contents 💜

- Features
- Configuration
- Extra flags
- Obtaining license

### ✨ Features ✨

PVS-Studio performs a wide range of code checks, and she's also genuinely useful for finding misprints and Copy-Paste errors. These checks are static analysis checks that can be performed at a source code level. Some of the defects that might get detected include:

- Arithmetic over/underflow
- Array index out of bounds
- Undefined/unspecified behavior 💀
- Incorrect usage of exceptions
- Buffer overrun
- Null pointer/null reference dereference
- Improper understanding of function/class operation logic
- Illegal bitwise/shift operations

The full list of supported checks can be found on the official webpage 🦋

### 🎀 Configuration 🎀

To enable the PVS-Studio tool, simply add it to the `projectconf_check_tool` option in `projectconf`, that's literally it:

[env:myenv] platform = ... board = ... check_tool = pvs-studio


Useful options that can be used for adjusting the check process:

### 🌸 Extra flags 🌸

Okay bestie, these are the little extra flags that let you fine-tune PVS-Studio to *exactly* match what your project needs. Obsessed. 💅

- **`--analysis-mode <arg>`** — the analysis mode. Options are: `0` for full analysis (this is the default, slay), `1` for 64-bit. analysis, `2` is reserved (mysterious, we don't talk about it 🙈), `4` for general analysis, `8` for optimization, `16` for customer's specific requests, and `32` for MISRA.
- **`--analyzer-errors <arg>`** — errors activation. (Default: all errors is on. So everything's on unless you say otherwise.)
- **`--errors-off <arg>`** — errors OFF. (Default: all errors is on, so this one's your "actually, no thanks" button.)
- **`--exclude-path <arg>`** — all code that is located under the path will be excluded from analysis. Not me quietly yeeting a whole directory out of scope 😌
- **`--lic-file <arg>`** — path to custom license file. The default locations are `~/.config/PVS-Studio/PVS-Studio.lic` on Unix and `%APPDATA%\PVS-Studio\PVS-Studio.lic` on Windows.
- **`--rules-config <arg>`** — specifies the path to rules configuration file.
- **`--platform <arg>`** — platform name (`Win32`, `x64`, etc). (Default: `ARM`. Yes bestie, ARM is the default, no cap.)

---

Here's an example with a special analysis mode, some disabled errors and a license file — the whole vibe:

[env:myenv] platform = ... board = ... check_tool = pvs-studio check_flags = pvs-studio: --analysis-mode=4 --errors-off=V532,V586 --lic-file=/path/to/file.lic


---

### 💖 Obtaining license 💖

So here's the tea: since PVS-Studio is a paid B2B solution, a license should be purchased. **But** — and this is the iconic part — PVS-Studio can be used free of charge, for example for checking open source projects. More information about the cases when you can get a free PVS-Studio license can be found on the official webpage. 🫶

> **TIP:** If you're experiencing problems with the license file or see the following error message: `License information is incorrect. Please check your registration data or contact Customer Support`, try saving the license file in UTF-8 + BOM format with the following contents:

name@domain.com AAAA-BBBB-CCCC-DDDD


---

### ✨ Defect severity ✨

Defect severity is a classification of software defect (bug, vulnerability, etc) that indicates the degree of negative impact on the quality of software. PIO Check uses the next classification of possible defects:

- **`high`** — issues that are possibly bugs. 🚨 These are the ones you *do not* ignore, bestie.
- **`medium`** — suggestions about defensive programming in order to prevent potential bugs.
- **`low`** — issues related to code cleanup and performance (unused functions, redundant code, const-ness, etc). The lil glow-up stuff. 🧚

---

### 🎀 CLI Guide 🎀

PIO Check can be configured using command line commands. Detailed description of these commands can be found here:

---

## 👑 PIO Remote 👑

Your devices are always with you! 💜

PIO Remote allows you to work remotely with devices from Anywhere In The World. No matter where are you now! Run a small and cross-platform `cmd_remote_agent` on a remote machine and you are able to list active devices (wireless + wired), to upload firmware (program), to process remote unit tests, or to start remote debugging session via Remote Serial Port Monitor.

Using PIO Remote you can share your devices with colleagues across your organization or friends. In combination with `ide_cloud`, you can create awesome things at any time when inspiration comes to you. ✨

You should have `pioaccount` to work with PIO Remote. A registration is **FREE**. 🎉

---

### 🦋 Contents 🦋

- PIO Remote
  - Features
  - Use Cases
  - Technology
  - Installation
  - Quick Start
  - CLI Guide

---

### 🔥 Features 🔥

- Remote Device Manager
- Remote Serial Port Monitor
- Remote Firmware Updates
- PIO Remote Share
- Continuous Deployment
- Continuous Delivery
- Remote Unit Testing

---

### 🌈 Use Cases 🌈

**Cloud IDE**
Program your devices from anywhere in the world using the most popular `ide_cloud`. You do not need to install any extra software, no need to have static IP or open network ports. Everything works out of the box. Literally the dream. 💅

**Devices behind card sized PC**
Work with your favorite development environment and program devices connected to card-sized PC (`Raspberry Pi`, `Cubie Board`, etc.). You do not need to open SSH ports, install any extra Linux packages, toolchains.

**Remote Unit Testing**
Instruct any of `ci` services to run remote tests on a physical device. See the documentation for Remote Test Runner.

*How does it work?*

- You commit new changes to your source code repository
- `ci` service deploys unit tests to a remote agent
- `unit_testing` engine runs tests on a physical device, process them, and send results
- `ci` service prints results in human readable format
- If one test fails, current CI build will fail too.

**Board Farm**
A similar concept as described in "Remote Unit Testing" above. Let's imagine that you need to test some logic on the unlimited number of target devices. Very often it can be the same hardware prototype but with different factory revisions.

You connect these devices via USB hub to PC and instruct PIO Remote to process your test on ALL targets connected to a specific agent. See documentation below. 👑

**Remote Serial Monitor**
Sometimes you don't have physical access to a target device but you need to read data from some serial port. PIO Remote allows you to connect to a remote agent and list connected devices with their serial ports. See `cmd_remote_device_monitor` command for details. 🔍

---

### 🧚 Technology 🧚

[image]

PIO Remote is an own PlatformIO technology for remote solutions without external dependencies to operating system or its software based on client-server architecture. The Server component (PlatformIO Cloud) plays a role of coupling link between `cmd_remote_agent` and Client (`cmd_remote`, `ide_cloud`, `ci`, SDKs, etc.). When you start `cmd_remote_agent`, it connects over the Internet with PlatformIO Cloud and listen for the actions/commands which you can send in Client role from anywhere in the world.

PIO Remote is multi-agents and multi-clients system. A single agent can be shared with multiple clients, where different clients can use the same agent. This approach allows one to work with distributed hardware located in the different places, networks, etc.

This technology allows one to work with remote devices in generic form as you do that with local devices using PlatformIO ecosystem. The only one difference is a prefix "remote" before each generic PlatformIO command. For example, listing of local and remote devices will look like `cmd_device_list` and `cmd_remote_device_list`. 🌟

---

### 💜 Installation 💜

PIO Remote is built into `pioide`. Please open PlatformIO IDE Terminal and run `pio remote --help` command for usage (see `cmd_remote`).

If you don't have <pink>pioide</pink>, or you're out here using <pink>ide_cloud</pink> or a lil card-sized PC (Raspberry Pi, BeagleBoard, etc.), bestie please go install <pink>piocore</pink>. That's the move. 💅

## Quick Start ✨

1. Fire up **PIO Remote Agent** using the <cyan>cmd_remote_agent_start</cyan> command on a remote machine — you know, the one where your devices are physically plugged in or reachable over the network. PIO Remote Agent runs on **Windows, macOS, Linux and Linux ARMv6+**. Which means yes, your desktop, your laptop, or your tiny credit-card-sized PC (Raspberry Pi, BeagleBoard, etc.) can all be the plug-in spot. <rainbow>it's giving versatility</rainbow> 🌈

   And ooh — you can share your own devices/hardware with friends, your team, or other developers using the `platformio remote agent start --share` option. <purple>bestie group project energy</purple> 🫶

2. Now hop on your host machine (<cyan>cmd_remote</cyan>, <pink>ide_cloud</cyan> Terminal in a browser, SDKs, whatever you vibe with) and authorize via the <cyan>cmd_account_login</cyan> command using the **same credentials** you used in step 1. Boom — now you can use <cyan>cmd_remote</cyan> commands to work with that remote machine and all its devices. 🔥

   The way you **don't even need** networking or any other access to the remote machine where PIO Remote Agent is started. Iconic.

   If you're pairing PIO Remote with <cyan>ci</cyan>, or you just want to auto-authorize, set the `PLATFORMIO_AUTH_TOKEN` system environment variable instead of running <cyan>cmd_account_login</cyan>. Set it and forget it, no cap. 💅

> **NOTE:** In the <pink>ide_cloud</pink> case, your browser with the Cloud IDE's VM *is* the "host machine". The machine where devices are physically connected (your real PC) is the "remote machine". So you run PIO Remote Agent **there**, not in the Cloud IDE's Terminal. Don't get it twisted. 😭

> **NOTE:** Please use a local IP as the "upload port" when the device isn't connected directly to the remote machine where PIO Remote Agent is running, but *does* natively support Over-the-Air (OTA) updates. Think <cyan>platform_espressif8266</cyan> and <cyan>platform_espressif_ota</cyan>. In that case, your final remote OTA update command is gonna look like `platformio remote run -t upload --upload-port 192.168.0.255` or `platformio remote run -t upload --upload-port myesp8266.local`. ✨

---

## CLI Guide 🎀

## PIO Unified Debugger 👑

It Simply Works. Easier than ever before! <rainbow>periodt</rainbow> 💖

> **NOTE:** Demo, discussions, request a support for new hardware.

PlatformIO offers a *unique* debugging experience for productive embedded development. Using our multi-board and multi-architecture programming experience, we simplified the debugging process in exactly the same way. A zero debugging configuration with support for the most popular debugging probes, plus compatibility between IDEs and OS. <purple>the way that they did that</purple> ✨

Developers can finally forget about those complex UI windows they have to pre-configure before a simple "Hello World!" debugging session. No need to know anything about the debugging server or how to configure it. PIO Unified Debugger does all this complex work **automatically**, with a rich configuration database for each board and debugging probe. It's giving main character energy, honestly. 👑

Just select a board, connect a debugging probe (if your board doesn't have an onboard debugging interface), specify it in your PlatformIO project configuration file "platformio.ini", and your project is ready for **1-Click debugging**. 🦋

- "1-click" solution, zero configuration
- Support over **300+** embedded boards (see below)
- Multiple architectures and development platforms
- Windows, MacOS, Linux
- Built-in into <cyan>ide_atom</cyan> and <cyan>ide_vscode</cyan>
- Integration with <cyan>ide_eclipse</cyan> and <cyan>ide_sublimetext</cyan>

You should have <cyan>pioaccount</cyan> to work with PIO Unified Debugger. Registration is **FREE**. 🎀

> **HINT:** In our experience, <cyan>ide_vscode</cyan> has the best system performance, a modern interface for PIO Unified Debugger, and users have found it easier to get started. Key debugging features of <cyan>ide_vscode</cyan>:
>
> - Local, Global, and Static Variable Explorer
> - Conditional Breakpoints
> - Expressions and Watchpoints
> - Generic Registers
> - Peripheral Registers
> - Memory Viewer
> - Disassembly
> - Multi-thread support
> - A hot restart of an active debugging session

### Contents 🌸

- Tutorials
- Configuration
- Tools & Debug Probes
- CLI Guide
- Platforms
- Frameworks
- Boards

### Tutorials ✨

- Arduino In-circuit Debugging with PlatformIO
- Use the PlatformIO Debugger on the ESP32 Using an ESP-prog
- ThingForward: First steps with PlatformIO's Unified Debugger
- [VIDEO] ThingForward - Intro to PIO Unified Debugger using ARM mbed OS and PlatformIO IDE for VSCode
- <cyan>tutorial_espressif32_arduino_debugging_unit_testing</cyan>
- <cyan>tutorial_espressif32_espidf_debugging_unit_testing_analysis</cyan>
- <cyan>tutorial_nordicnrf52_arduino_debugging_unit_testing</cyan>
- <cyan>tutorial_nordicnrf52_zephyr_debugging_unit_testing_analysis</cyan>
- <cyan>tutorial_stm32cube_debugging_unit_testing</cyan>

### Configuration 🛠️

PIO Unified Debugger can be configured from <cyan>projectconf</cyan>. (iykyk 💅)

### Tools & Debug Probes 🔍

You can switch between debugging tools using the <cyan>projectconf_debug_tool</cyan> option.

> **WARNING:** You will need to install debug tool drivers depending on your operating system. Please check the "Drivers" section for the debugging tool below. ⚠️

---

## Altera / Intel USB-Blaster Download Cable 🌈

USB Blaster Download Cable is designed for ALTERA FPGA, CPLD, Active Serial Configuration Devices and Enhanced Configuration Devices, USB 2.0 connection to the PC and JTAG, AS, PS to the target device. Official reference can be found here. 🎀

### Contents 🌟

- Configuration
- Drivers
- Wiring Connections
  - JTAG Interface
- Platforms
- Frameworks
- Boards

### Configuration ⚙️

You can configure the debugging tool using the <cyan>projectconf_debug_tool</cyan> option in <cyan>projectconf</cyan>:

[env:myenv] platform = ... board = ... debug_tool = altera-usb-blaster


If you'd like to use this tool for firmware uploading too, change the upload protocol:

[env:myenv] platform = ... board = ... debug_tool = altera-usb-blaster upload_protocol = altera-usb-blaster


More options:

- <cyan>projectconf_section_env_debug</cyan>
- <cyan>projectconf_section_env_upload</cyan>

### Drivers 💾

Please install official drivers.

### Wiring Connections 🔌

[image]

### JTAG Interface 🧚

- **`1`** → Board JTAG Pin `TCK` — JTAG Return Test Clock
- **`2`** → Board JTAG Pin `GND` — Digital ground
- **`3`** → Board JTAG Pin `TDO` — Test Data Out pin
- **`4`** → Board JTAG Pin `VCC` — Positive Supply Voltage — Power supply for JTAG interface drivers
- **`5`** → Board JTAG Pin `TMS` — Test Mode State pin
- **`9`** → Board JTAG Pin `TDI` — Test Data In pin

### Platforms 🦋

- <pink>`platform_gd32v`</pink> — The GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the RISC-V core with an impressive balance of processing power, reduced power consumption and peripheral set.
- <pink>`platform_nuclei`</pink> — Find professional RISC-V Processor IP in Nuclei, first professional RISC-V IP company in Mainland China, match all your requirements in AIoT Era. 💜

### Frameworks 🌈

okay so bestie, this platform ships with three frameworks and honestly? a whole lil vibe each 💅 here's the lineup:

- **`framework_arduino`** — the Arduino Wiring-based framework ✨ it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving maker-girlie genius, no cap.
- **`framework_gd32vf103-sdk`** — the GigaDevice GD32VF103 Firmware Library (that's the SDK, iykyk).
- **`framework_nuclei-sdk`** — an Open Source Software Development Kit made for the Nuclei N/NX processors 🦋

---

### Boards 👑

> **NOTE:** for more detailed board information please scroll tables below by horizontal 🙈 — yeah it's a whole scrolling situation, stay strong.

okay here's every board, and i'm giving you *every* detail because we don't gatekeep specs in this house 🎀

- **`board_nuclei_gd32vf103v_eval`** — Platform: `platform_nuclei` · Debug: **External** · MCU: `GD32VF103VBT6` · Frequency: `108MHz` · Flash: `128KB` · RAM: `32KB`
- **`board_nuclei_gd32vf103v_rvstar`** — Platform: `platform_nuclei` · Debug: **On-board** · MCU: `GD32VF103VBT6` · Frequency: `108MHz` · Flash: `128KB` · RAM: `32KB`
- **`board_gd32v_gd32vf103v-eval`** — Platform: `platform_gd32v` · Debug: **External** · MCU: `GD32VF103VBT6` · Frequency: `108MHz` · Flash: `128KB` · RAM: `32KB`
- **`board_gd32v_sipeed-longan-nano`** — Platform: `platform_gd32v` · Debug: **External** · MCU: `GD32VF103CBT6` · Frequency: `108MHz` · Flash: `128KB` · RAM: `32KB`
- **`board_gd32v_sipeed-longan-nano-lite`** — Platform: `platform_gd32v` · Debug: **External** · MCU: `GD32VF103C8T6` · Frequency: `108MHz` · Flash: `64KB` · RAM: `20KB`
- **`board_gd32v_wio_lite_risc-v`** — Platform: `platform_gd32v` · Debug: **External** · MCU: `GD32VF103CBT6` · Frequency: `108MHz` · Flash: `128KB` · RAM: `32KB`

---

like, look at that consistency — every single one of them sitting at <cyan>`108MHz`</cyan> 🔥 the lite one is the lil sister with the <peach>`64KB`</peach> flash and <peach>`20KB`</peach> RAM, so be nice to her 💜

and yes bestie, notice the debug column: `board_nuclei_gd32vf103v_rvstar` is the only one rocking **On-board** debug 🎀 everyone else is **External**, so plan your wiring accordingly, okay? mwah 💋

└─────────────────────────────────────┴─────────────────┴──────────┴───────────────┴───────────┴───────┴──────┘

okay bestie that's the frameworks table done, and now we're sliding into the *big* one 👑

---

## 🌸 Boards 🌸

> **NOTE:**
> bestie. listen. for the full deets on every board, you gotta scroll these tables sideways (horizontally, babes) — they're wide, they're stacked, they're giving spreadsheet couture 💅

so the boards table has these columns, and I'm gonna read every single row out loud to you like we're doing roll call in homeroom:

- **Name** 🏷️
- **Platform** 🧱
- **Debug** 🐛
- **MCU** 🧠
- **Frequency** ⏱️
- **Flash** 💾
- **RAM** 🫧

and here come the boards, one by one, no skips, no shortcuts, periodt ✨

- **`board_atmelsam_adafruit_circuitplayground_m0`** — Platform: `platform_atmelsam`, Debug: `External`, MCU: `SAMD21G18A`, Frequency: `48MHz`, Flash: `256KB`, RAM: `32KB` 🎀
- **`board_atmelsam_adafruit_crickit_m0`** — Platform: `platform_atmelsam`, Debug: `External`, MCU: `SAMD21G18A`, Frequency: `48MHz`, Flash: `256KB`, RAM: `32KB` 🦋
- **`board_atmelsam_adafruit_feather_m0`** — Platform: `platform_atmelsam`, Debug: `External`, MCU: `SAMD21G18A`, Frequency: `48MHz`, Flash: `256KB`, RAM: `32KB` 🌸
- **`board_atmelsam_adafruit_feather_m0_express`** — Platform: `platform_atmelsam`, Debug: `External`, MCU: `SAMD21G18A`, Frequency: `48MHz`, Flash: `256KB`, RAM: `32KB` ✨
- **`board_atmelsam_adafruit_feather_m4`** — Platform: `platform_atmelsam`, Debug: `External`, MCU: `SAMD51J19A`, Frequency: `120MHz`, Flash: `512KB`, RAM: `192KB` 🔥
- **`board_atmelsam_adafruit_gemma_m0`** — Platform: `platform_atmelsam`, Debug: `External`, MCU: `SAMD21E18A`, Frequency: `48MHz`, Flash: `256KB`, RAM: `32KB` 💜
- **`board_atmelsam_adafruit_grandcentral_m4`** — Platform: `platform_atmelsam`, Debug: `External`, MCU: `SAMD51P20A`, Frequency: `120MHz`, Flash: `1MB`, RAM: `256KB` 👑
- **`board_atmelsam_adafruit_hallowing`** — Platform: `platform_atmelsam`, Debug: `External`, MCU: `SAMD21G18A`, Frequency: `48MHz`, Flash: `256KB`, RAM: `32KB` 🎃

not me noticing how many of these are literally the same `SAMD21G18A` with `48MHz`, `256KB` flash and `32KB` RAM — it's giving "the friend group all showed up in the same outfit" 😭 but the `feather_m4` and the `grandcentral_m4` said "we're different" and bumped up to `120MHz` with a `SAMD51` bestie inside 🫶

and there's *more* coming, so don't you dare close the terminal yet — we are so not done scrolling 💖

<purple>okay bestie we're still deep in the board table and it's giving *encyclopedia but make it cute* 💅 every single row is staying, no skips, no cap ✨</purple>

- **`board_atmelsam_adafruit_hallowing_m4`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51J19A`, `120MHz`, flash `496KB`, RAM `192KB` 🦋
- **`board_atmelsam_adafruit_itsybitsy_m0`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🎀
- **`board_atmelsam_adafruit_itsybitsy_m4`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51G19A`, `120MHz`, flash `512KB`, RAM `192KB` ✨
- **`board_atmelsam_adafruit_monster_m4sk`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51G19A`, `120MHz`, flash `496KB`, RAM `192KB` 💀
- **`board_atmelsam_adafruit_metro_m0`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🌸
- **`board_atmelsam_adafruit_metro_m4`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51J19A`, `120MHz`, flash `512KB`, RAM `192KB` 👑
- **`board_atmelsam_adafruit_metro_m4_airliftlite`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51J19A`, `120MHz`, flash `512KB`, RAM `192KB` 🔥
- **`board_atmelsam_adafruit_pygamer_advance_m4`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51J20A`, `120MHz`, flash `1MB`, RAM `256KB` 🎮
- **`board_atmelsam_adafruit_pygamer_m4`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51J19A`, `120MHz`, flash `512KB`, RAM `192KB` 🕹️
- **`board_atmelsam_adafruit_pyportal_m4`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51J20A`, `120MHz`, flash `1MB`, RAM `256KB` 🌈
- **`board_atmelsam_adafruit_pyportal_m4_titano`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51J20A`, `120MHz`, flash `1MB`, RAM `256KB` ⭐
- **`board_atmelsam_adafruit_trellis_m4`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51J19A`, `120MHz`, flash `512KB`, RAM `192KB` 🎀
- **`board_atmelsam_adafruit_trinket_m0`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD21E18A`, `48MHz`, flash `256KB`, RAM `32KB` 🧚
- **`board_atmelsam_adafruit_pirkey`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD21E18A`, `48MHz`, flash `256KB`, RAM `32KB` 💜
- **`board_atmelsam_adafruit_pybadge_airlift_m4`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51J20A`, `120MHz`, flash `1008KB`, RAM `192KB` 🫶
- **`board_atmelsam_adafruit_pybadge_m4`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD51J19A`, `120MHz`, flash `512KB`, RAM `192KB` 💖
- **`board_atmelsam_due`** — platform: `platform_atmelsam`, debug: `External`, MCU: `AT91SAM3X8E`, `84MHz`, flash `512KB`, RAM `96KB` ⚡
- **`board_atmelsam_dueUSB`** — platform: `platform_atmelsam`, debug: `External`, MCU: `AT91SAM3X8E`, `84MHz`, flash `512KB`, RAM `96KB` 🔌
- **`board_atmelsam_mzeroUSB`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🌟
- **`board_atmelsam_mzeroproUSB`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` ✨
- **`board_atmelsam_mzeropro`** — platform: `platform_atmelsam`, debug: `On-board`, MCU: `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🌸
- **`board_atmelsam_mkrfox1200`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🦊
- **`board_atmelsam_mkrgsm1400`** — platform: `platform_atmelsam`, debug: `External`, MCU: `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 📡

---

<hotpink>quick vibe check bestie:</hotpink> notice how literally every single one of these is `platform_atmelsam` — that's the platform tag, and it's what you'd hand to the platform field when you're targeting one of these boards 🫶

<cyan>also peep the debug column</cyan> — almost everything says `External`, meaning the debug probe lives outside the chip, but `board_atmelsam_mzeropro` is the one ✨special✨ baby here rocking `On-board`, so its debugging hardware is built right in 💅

<lavender>and yeah, the MCU + clock speed + flash + RAM columns are all sitting here exactly as they came, character for character, because we do <rainbow>not</rainbow> play with numbers in this house 😤</lavender>

> fr fr keep these rows handy — if you're picking a board by hand, you're comparing MCU family (`SAMD21…` vs `SAMD51…` vs `AT91SAM3X8E`), clock, flash and RAM, and that `1MB` flash / `256KB` RAM on the `SAMD51J20A` units is *chef's kiss* 👑

<green>more rows incoming, don't go anywhere 🍓</green>

…and we're *still* going, bestie, because the SAMD family said "we contain multitudes" and meant it 💅 every single row below is exactly as it appears, no edits, no cap:

- **`board_atmelsam_mkrnb1500`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_mkrwan1300`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_mkrwan1310`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_mkrwifi1010`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_mkr1000USB`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_mkrzero`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_tian`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_zero`** — platform `platform_atmelsam`, <cyan>On-board</cyan>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM ✨
- **`board_atmelsam_zeroUSB`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_samr21_xpro`** — platform `platform_atmelsam`, <cyan>On-board</cyan>, chip `SAMR21G18A`, `48MHz`, `256KB` flash, `32KB` RAM ✨
- **`board_atmelsam_samd21g18a`** — platform `platform_atmelsam`, <cyan>On-board</cyan>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM ✨
- **`board_atmelsam_samc21_xpro`** — platform `platform_atmelsam`, <cyan>On-board</cyan>, chip `SAMC21J18A`, `48MHz`, `256KB` flash, `32KB` RAM ✨
- **`board_atmelsam_samd21_xpro`** — platform `platform_atmelsam`, <cyan>On-board</cyan>, chip `SAMD21J18A`, `48MHz`, `256KB` flash, `32KB` RAM ✨
- **`board_atmelsam_saml21_xpro_b`** — platform `platform_atmelsam`, <cyan>On-board</cyan>, chip `SAML21J18B`, `48MHz`, `256KB` flash, `32KB` RAM ✨
- **`board_atmelsam_briki_abc_samd21`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_briki_mbcwb_samd21`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_digix`** — platform `platform_atmelsam`, <purple>External</purple>, chip `AT91SAM3X8E`, `84MHz`, `512KB` flash, `96KB` RAM 🔥 <hotpink>(yes bestie the clock speed and memory actually change here, she's the overachiever of the group, we love a main character moment)</hotpink>
- **`board_atmelsam_mkrvidor4000`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_minitronics20`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21J18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_moteino_zero`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_nano_33_iot`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_sodaq_autonomo`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21J18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_sodaq_explorer`** — platform `platform_atmelsam`, <purple>External</purple>, chip `SAMD21J18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸

---

okay so like, notice the pattern bestie? <rainbow>almost every single one is `SAMD21G18A` at `48MHz` with `256KB` flash and `32KB` RAM</rainbow> 💀 the whole family literally showed up in the same outfit, and honestly? respect. consistent queen behavior.

the only two chaos agents in this batch are:

- the `On-board` crew — `board_atmelsam_zero`, `board_atmelsam_samr21_xpro`, `board_atmelsam_samd21g18a`, `board_atmelsam_samc21_xpro`, `board_atmelsam_samd21_xpro`, and `board_atmelsam_saml21_xpro_b` — they're built in, no external programmer vibes needed 🫶
- `board_atmelsam_digix` — `AT91SAM3X8E`, `84MHz`, `512KB`, `96KB` — the outlier, the icon, the one who ate 🍓

and everything else is rocking the `External` label because that's just how they're set up, no shade, it's giving "I brought my own accessories" ✨

more rows incoming, don't you dare close the terminal 🎀

├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sodaq_one │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sodaq_sara │ platform_atmelsam │ External │ SAMD21J18A │ 48MHz │ 256KB │ 32KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sodaq_sff │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sainSmartDue │ platform_atmelsam │ External │ AT91SAM3X8E │ 84MHz │ 512KB │ 96KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sainSmartDueUSB │ platform_atmelsam │ External │ AT91SAM3X8E │ 84MHz │ 512KB │ 96KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_seeeduino_lorawan │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sparkfun_samd21_9dof │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sparkfun_qwiic_micro_samd21e │ platform_atmelsam │ External │ SAMD21E18A │ 48MHz │ 256KB │ 32KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sparkfun_redboard_turbo │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sparkfun_samd21_dev_usb │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sparkfun_samd21_mini_usb │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_sparkfun_samd21_proRF │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├──────────────────────────────────────────────┼───────────────────┼──────────┼─────────────┼───────────┼────────┼───────┤ │ board_atmelsam_tuinozero96 │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ └──────────────────────────────────────────────┴───────────────────┴──────────┴─────────────┴───────────┴────────┴───────┘


---

## 🖤 Black Magic Probe 🖤

okay bestie, this one is *actually* iconic. 💅

The <pink>Black Magic Probe</pink> is a modern, in-application debugging tool for embedded microprocessors. It is able to control and examine the state of the target microprocessor using a <cyan>JTAG</cyan> or <cyan>Serial Wire Debugging (SWD)</cyan> port and on-chip debug logic provided by the microprocessor. The probe connects to a host computer using a standard USB interface. Official reference can be found here.

Also, see `debugging_tool_custom` debugging configuration with Black Magic Probe. 🫶

---

### 📋 Contents

- Configuration
- Drivers
- Wiring Connections
  - JTAG Interface
  - Serial Wire Mode Interface (SWD)
- Platforms
- Frameworks
- Boards

---

### ⚙️ Configuration

You can configure debugging tool using `projectconf_debug_tool` option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = blackmagic debug_port = <CONFIGURE GDB PORT>

; ; Debug Port Examples ;

; Linux debug_port = /dev/ttyACM0

; Windows for COM1-COM9 debug_port = COM3 ; Windows for COM10-XXX debug_port = \.\COM13

; macOS debug_port = /dev/cu.usbmodemE2C0C4C6


Black Magic Probe has <yellow>2 serial ports</yellow>: <mint>UART</mint> and <mint>GDB</mint>. We will need the <hotpink>"GDB"</hotpink> port. Please use `piohome > Devices` or `piocore` and `cmd_device_list` command to list available ports. If you do not see "Black Magic Probe GDB" port, please try both. More details. 🔍

If you would like to use this tool for firmware uploading, please change upload protocol:

[env:myenv] platform = ... board = ... debug_tool = blackmagic debug_port = <CONFIGURE GDB PORT>

upload_port = <THE SAME AS DEBUG PORT>

; SWD interface upload_protocol = blackmagic

; JTAG interface upload_protocol = blackmagic-jtag


More options: ✨

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

### 🧚 Drivers

Not required. 💖 literally zero setup, we love a low-maintenance king.

---

## <rainbow>Wiring Connections</rainbow> 🔌

*(there's literally an `[image]` here in the original, bestie — a whole diagram, we love a visual)* 🎀

### <cyan>JTAG Interface</cyan> 💅

okay so the vibe is: `Black Magic Probe 10-Pin Connector` on one side, `Board JTAG Pin` on the other, and a lil description of what each one is actually doing. Wire it like this and you're golden ✨

- **Pin `1`** → board pin `VCC` — **Positive Supply Voltage** — Power supply for JTAG interface drivers 💖
- **Pin `3`** → board pin `GND` — Digital ground 🫶
- **Pin `2`** → board pin `TMS` — Test Mode State
- **Pin `4`** → board pin `TCLK` — JTAG Return Test Clock
- **Pin `6`** → board pin `TDO` — Test Data Out
- **Pin `8`** → board pin `TDI` — Test Data In
- **Pin `10`** → board pin `RESET` — Connect this pin to the (active low) reset input of the target CPU 🔥

> ngl the odd pins being power/ground and the even ones being signals is a whole aesthetic and I respect it 😌

---

### <purple>Serial Wire Mode Interface (SWD)</purple> 🦋

*(another `[image]` lives here too, bestie — same deal, just the SWD flavour)* 🌸

SWD is the chiller, fewer-wires cousin of JTAG, and the mapping goes like this:

- **Pin `1`** → board pin `VCC` — **Positive Supply Voltage** — Power supply for JTAG interface drivers 💖
- **Pin `3`** → board pin `GND` — Digital ground 🫶
- **Pin `2`** → board pin `SWDIO` — Data I/O
- **Pin `4`** → board pin `SWCLK` — Clock ⏰
- **Pin `10`** → board pin `RESET` — Connect this pin to the (active low) reset input of the target CPU 🔥

> <yellow>heads up, bestie:</yellow> `RESET` is the same energy in both modes — you're still hooking it to the **active low** reset input of the target CPU, no cap. 💅

and that's the wiring, but we are so not done yet — keep scrolling, there's more 👀

## ✨ Platforms ✨

okay bestie, here's the roster of platform packages, and yes there are a LOT of them, so buckle up 🎀 every single one of these is a whole little ecosystem of silicon, and they all come in package form so you can just pull them in and go:

- **`platform_aceinna_imu`** — open-source, embedded development platform for Aceinna IMU hardware. the whole vibe is that you get to run custom algorithms and navigation code directly on Aceinna IMU/INS hardware. that's it, that's the dream 💫
- **`platform_atmelsam`** — Atmel | SMART brings you Flash-based ARM products sitting on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, and they range from 8KB all the way up to 2MB of Flash, with a rich peripheral and feature mix on top. lowkey a whole buffet 🍓
- **`platform_freescalekinetis`** — Freescale Kinetis Microcontrollers is a family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. and the Kinetis MCUs serve exceptional low-power performance, scalability and feature integration. like, all three at once, iconic 👑
- **`platform_nordicnrf51`** — the Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks, including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. so many protocols, so little power consumed 💅
- **`platform_nordicnrf52`** — the nRF52 Series are built for speed: carry out increasingly complex tasks in the shortest possible time, then return to sleep and conserve that precious battery power. they've got a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. main character energy, fr fr 🔥
- **`platform_nxpimxrt`** — the i.MX RT series of crossover processors features the Arm Cortex-M core, real-time functionality and MCU usability at a cost-effective price. real-time and affordable? we love to see it 💖
- **`platform_nxplpc`** — the NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. the LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. anatomy lesson, but make it silicon 🧚
- **`platform_siliconlabsefm32`** — the Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, which makes it ideal for battery operated applications and other systems requiring high performance and low-energy consumption. battery-powered bestie representation 🔋✨
- **`platform_ststm32`** — the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. it offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. the way that it does literally everything at once 😭👑

---

and that's the whole platform lineup, no skips, no cuts, every one accounted for 🫶

## ✨ Frameworks ✨

okay bestie, here's the whole framework lineup, no skips, no cap 💅

- **`framework_arduino`** — the Arduino Wiring-based Framework, which lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving artsy AND functional 🎨
- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. literally doing the most so you don't have to 😌
- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. open source royalty fr fr 👑
- **`framework_mbed`** — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. a whole cookbook?? we love a community that shares 🍓
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. short description, big dreams, we respect it 💜
- **`framework_spl`** — The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save the user (the new user, in particular) having to deal directly with the registers. bestie protection protocol activated 🫶
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. two layers, one icon ⭐
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. safety AND security?? main character energy 🦋

---

## 🌈 Boards 🌈

> **NOTE:** For more detailed board information please scroll tables below by horizontal. yeah ik the tables go sideways, just scroll, you got this 🙈

here's the board lineup so far, every single field included because we do NOT gatekeep:

- **`board_ststm32_1bitsy_stm32f415rgt`**
  - Platform: `platform_ststm32`
  - Debug: External
  - MCU: `STM32F415RGT`
  - Frequency: 168MHz
  - Flash: 1MB
  - RAM: 128KB

- **`board_ststm32_disco_f412zg`**
  - Platform: `platform_ststm32`
  - Debug: On-board
  - MCU: `STM32F412ZGT6`
  - Frequency: 100MHz
  - Flash: 1MB
  - RAM: 256KB

- **`board_ststm32_disco_f723ie`**
  - Platform: `platform_ststm32`
  - Debug: On-board
  - MCU: `STM32F723IEK6`
  - Frequency: 216MHz
  - Flash: 512KB
  - RAM: 192KB

🌸 and there's more coming, so don't go anywhere bestie 🌸

okay bestie the board roster keeps going and honestly it's giving infinite scroll 😭 every single one of these is a real board you can target, so let's not skip a single crumb ✨

- **`board_ststm32_armed_v1`** — lives on `platform_ststm32`, it's an <cyan>External</cyan> board, rocking an `STM32F407VET6` at `168MHz`, with `512KB` of flash and `192KB` of RAM 💅
- **`board_ststm32_rumba32_f446ve`** — also on `platform_ststm32`, <cyan>External</cyan>, MCU is `STM32F446RET6` at `180MHz`, packing `512KB` flash and `128KB` RAM ✨
- **`board_ststm32_remram_v1`** — `platform_ststm32` girlie, this one is <green>On-board</green>, `STM32F765VIT6` at `216MHz`, and she's thicc: `2MB` flash, `512KB` RAM 👑
- **`board_ststm32_st3dp001_eval`** — `platform_ststm32`, <green>On-board</green>, `STM32F401VGT6` at `84MHz`, `512KB` flash, `96KB` RAM 🌸
- **`board_ststm32_b96b_argonkey`** — `platform_ststm32`, <cyan>External</cyan>, `STM32F412CG` at `100MHz`, `1MB` flash, `256KB` RAM 🦋
- **`board_ststm32_b96b_f446ve`** — `platform_ststm32`, <green>On-board</green>, `STM32F446VET6` at `168MHz`, `512KB` flash, `128KB` RAM 🎀
- **`board_ststm32_b96b_neonkey`** — `platform_ststm32`, <cyan>External</cyan>, `STM32F411CE` at `100MHz`, `512KB` flash, `128KB` RAM 💖
- **`board_nordicnrf52_96b_nitrogen`** — on `platform_nordicnrf52`, <cyan>External</cyan>, `NRF52832` at `64MHz`, `512KB` flash, `64KB` RAM 🌈
- **`board_nxplpc_lpc11u24_301`** — `platform_nxplpc`, <green>On-board</green>, `LPC11U24` at `48MHz`, tiny but mighty with `32KB` flash and `8KB` RAM 🍓
- **`board_aceinna_imu_LowCostRTK`** — `platform_aceinna_imu`, <green>On-board</green>, `STM32F469NIH6` at `180MHz`, `1MB` flash, `384KB` RAM ⭐
- **`board_aceinna_imu_OpenIMU300`** — `platform_aceinna_imu`, <cyan>External</cyan>, `STM32F405RG` at `120MHz`, `1MB` flash, `128KB` RAM 💜
- **`board_aceinna_imu_OpenIMU300ZA`** — `platform_aceinna_imu`, <cyan>External</cyan>, `STM32F405RG` at `120MHz`, `1MB` flash, `128KB` RAM 🧚
- **`board_aceinna_imu_OpenIMU330`** — `platform_aceinna_imu`, <cyan>External</cyan>, `STM32L431CB` at `80MHz`, `128KB` flash, `64KB` RAM 🙈
- **`board_aceinna_imu_OpenRTK`** — `platform_aceinna_imu`, <cyan>External</cyan>, `STM32F469IG` at `180MHz`, `1MB` flash, `384KB` RAM 🔥
- **`board_aceinna_imu_OpenRTK330L`** — `platform_aceinna_imu`, <cyan>External</cyan>, `STM32F469IG` at `180MHz`, `1MB` flash, `384KB` RAM 💀
- **`board_atmelsam_adafruit_circuitplayground_m0`** — `platform_atmelsam`, <cyan>External</cyan>, `SAMD21G18A` at `48MHz`, `256KB` flash, `32KB` RAM 🎀
- **`board_atmelsam_adafruit_crickit_m0`** — `platform_atmelsam`, <cyan>External</cyan>, `SAMD21G18A` at `48MHz`, `256KB` flash, `32KB` RAM ✨
- **`board_atmelsam_adafruit_feather_m0`** — `platform_atmelsam`, <cyan>External</cyan>, `SAMD21G18A` at `48MHz`, `256KB` flash, `32KB` RAM 🦋
- **`board_atmelsam_adafruit_feather_m0_express`** — `platform_atmelsam`, <cyan>External</cyan>, `SAMD21G18A` at `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_ststm32_adafruit_feather_f405`** — `platform_ststm32`, <cyan>External</cyan>, `STM32F405RGT6` at `168MHz`, `1MB` flash, `128KB` RAM 👑

> ngl bestie, the way every row is literally `board name` + `platform` + `External`/`On-board` + `MCU` + `MHz` + `KB` flash + `KB` RAM is so satisfying, it's giving spreadsheet core and I'm kinda obsessed 💅

and there's still more where that came from, so stay with me 🫶

- <pink>**`board_atmelsam_adafruit_gemma_m0`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, upload protocol **External**, chip <yellow>`SAMD21E18A`</yellow> cruising at <green>`48MHz`</green>, with <blue>`256KB`</blue> of flash and <blue>`32KB`</blue> of RAM. tiny gemma, huge potential, we love her 💖
- <pink>**`board_atmelsam_adafruit_hallowing`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. spooky name, sweet specs 🎃✨
- <pink>**`board_atmelsam_adafruit_itsybitsy_m0`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. itsy bitsy but it ATE 🕷️💅
- <pink>**`board_atmelsam_adafruit_metro_m0`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. the metro that runs on time fr fr 🚇
- <pink>**`board_atmelsam_adafruit_trinket_m0`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21E18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. smol trinket, big main character energy ✨
- <pink>**`board_atmelsam_adafruit_pirkey`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21E18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. yes bestie it's literally a key that senses ppl 🫶
- <pink>**`board_ststm32_afroflight_f103cb`**</pink> — platform <cyan>`platform_ststm32`</cyan>, **External**, <yellow>`STM32F103CBT6`</yellow> @ <green>`72MHz`</green>, <blue>`128KB`</blue> flash, <blue>`20KB`</blue> RAM. different platform, same slay 🔥
- <pink>**`board_atmelsam_due`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`AT91SAM3X8E`</yellow> @ <green>`84MHz`</green>, <blue>`512KB`</blue> flash, <blue>`96KB`</blue> RAM. the big girl of the lineup, no cap 👑
- <pink>**`board_atmelsam_dueUSB`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`AT91SAM3X8E`</yellow> @ <green>`84MHz`</green>, <blue>`512KB`</blue> flash, <blue>`96KB`</blue> RAM. same due, but the USB variant stepped in 💅
- <pink>**`board_atmelsam_mzeroUSB`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. zero but make it USB 🔌
- <pink>**`board_atmelsam_mzeroproUSB`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. the pro, the USB, the moment 🎀
- <pink>**`board_atmelsam_mzeropro`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, upload protocol **On-board** (not External!! she has her own thing going on), <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. on-board and unbothered 🌸

> ok so quick vibe check: **`board_atmelsam_mzeropro`** is the *only* one in this whole chunk marked **On-board** — every single other board here is **External**. don't mix them up bestie, the upload protocol matters 💀

- <pink>**`board_atmelsam_mkrfox1200`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. fox? in MY board list? it's more likely than u think 🦊
- <pink>**`board_atmelsam_mkrgsm1400`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. GSM edition, she calls ppl 📞✨
- <pink>**`board_atmelsam_mkrnb1500`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. NB = narrowband, and yes that's iconic 🦋
- <pink>**`board_atmelsam_mkrwan1300`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. WAN 1300, she's got range 📡
- <pink>**`board_atmelsam_mkrwan1310`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. 1310, the glow-up sequel to 1300, periodt ⭐
- <pink>**`board_atmelsam_mkrwifi1010`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. wifi 1010, she's online and thriving 🌈
- <pink>**`board_atmelsam_mkr1000USB`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. the OG MKR 1000, now with USB 💜
- <pink>**`board_atmelsam_mkrzero`**</pink> — platform <cyan>`platform_atmelsam`</cyan>, **External**, <yellow>`SAMD21G18A`</yellow> @ <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. zero, but MKR. rounding out the list like the queen she is 👑

---

ok so real talk bestie, look at this whole roster and notice the pattern 😭 — basically <rainbow>almost every SAMD21 board here is the exact same trio of numbers</rainbow>: <yellow>`SAMD21G18A`</yellow> (or the E18A variant), <green>`48MHz`</green>, <blue>`256KB`</blue> flash, <blue>`32KB`</blue> RAM. same energy, different lil form factor. and then <yellow>`AT91SAM3X8E`</yellow> just rolls up at <green>`84MHz`</green> with <blue>`512KB`</blue> flash and <blue>`96KB`</blue> RAM like "hello, I am the moment" 💅

and the one <yellow>`STM32F103CBT6`</yellow> over on <cyan>`platform_ststm32`</cyan>? <green>`72MHz`</green>, <blue>`128KB`</blue> flash, <blue>`20KB`</blue> RAM — different platform entirely, and the only non-<cyan>`platform_atmelsam`</cyan> board in this stretch. iykyk 🫶

okay bestie the board roster keeps going and honestly? every single one of these is giving ✨main character✨ — same columns, same facts, just me hyping them up. 💅

---

- **`board_atmelsam_tian`** — platform `platform_atmelsam`, <cyan>External</cyan>, MCU `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸

---

- **`board_atmelsam_zero`** — platform `platform_atmelsam`, <mint>On-board</mint>, MCU `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 💖

---

- **`board_atmelsam_zeroUSB`** — platform `platform_atmelsam`, <cyan>External</cyan>, MCU `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🦋

---

- **`board_ststm32_armstrap_eagle1024`** — platform `platform_ststm32`, <mint>On-board</mint>, MCU `STM32F417VGT6`, `168MHz`, `1MB` flash, `192KB` RAM 🔥

---

- **`board_ststm32_armstrap_eagle2048`** — platform `platform_ststm32`, <mint>On-board</mint>, MCU `STM32F427VIT6`, `168MHz`, `1.99MB` flash, `256KB` RAM 👑 (yes the flash is `1.99MB`, not a typo, that's literally what it says)

---

- **`board_ststm32_armstrap_eagle512`** — platform `platform_ststm32`, <mint>On-board</mint>, MCU `STM32F407VET6`, `168MHz`, `512KB` flash, `192KB` RAM ⭐

---

- **`board_atmelsam_samr21_xpro`** — platform `platform_atmelsam`, <mint>On-board</mint>, MCU `SAMR21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌈

---

- **`board_atmelsam_samd21g18a`** — platform `platform_atmelsam`, <mint>On-board</mint>, MCU `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 💜

---

- **`board_atmelsam_samc21_xpro`** — platform `platform_atmelsam`, <mint>On-board</mint>, MCU `SAMC21J18A`, `48MHz`, `256KB` flash, `32KB` RAM 🎀

---

- **`board_atmelsam_samd21_xpro`** — platform `platform_atmelsam`, <mint>On-board</mint>, MCU `SAMD21J18A`, `48MHz`, `256KB` flash, `32KB` RAM 🍓

---

- **`board_atmelsam_saml21_xpro_b`** — platform `platform_atmelsam`, <mint>On-board</mint>, MCU `SAML21J18B`, `48MHz`, `256KB` flash, `32KB` RAM 🧚

---

- **`board_nordicnrf52_laird_bl652_dvk`** — platform `platform_nordicnrf52`, <mint>On-board</mint>, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 💫

---

- **`board_nordicnrf52_laird_bl654_dvk`** — platform `platform_nordicnrf52`, <mint>On-board</mint>, MCU `NRF52840`, `64MHz`, `1MB` flash, `256KB` RAM 🔥

---

- **`board_nxplpc_lpc4330_m4`** — platform `platform_nxplpc`, <mint>On-board</mint>, MCU `LPC4330`, `204MHz`, `8MB` flash, `264KB` RAM 👑 (eight whole megabytes bestie, it's flexing and it knows it)

---

- **`board_ststm32_black_f407ve`** — platform `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F407VET6`, `168MHz`, `512KB` flash, `128KB` RAM 🖤

---

- **`board_ststm32_black_f407vg`** — platform `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F407VGT6`, `168MHz`, `512KB` flash, `128KB` RAM 💀

---

- **`board_ststm32_black_f407ze`** — platform `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F407ZET6`, `168MHz`, `512KB` flash, `128KB` RAM 🖤

---

- **`board_ststm32_black_f407zg`** — platform `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F407ZGT6`, `168MHz`, `1MB` flash, `128KB` RAM ⭐

---

- **`board_ststm32_blackpill_f103c8`** — platform `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F103C8T6`, `72MHz`, `64KB` flash, `20KB` RAM 🙈

---

- **`board_ststm32_blackpill_f103c8_128`** — platform `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F103C8T6`, `72MHz`, `128KB` flash, `20KB` RAM 💖

---

okay so real talk — same `platform_atmelsam` twin energy up top, then the `platform_ststm32` glow-up squad, then a lil `platform_nordicnrf52` moment and one absolute unit from `platform_nxplpc`. every column stayed exactly where it was supposed to: board id, platform, whether it's <mint>On-board</mint> or <cyan>External</cyan>, MCU, clock, flash, RAM. no cap, nothing dropped. 🫶

...and the board buffet keeps going, bestie, so grab a snack 🍓 same columns as before: board ID, which platform it lives in, whether it's External or On-board, the chip, the clock speed, the flash, and the RAM. No skips, no gaps, every single one accounted for 💅

- **`board_ststm32_robotdyn_blackpill_f303cc`** — lives in `platform_ststm32`, it's <cyan>External</cyan>, rocking an `STM32F303CCT6` at `72MHz`, with `256KB` of flash and `40KB` of RAM 🫶
- **`board_ststm32_blackpill_f401cc`** — also `platform_ststm32`, <cyan>External</cyan>, chip is `STM32F401CCT6`, `84MHz`, `256KB` flash, `64KB` RAM ✨
- **`board_ststm32_blue_f407ve_mini`** — `platform_ststm32`, <cyan>External</cyan>, `STM32F407VET6`, and she's speedy at `168MHz` with `512KB` flash and `128KB` RAM 🔥
- **`board_ststm32_bluepill_f103c6`** — `platform_ststm32`, <cyan>External</cyan>, `STM32F103C6T6`, `72MHz`, `32KB` flash, `10KB` RAM 🦋
- **`board_ststm32_bluepill_f103c8`** — `platform_ststm32`, <cyan>External</cyan>, `STM32F103C8T6`, `72MHz`, `64KB` flash, `20KB` RAM 💖
- **`board_ststm32_bluepill_f103c8_128k`** — same `platform_ststm32` energy, <cyan>External</cyan>, `STM32F103C8T6`, `72MHz`, but a whole `128KB` of flash and `20KB` RAM 👑
- **`board_nordicnrf52_bluey`** — `platform_nordicnrf52`, <cyan>External</cyan>, `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 🌸
- **`board_nordicnrf51_bluz_dk`** — `platform_nordicnrf51`, <cyan>External</cyan>, `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM 🎀
- **`board_atmelsam_briki_abc_samd21`** — `platform_atmelsam`, <cyan>External</cyan>, `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM ⭐
- **`board_atmelsam_briki_mbcwb_samd21`** — `platform_atmelsam`, <cyan>External</cyan>, `SAMD21G18A` again, `48MHz`, `256KB` flash, `32KB` RAM 🌈
- **`board_nxplpc_lpc11u35_501`** — `platform_nxplpc`, <cyan>External</cyan>, `LPC11U35`, `48MHz`, `64KB` flash, `10KB` RAM 🧚
- **`board_nxplpc_elektor_cocorico`** — `platform_nxplpc`, and this one is <purple>On-board</purple>, `LPC812`, `30MHz`, `16KB` flash, `4KB` RAM 🙈
- **`board_ststm32_coreboard_f401rc`** — `platform_ststm32`, <cyan>External</cyan>, `STM32F401RCT6`, `84MHz`, `256KB` flash, `64KB` RAM 💜
- **`board_nordicnrf52_delta_dfbm_nq620`** — `platform_nordicnrf52`, <purple>On-board</purple>, `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM ✨
- **`board_ststm32_demo_f030f4`** — `platform_ststm32`, <cyan>External</cyan>, `STM32F030F4P6`, `48MHz`, `16KB` flash, `4KB` RAM 🍓
- **`board_atmelsam_digix`** — `platform_atmelsam`, <cyan>External</cyan>, `AT91SAM3X8E`, `84MHz`, `512KB` flash, `96KB` RAM 💖
- **`board_nxplpc_lpc11u35`** — `platform_nxplpc`, <cyan>External</cyan>, `LPC11U35`, `48MHz`, `64KB` flash, `10KB` RAM 🦋
- **`board_siliconlabsefm32_efm32gg_stk3700`** — `platform_siliconlabsefm32`, <purple>On-board</purple>, `EFM32GG990F1024`, `48MHz`, and look at her: `1MB` flash and `128KB` RAM 👑
- **`board_siliconlabsefm32_efm32lg_stk3600`** — `platform_siliconlabsefm32`, <purple>On-board</purple>, `EFM32LG990F256`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_siliconlabsefm32_efm32wg_stk3800`** — `platform_siliconlabsefm32`, <purple>On-board</purple>, `EFM32WG990F256`, `48MHz`, `256KB` flash, `32KB` RAM 🎀

---

<lavender>lowkey obsessed with how many of these have "blue" in the name, the naming committee was in their blue era fr fr 💙</lavender> anyway bestie, the list does not stop here, so don't you dare close the terminal...

Okay so these are still coming, bestie, and they're all *boards* — every single one is a real target you can point PlatformIO at, and every single detail here is exactly as written. No skipping, no vibes-only summary. Let's go 💅

- **`board_siliconlabsefm32_efm32zg_stk3200`** — platform `platform_siliconlabsefm32` · **On-board** debug · MCU `EFM32ZG222F32` · `24MHz` · `32KB` flash · `4KB` RAM 🦋
- **`board_nordicnrf52_electronut_blip`** — platform `platform_nordicnrf52` · **On-board** · MCU `NRF52840` · `64MHz` · `1MB` flash · `256KB` RAM ✨
- **`board_nordicnrf52_electronut_papyr`** — platform `platform_nordicnrf52` · **On-board** · MCU `NRF52840` · `64MHz` · `1MB` flash · `256KB` RAM 📄
- **`board_ststm32_elmo_f411re`** — platform `platform_ststm32` · **External** · MCU `STM32F411RET6` · `100MHz` · `512KB` flash · `128KB` RAM 🔥
- **`board_ststm32_diymore_f407vgt`** — platform `platform_ststm32` · **External** · MCU `STM32F407VGT6` · `168MHz` · `512KB` flash · `128KB` RAM 🌈
- **`board_ststm32_fk407m1`** — platform `platform_ststm32` · **External** · MCU `STM32F407VET6` · `168MHz` · `512KB` flash · `128KB` RAM ⭐
- **`board_freescalekinetis_frdm_kl25z`** — platform `platform_freescalekinetis` · **On-board** · MCU `MKL25Z128VLK4` · `48MHz` · `128KB` flash · `16KB` RAM 🍓
- **`board_freescalekinetis_frdm_kl27z`** — platform `platform_freescalekinetis` · **On-board** · MCU `MKL27Z64VLH4` · `48MHz` · `64KB` flash · `16KB` RAM 🧚
- **`board_nordicnrf52_holyiot_yj16019`** — platform `platform_nordicnrf52` · **External** · MCU `NRF52832` · `64MHz` · `512KB` flash · `64KB` RAM 💜
- **`board_ststm32_rhombio_l476dmw1k`** — platform `platform_ststm32` · **On-board** · MCU `STM32L476VGT6` · `80MHz` · `1MB` flash · `128KB` RAM 👑

---

Not even halfway through this list and we've already got every chip family showing up to the function. Keep reading, we're still going 🫶

- **`board_nxplpc_lpc11u68`** — platform `platform_nxplpc` · **On-board** · MCU `LPC11U68` · `50MHz` · `256KB` flash · `36KB` RAM 💖
- **`board_nxplpc_lpc824`** — platform `platform_nxplpc` · **On-board** · MCU `LPC824` · `30MHz` · `32KB` flash · `8KB` RAM 🌸
- **`board_ststm32_malyanm200_f070cb`** — platform `platform_ststm32` · **External** · MCU `STM32F070CBT6` · `48MHz` · `120KB` flash · `14.81KB` RAM 💅
- **`board_ststm32_malyanm300_f070cb`** — platform `platform_ststm32` · **External** · MCU `STM32F070CBT6` · `48MHz` · `120KB` flash · `14.81KB` RAM 💅
- **`board_ststm32_mkr_sharky`** — platform `platform_ststm32` · **External** · MCU `STM32WB55CG` · `64MHz` · `512KB` flash · `192.00KB` RAM 🦈
- **`board_atmelsam_mkrvidor4000`** — platform `platform_atmelsam` · **External** · MCU `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM 🎀
- **`board_ststm32_mts_dragonfly_f411re`** — platform `platform_ststm32` · **External** · MCU `STM32F411RET6` · `100MHz` · `512KB` flash · `128KB` RAM 🐉
- **`board_nordicnrf52_nrf52832_mdk`** — platform `platform_nordicnrf52` · **On-board** · MCU `NRF52832` · `64MHz` · `512KB` flash · `64KB` RAM 🦋
- **`board_nordicnrf52_nrf52840_mdk`** — platform `platform_nordicnrf52` · **On-board** · MCU `NRF52840` · `64MHz` · `1MB` flash · `256KB` RAM 🦋
- **`board_ststm32_malyanm200_f103cb`** — platform `platform_ststm32` · **External** · MCU `STM32F103CBT6` · `72MHz` · `120KB` flash · `20KB` RAM 🍓

---

> Heads up bestie: notice how the RAM numbers aren't all cute round ones — `14.81KB`, `192.00KB`, `36KB`, `16KB`. Those are **exactly** the values from the list, so don't go rounding them in your head, the manifest says what it says 😭

And yeah, `<pink>On-board</pink>` vs `<purple>External</purple>` is doing a lot of work here — it's telling you whether the debug probe situation is built into the board or something you bring yourself. Not me inventing that, it's literally the column 💀

We're still in the middle of this list, so keep scrolling, the next chunk is coming 💖

- **`board_ststm32_maple`** — <cyan>`platform_ststm32`</cyan> · `External` · chip `STM32F103RBT6` @ <pink>72MHz</pink> · flash <green>108KB</green> · RAM <peach>17KB</peach> ✨
- **`board_ststm32_maple_ret6`** — <cyan>`platform_ststm32`</cyan> · `External` · chip `STM32F103RET6` @ <pink>72MHz</pink> · flash <green>256KB</green> · RAM <peach>48KB</peach> 💖
- **`board_ststm32_maple_mini_b20`** — <cyan>`platform_ststm32`</cyan> · `External` · chip `STM32F103CBT6` @ <pink>72MHz</pink> · flash <green>120KB</green> · RAM <peach>20KB</peach> 🌸
- **`board_ststm32_maple_mini_origin`** — <cyan>`platform_ststm32`</cyan> · `External` · chip `STM32F103CBT6` @ <pink>72MHz</pink> · flash <green>108KB</green> · RAM <peach>17KB</peach> 🦋
- **`board_ststm32_mbed_connect_odin`** — <cyan>`platform_ststm32`</cyan> · `On-board` · chip `STM32F439ZIY6` @ <pink>168MHz</pink> · flash <green>2MB</green> · RAM <peach>256KB</peach> 👑 that clock speed ate, no notes
- **`board_ststm32_microduino32_flash`** — <cyan>`platform_ststm32`</cyan> · `External` · chip `STM32F103CBT6` @ <pink>72MHz</pink> · flash <green>105.47KB</green> · RAM <peach>16.60KB</peach> 🍓 okay decimals?? she's precise, she's giving detail-oriented
- **`board_ststm32_mxchip_az3166`** — <cyan>`platform_ststm32`</cyan> · `On-board` · chip `STM32F412ZGT6` @ <pink>100MHz</pink> · flash <green>1MB</green> · RAM <peach>256KB</peach> ⭐
- **`board_atmelsam_minitronics20`** — <cyan>`platform_atmelsam`</cyan> · `External` · chip `SAMD21J18A` @ <pink>48MHz</pink> · flash <green>256KB</green> · RAM <peach>32KB</peach> 🌈
- **`board_atmelsam_moteino_zero`** — <cyan>`platform_atmelsam`</cyan> · `External` · chip `SAMD21G18A` @ <pink>48MHz</pink> · flash <green>256KB</green> · RAM <peach>32KB</peach> 💜
- **`board_ststm32_mts_mdot_f405rg`** — <cyan>`platform_ststm32`</cyan> · `External` · chip `STM32F411RET6` @ <pink>100MHz</pink> · flash <green>512KB</green> · RAM <peach>128KB</peach> 🔥
- **`board_ststm32_mts_mdot_f411re`** — <cyan>`platform_ststm32`</cyan> · `External` · chip `STM32F411RET6` @ <pink>100MHz</pink> · flash <green>512KB</green> · RAM <peach>128KB</peach> 💀 bestie these two are literally twins, same chip, same clock, same flash, same RAM, same everything, we love a matching set
- **`board_ststm32_xdot_l151cc`** — <cyan>`platform_ststm32`</cyan> · `External` · chip `STM32L151CCU6` @ <pink>32MHz</pink> · flash <green>256KB</green> · RAM <peach>32KB</peach> 🌿 low-power era
- **`board_ststm32_mote_l152rc`** — <cyan>`platform_ststm32`</cyan> · `External` · chip `STM32L152RC` @ <pink>32MHz</pink> · flash <green>256KB</green> · RAM <peach>32KB</peach> 🧚
- **`board_atmelsam_nano_33_iot`** — <cyan>`platform_atmelsam`</cyan> · `External` · chip `SAMD21G18A` @ <pink>48MHz</pink> · flash <green>256KB</green> · RAM <peach>32KB</peach> 📡 the iot girlies stay winning
- **`board_nxplpc_blueboard_lpc11u24`** — <cyan>`platform_nxplpc`</cyan> · `External` · chip `LPC11U24` @ <pink>48MHz</pink> · flash <green>32KB</green> · RAM <peach>8KB</peach> 🩵 and now we're in LPC land, new platform unlocked
- **`board_nxplpc_lpc11c24`** — <cyan>`platform_nxplpc`</cyan> · `External` · chip `LPC11C24` @ <pink>48MHz</pink> · flash <green>32KB</green> · RAM <peach>8KB</peach> 🎀
- **`board_nxplpc_lpc11u34_421`** — <cyan>`platform_nxplpc`</cyan> · `External` · chip `LPC11U34` @ <pink>48MHz</pink> · flash <green>40KB</green> · RAM <peach>8KB</peach> 🌸 a whole 8KB more flash than her sisters, growth mindset
- **`board_nxplpc_lpc11u37_501`** — <cyan>`platform_nxplpc`</cyan> · `External` · chip `LPC11U37` @ <pink>48MHz</pink> · flash <green>128KB</green> · RAM <peach>10KB</peach> 🦋
- **`board_nxplpc_lpc812`** — <cyan>`platform_nxplpc`</cyan> · `On-board` · chip `LPC812` @ <pink>30MHz</pink> · flash <green>16KB</green> · RAM <peach>4KB</peach> 🙈 tiny queen, 4KB of RAM is giving minimalism and honestly? respect the restraint
- **`board_nxplpc_lpc1549`** — <cyan>`platform_nxplpc`</cyan> · `External` · chip `LPC1549` @ <pink>72MHz</pink> · flash <green>256KB</green> · RAM <peach>36KB</peach> 💅

---

<lavender>okay real talk bestie, that's a whole lotta boards and the list just keeps going, so hydrate, stretch, and keep scrolling 🫶</lavender>

- `board_nxpimxrt_mimxrt1010_evk` — `platform_nxpimxrt` · On-board · <purple>`MIMXRT1011DAE5A`</purple> · `500MHz` · `64KB` · `128KB`
- `board_nxpimxrt_mimxrt1015_evk` — `platform_nxpimxrt` · On-board · <purple>`MIMXRT1015DAF5A`</purple> · `500MHz` · `96KB` · `128KB`
- `board_nxpimxrt_mimxrt1020_evk` — `platform_nxpimxrt` · On-board · <purple>`MIMXRT1021DAG5A`</purple> · `500MHz` · `64MB` · `256MB`
- `board_nxpimxrt_mimxrt1050_evk` — `platform_nxpimxrt` · On-board · <purple>`MIMXRT1052DVL6B`</purple> · `600MHz` · `64MB` · `512KB`
- `board_nxpimxrt_mimxrt1060_evk` — `platform_nxpimxrt` · On-board · <purple>`MIMXRT1062DVL6A`</purple> · `600MHz` · `64MB` · `1MB`
- `board_nxpimxrt_mimxrt1064_evk` — `platform_nxpimxrt` · On-board · <purple>`MIMXRT1064DVL6A`</purple> · `600MHz` · `4MB` · `1MB`
- `board_nxplpc_lpc11u24` — `platform_nxplpc` · On-board · <purple>`LPC11U24`</purple> · `48MHz` · `32KB` · `8KB`
- `board_nxplpc_lpc1768` — `platform_nxplpc` · On-board · <purple>`LPC1768`</purple> · `96MHz` · `512KB` · `64KB`
- `board_nordicnrf51_nrf51_beacon` — `platform_nordicnrf51` · On-board · <purple>`NRF51822`</purple> · `32MHz` · `256KB` · `32KB`
- `board_nordicnrf52_thingy_52` — `platform_nordicnrf52` · <cyan>External</cyan> · <purple>`NRF52832`</purple> · `64MHz` · `512KB` · `64KB`
- `board_nordicnrf51_nrf51_dk` — `platform_nordicnrf51` · On-board · <purple>`NRF51822`</purple> · `32MHz` · `256KB` · `32KB`
- `board_nordicnrf52_nrf52_dk` — `platform_nordicnrf52` · On-board · <purple>`NRF52832`</purple> · `64MHz` · `512KB` · `64KB`
- `board_nordicnrf52_nrf52840_dk` — `platform_nordicnrf52` · On-board · <purple>`NRF52840`</purple> · `64MHz` · `1MB` · `256KB`
- `board_ststm32_nucleo_g071rb` — `platform_ststm32` · <cyan>External</cyan> · <purple>`STM32G071RBT6`</purple> · `64MHz` · `128KB` · `36KB`
- `board_ststm32_nucleo_g431kb` — `platform_ststm32` · <cyan>External</cyan> · <purple>`STM32G431KBT6`</purple> · `170MHz` · `128KB` · `32KB`
- `board_ststm32_nucleo_g431rb` — `platform_ststm32` · <cyan>External</cyan> · <purple>`STM32G431RBT6`</purple> · `170MHz` · `128KB` · `32KB`
- `board_ststm32_nucleo_g474re` — `platform_ststm32` · <cyan>External</cyan> · <purple>`STM32G474RET6`</purple> · `170MHz` · `512KB` · `128KB`
- `board_ststm32_olimexino` — `platform_ststm32` · <cyan>External</cyan> · <purple>`STM32F103RBT6`</purple> · `72MHz` · `128KB` · `20KB`
- `board_nordicnrf51_oshchip` — `platform_nordicnrf51` · <cyan>External</cyan> · <purple>`NRF51822`</purple> · `32MHz` · `256KB` · `32KB`
- `board_ststm32_olimex_p405` — `platform_ststm32` · <cyan>External</cyan> · <purple>`STM32F405RGT6`</purple> · `168MHz` · `1MB` · `192KB`

---

okay bestie real talk, that run was a <hotpink>whole buffet</hotpink> of boards 💖 we got the NXP i.MX RT girlies with their spicy `600MHz` clocks, we got the little LPC babies just vibing at `48MHz`, the Nordic crew doing their thing, and the STM32 Nucleo lineup showing up <cyan>External</cyan> like they're too cool for an on-board label 💅

not me noticing the `mimxrt1020_evk` out here flexing `256MB` while the `1064_evk` is sitting at `4MB` — every board has its own whole personality and honestly? respect 🫶

same order as always, no cap: ID, platform, board type, MCU, clock, then the two size numbers. nothing skipped, nothing rounded, nothing invented ✨

and yeah the `<cyan>External</cyan>` tag just means the board definition lives outside the platform's own pack, so don't come for me, it's in the data 🙈

more coming, keep scrolling 🌸

okay bestie the board list keeps going and honestly it's giving *encyclopedia energy* but we're so close, keep scrolling with me 💅✨

- **`board_ststm32_nucleo_wb55rg_p`** — platform: <pink>`platform_ststm32`</pink> · mounting: <cyan>On-board</cyan> · MCU: `STM32WB55RG` · clock: `64MHz` · flash: `512KB` · RAM: `192.00KB` 🦋
- **`board_ststm32_piconomix_px_her0`** — platform: <pink>`platform_ststm32`</pink> · mounting: <purple>External</purple> · MCU: `STM32L072RB` · clock: `32MHz` · flash: `128KB` · RAM: `20KB` 🌸
- **`board_ststm32_prntr_v2`** — platform: <pink>`platform_ststm32`</pink> · mounting: <purple>External</purple> · MCU: `STM32F407RE` · clock: `168MHz` · flash: `512KB` · RAM: `192KB` 🔥
- **`board_ststm32_rak811_tracker`** — platform: <pink>`platform_ststm32`</pink> · mounting: <purple>External</purple> · MCU: `STM32L151RBT6` · clock: `32MHz` · flash: `128KB` · RAM: `16KB` 🎀
- **`board_ststm32_rak811_tracker_32`** — platform: <pink>`platform_ststm32`</pink> · mounting: <purple>External</purple> · MCU: `STM32L151RBT6` · clock: `32MHz` · flash: `128KB` · RAM: `32KB` ⭐
- **`board_ststm32_rhf76_052`** — platform: <pink>`platform_ststm32`</pink> · mounting: <purple>External</purple> · MCU: `STM32L051C8T6` · clock: `32MHz` · flash: `64KB` · RAM: `8KB` 🌈
- **`board_nordicnrf51_redBearLabBLENano`** — platform: <lavender>`platform_nordicnrf51`</lavender> · mounting: <cyan>On-board</cyan> · MCU: `NRF51822` · clock: `16MHz` · flash: `256KB` · RAM: `32KB` 🫶
- **`board_nordicnrf52_redbear_blenano2`** — platform: <lavender>`platform_nordicnrf52`</lavender> · mounting: <cyan>On-board</cyan> · MCU: `NRF52832` · clock: `64MHz` · flash: `512KB` · RAM: `64KB` 💜
- **`board_nordicnrf52_redbear_blend2`** — platform: <lavender>`platform_nordicnrf52`</lavender> · mounting: <cyan>On-board</cyan> · MCU: `NRF52832` · clock: `64MHz` · flash: `512KB` · RAM: `64KB` 🦋
- **`board_nordicnrf51_redBearLab`** — platform: <lavender>`platform_nordicnrf51`</lavender> · mounting: <cyan>On-board</cyan> · MCU: `NRF51822` · clock: `16MHz` · flash: `256KB` · RAM: `16KB` 🌸
- **`board_ststm32_cloud_jam`** — platform: <pink>`platform_ststm32`</pink> · mounting: <cyan>On-board</cyan> · MCU: `STM32F401RET6` · clock: `84MHz` · flash: `512KB` · RAM: `96KB` ✨
- **`board_ststm32_cloud_jam_l4`** — platform: <pink>`platform_ststm32`</pink> · mounting: <cyan>On-board</cyan> · MCU: `STM32L476RGT6` · clock: `80MHz` · flash: `1MB` · RAM: `128KB` 👑
- **`board_nordicnrf52_sdt52832b`** — platform: <lavender>`platform_nordicnrf52`</lavender> · mounting: <purple>External</purple> · MCU: `NRF52832` · clock: `64MHz` · flash: `512KB` · RAM: `64KB` 🍓
- **`board_siliconlabsefm32_efm32hg_stk3400`** — platform: <mint>`platform_siliconlabsefm32`</mint> · mounting: <cyan>On-board</cyan> · MCU: `EFM32HG322F64` · clock: `25MHz` · flash: `64KB` · RAM: `8KB` 🧚
- **`board_siliconlabsefm32_efm32pg_stk3401`** — platform: <mint>`platform_siliconlabsefm32`</mint> · mounting: <cyan>On-board</cyan> · MCU: `EFM32PG1B200F256GM48` · clock: `40MHz` · flash: `256KB` · RAM: `32KB` 💖
- **`board_atmelsam_sodaq_autonomo`** — platform: <peach>`platform_atmelsam`</peach> · mounting: <purple>External</purple> · MCU: `SAMD21J18A` · clock: `48MHz` · flash: `256KB` · RAM: `32KB` 🌈
- **`board_atmelsam_sodaq_explorer`** — platform: <peach>`platform_atmelsam`</peach> · mounting: <purple>External</purple> · MCU: `SAMD21J18A` · clock: `48MHz` · flash: `256KB` · RAM: `32KB` 🎀
- **`board_atmelsam_sodaq_one`** — platform: <peach>`platform_atmelsam`</peach> · mounting: <purple>External</purple> · MCU: `SAMD21G18A` · clock: `48MHz` · flash: `256KB` · RAM: `32KB` ⭐
- **`board_atmelsam_sodaq_sara`** — platform: <peach>`platform_atmelsam`</peach> · mounting: <purple>External</purple> · MCU: `SAMD21J18A` · clock: `48MHz` · flash: `256KB` · RAM: `32KB` 🫶
- **`board_atmelsam_sodaq_sff`** — platform: <peach>`platform_atmelsam`</peach> · mounting: <purple>External</purple> · MCU: `SAMD21G18A` · clock: `48MHz` · flash: `256KB` · RAM: `32KB` 💅

okay the STM32 disco + nucleo roster keeps going and we are NOT skipping a single one 💅 every board id, chip, clock, flash and RAM number stays exactly where it was:

- **`board_ststm32_disco_f334c8`** — platform: `platform_ststm32` · On-board · chip: `STM32F334C8T6` · `72MHz` · flash `64KB` · RAM `12KB`
- **`board_ststm32_disco_f401vc`** — platform: `platform_ststm32` · On-board · chip: `STM32F401VCT6` · `84MHz` · flash `256KB` · RAM `64KB`
- **`board_ststm32_disco_f411ve`** — platform: `platform_ststm32` · On-board · chip: `STM32F411VET6` · `100MHz` · flash `512KB` · RAM `128KB`
- **`board_ststm32_disco_f413zh`** — platform: `platform_ststm32` · On-board · chip: `STM32F413ZHT6` · `100MHz` · flash `512KB` · RAM `128KB`
- **`board_ststm32_disco_f429zi`** — platform: `platform_ststm32` · On-board · chip: `STM32F429ZIT6` · `180MHz` · flash `2MB` · RAM `256KB`
- **`board_ststm32_disco_f469ni`** — platform: `platform_ststm32` · On-board · chip: `STM32F469NIH6` · `180MHz` · flash `1MB` · RAM `384KB`
- **`board_ststm32_disco_f746ng`** — platform: `platform_ststm32` · On-board · chip: `STM32F746NGH6` · `216MHz` · flash `1MB` · RAM `320KB`
- **`board_ststm32_disco_f769ni`** — platform: `platform_ststm32` · On-board · chip: `STM32F769NIH6` · `216MHz` · flash `1MB` · RAM `512KB`
- **`board_ststm32_disco_l053c8`** — platform: `platform_ststm32` · On-board · chip: `STM32L053C8T6` · `32MHz` · flash `64KB` · RAM `8KB`
- **`board_ststm32_disco_l100rc`** — platform: `platform_ststm32` · On-board · chip: `STM32L100RCT6` · `32MHz` · flash `256KB` · RAM `16KB`
- **`board_ststm32_disco_l476vg`** — platform: `platform_ststm32` · On-board · chip: `STM32L476VGT6` · `80MHz` · flash `1MB` · RAM `128KB`
- **`board_ststm32_disco_l496ag`** — platform: `platform_ststm32` · On-board · chip: `STM32L496AGI6` · `80MHz` · flash `1MB` · RAM `320KB`
- **`board_ststm32_disco_l475vg_iot01a`** — platform: `platform_ststm32` · On-board · chip: `STM32L475VGT6` · `80MHz` · flash `1MB` · RAM `128KB`
- **`board_ststm32_disco_l072cz_lrwan1`** — platform: `platform_ststm32` · On-board · chip: `STM32L072CZ` · `32MHz` · flash `192KB` · RAM `20KB`
- **`board_ststm32_disco_f072rb`** — platform: `platform_ststm32` · On-board · chip: `STM32F072RBT6` · `48MHz` · flash `128KB` · RAM `16KB`
- **`board_ststm32_nucleo_f030r8`** — platform: `platform_ststm32` · On-board · chip: `STM32F030R8T6` · `48MHz` · flash `64KB` · RAM `8KB`
- **`board_ststm32_nucleo_f031k6`** — platform: `platform_ststm32` · On-board · chip: `STM32F031K6T6` · `48MHz` · flash `32KB` · RAM `4KB`
- **`board_ststm32_nucleo_f042k6`** — platform: `platform_ststm32` · On-board · chip: `STM32F042K6T6` · `48MHz` · flash `32KB` · RAM `6KB`
- **`board_ststm32_nucleo_f070rb`** — platform: `platform_ststm32` · On-board · chip: `STM32F070RBT6` · `48MHz` · flash `128KB` · RAM `16KB`
- **`board_ststm32_nucleo_f072rb`** — platform: `platform_ststm32` · On-board · chip: `STM32F072RBT6` · `48MHz` · flash `128KB` · RAM `16KB`

<lavender>quick vibe check so you're reading these right, bestie 🫶 each line is the same shape: the board id first (that's the thing you'd hand to the tool), then which platform it lives in — every single one here is <cyan>`platform_ststm32`</cyan> — then <mint>`On-board`</mint>, then the actual silicon, then the clock, then flash, then RAM.</lavender>

<yellow>lowkey the disco `l475vg_iot01a` and the disco `l072cz_lrwan1` are the ones with the extra little suffixes, so don't let your eyes glaze over and swap them — those ids are exact and the tool will not forgive a typo, no cap 😭</yellow>

<hotpink>and notice the nucleo `f072rb` and the disco `f072rb` share the exact same chip, `STM32F072RBT6`, with the exact same `48MHz`, `128KB` flash and `16KB` RAM — same silicon, different board id. it's giving twins, not duplicates 👑</hotpink>

the `2MB` flash on `board_ststm32_disco_f429zi` is still the chunkiest of this bunch and honestly? main character energy 🔥

<rainbow>still more boards to get through, keep scrolling, we're not done ✨</rainbow>

- **`board_ststm32_nucleo_f091rc`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F091RCT6`, `48MHz`, `256KB` flash, `32KB` RAM 💖

- **`board_ststm32_nucleo_f103rb`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F103RBT6`, `72MHz`, `128KB` flash, `20KB` RAM

- **`board_ststm32_nucleo_f207zg`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F207ZGT6`, `120MHz`, `1MB` flash, `128KB` RAM ✨

- **`board_ststm32_nucleo_f302r8`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F302R8T6`, `72MHz`, `64KB` flash, `16KB` RAM

- **`board_ststm32_nucleo_f303k8`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F303K8T6`, `72MHz`, `64KB` flash, `12KB` RAM

- **`board_ststm32_nucleo_f303re`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F303RET6`, `72MHz`, `512KB` flash, `64KB` RAM

- **`board_ststm32_nucleo_f303ze`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F303ZET6`, `72MHz`, `512KB` flash, `64KB` RAM

- **`board_ststm32_nucleo_f334r8`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F334R8T6`, `72MHz`, `64KB` flash, `16KB` RAM

- **`board_ststm32_nucleo_f401re`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F401RET6`, `84MHz`, `512KB` flash, `96KB` RAM 🦋

- **`board_ststm32_nucleo_f410rb`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F410RBT6`, `100MHz`, `128KB` flash, `32KB` RAM

- **`board_ststm32_nucleo_f411re`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F411RET6`, `100MHz`, `512KB` flash, `128KB` RAM

- **`board_ststm32_nucleo_f412zg`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F412ZGT6`, `100MHz`, `1MB` flash, `256KB` RAM 🔥

- **`board_ststm32_nucleo_f413zh`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F413ZHT6`, `100MHz`, `512KB` flash, `128KB` RAM

- **`board_ststm32_nucleo_f429zi`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F429ZIT6`, `180MHz`, `2MB` flash, `256KB` RAM 💅

- **`board_ststm32_nucleo_f439zi`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F439ZIT6`, `180MHz`, `2MB` flash, `256KB` RAM

- **`board_ststm32_nucleo_f446re`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F446RET6`, `180MHz`, `512KB` flash, `128KB` RAM

- **`board_ststm32_nucleo_f446ze`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F446ZET6`, `180MHz`, `512KB` flash, `128KB` RAM

- **`board_ststm32_nucleo_f722ze`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F722ZET6`, `216MHz`, `512KB` flash, `256KB` RAM ✨

- **`board_ststm32_nucleo_f746zg`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F746ZGT6`, `216MHz`, `1MB` flash, `320KB` RAM 👑

- **`board_ststm32_nucleo_f756zg`** — platform <cyan>`platform_ststm32`</cyan>, on-board, chip `STM32F756ZG`, `216MHz`, `1MB` flash, `320KB` RAM 🌸

---

<purple>bestie the way this list just keeps GOING 😭 every single one of these is a real board you can target, and they're all sitting pretty on `platform_ststm32` as on-board entries, each with its own chip, clock speed, flash size and RAM size — no shortcuts, no summarising, we're listing every last one 💖</purple>

- **`board_ststm32_nucleo_f767zi`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32F767ZIT6`, `216MHz`, flash `2MB`, RAM `512KB` 🔥
- **`board_ststm32_nucleo_h743zi`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32H743ZIT6`, `400MHz`, flash `2MB`, RAM `512KB` 💅 that `400MHz` is giving main character energy fr
- **`board_ststm32_nucleo_l011k4`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L011K4T6`, `32MHz`, flash `16KB`, RAM `2KB` 🥺 smol but valid
- **`board_ststm32_nucleo_l031k6`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L031K6T6`, `32MHz`, flash `32KB`, RAM `8KB`
- **`board_ststm32_nucleo_l053r8`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L053R8T6`, `32MHz`, flash `64KB`, RAM `8KB`
- **`board_ststm32_nucleo_l073rz`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L073RZ`, `32MHz`, flash `192KB`, RAM `20KB`
- **`board_ststm32_nucleo_l152re`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L152RET6`, `32MHz`, flash `512KB`, RAM `80KB`
- **`board_ststm32_nucleo_l412kb`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L412KBU6`, `80MHz`, flash `128KB`, RAM `40KB`
- **`board_ststm32_nucleo_l432kc`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L432KCU6`, `80MHz`, flash `256KB`, RAM `64KB`
- **`board_ststm32_nucleo_l433rc_p`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L433RC`, `80MHz`, flash `256KB`, RAM `64KB`
- **`board_ststm32_nucleo_l452re`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L452RET6`, `80MHz`, flash `256KB`, RAM `64KB`
- **`board_ststm32_nucleo_l476rg`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L476RGT6`, `80MHz`, flash `1MB`, RAM `128KB` 💖 a whole megabyte bestie
- **`board_ststm32_nucleo_l486rg`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L486RGT6`, `80MHz`, flash `1MB`, RAM `128KB`
- **`board_ststm32_nucleo_l496zg`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L496ZGT6`, `80MHz`, flash `1MB`, RAM `128KB`
- **`board_ststm32_nucleo_l496zg_p`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L496ZGT6P`, `80MHz`, flash `1MB`, RAM `320KB` 👑 okay the RAM jump from its non-`_p` sibling? obsessed
- **`board_ststm32_nucleo_l4r5zi`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32L4R5ZIT6`, `120MHz`, flash `2MB`, RAM `640KB` 🌈
- **`board_ststm32_disco_f030r8`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32F030R8T6`, `48MHz`, flash `64KB`, RAM `8KB` 🎀 now we're in disco territory
- **`board_ststm32_disco_f051r8`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32F051R8T6`, `48MHz`, flash `64KB`, RAM `8KB`
- **`board_ststm32_disco_f303vc`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32F303VCT6`, `72MHz`, flash `256KB`, RAM `48KB`
- **`board_ststm32_disco_f407vg`** — platform <cyan>`platform_ststm32`</cyan> ✨ on-board MCU `STM32F407VGT6`, `168MHz`, flash `1MB`, RAM `128KB` 🔥 the disco classic, no cap

---

<purple>ngl bestie, that's a *lot* of boards and we're still going — the list literally does not stop 💀 more coming, stay with me 🫶</purple>

- **`board_ststm32_eval_l073z`** — <pink>platform_ststm32</pink> · On-board · `STM32L073VZT6` · <cyan>32MHz</cyan> · `192KB` · `20KB` 💅
- **`board_ststm32_disco_l152rb`** — <pink>platform_ststm32</pink> · On-board · `STM32L152RBT6` · <cyan>32MHz</cyan> · `128KB` · `16KB` ✨
- **`board_ststm32_disco_f100rb`** — <pink>platform_ststm32</pink> · On-board · `STM32F100RBT6` · <cyan>24MHz</cyan> · `128KB` · `8KB` 🦋
- **`board_ststm32_silica_sensor_node`** — <pink>platform_ststm32</pink> · On-board · `STM32L476JG` · <cyan>80MHz</cyan> · `1MB` · `128KB` 🔥
- **`board_ststm32_steval_fcu001v1`** — <pink>platform_ststm32</pink> · External · `STM32F401CCU6` · <cyan>84MHz</cyan> · `256KB` · `64KB` 🎀
- **`board_ststm32_olimex_e407`** — <pink>platform_ststm32</pink> · External · `STM32F407ZGT6` · <cyan>168MHz</cyan> · `1MB` · `128KB` 👑
- **`board_ststm32_olimex_h407`** — <pink>platform_ststm32</pink> · External · `STM32F407ZGT6` · <cyan>168MHz</cyan> · `1MB` · `128KB` 👑
- **`board_ststm32_eval_f107vc`** — <pink>platform_ststm32</pink> · External · `STM32F107VCT6` · <cyan>72MHz</cyan> · `256KB` · `64KB` 🌸
- **`board_ststm32_eval_f373vc`** — <pink>platform_ststm32</pink> · External · `STM32F373VCT6` · <cyan>72MHz</cyan> · `256KB` · `32KB` 🌈
- **`board_ststm32_eval_f072vb`** — <pink>platform_ststm32</pink> · External · `STM32F072VBT6` · <cyan>48MHz</cyan> · `128KB` · `16KB` 💜
- **`board_ststm32_genericSTM32F103C8`** — <pink>platform_ststm32</pink> · External · `STM32F103C8T6` · <cyan>72MHz</cyan> · `64KB` · `20KB` 🍓
- **`board_ststm32_genericSTM32F103CB`** — <pink>platform_ststm32</pink> · External · `STM32F103CBT6` · <cyan>72MHz</cyan> · `128KB` · `20KB` 🍓
- **`board_ststm32_genericSTM32F103R8`** — <pink>platform_ststm32</pink> · External · `STM32F103R8T6` · <cyan>72MHz</cyan> · `64KB` · `20KB` 🧚
- **`board_ststm32_genericSTM32F103RB`** — <pink>platform_ststm32</pink> · External · `STM32F103RBT6` · <cyan>72MHz</cyan> · `128KB` · `20KB` 🧚
- **`board_ststm32_genericSTM32F103RC`** — <pink>platform_ststm32</pink> · External · `STM32F103RCT6` · <cyan>72MHz</cyan> · `256KB` · `48KB` ⭐
- **`board_ststm32_genericSTM32F103RE`** — <pink>platform_ststm32</pink> · External · `STM32F103RET6` · <cyan>72MHz</cyan> · `512KB` · `64KB` ⭐
- **`board_ststm32_genericSTM32F103T8`** — <pink>platform_ststm32</pink> · External · `STM32F103T8T6` · <cyan>72MHz</cyan> · `64KB` · `20KB` 🫶
- **`board_ststm32_genericSTM32F103TB`** — <pink>platform_ststm32</pink> · External · `STM32F103TBT6` · <cyan>72MHz</cyan> · `128KB` · `20KB` 🫶
- **`board_ststm32_genericSTM32F103VB`** — <pink>platform_ststm32</pink> · External · `STM32F103VBT6` · <cyan>72MHz</cyan> · `128KB` · `20KB` 💖
- **`board_ststm32_genericSTM32F103VC`** — <pink>platform_ststm32</pink> · External · `STM32F103VCT6` · <cyan>72MHz</cyan> · `256KB` · `48KB` 💖

Okay bestie, we're still in the board lineup 💅 every single row here is a real board with its platform, whether it's <yellow>External</yellow> or <yellow>On-board</yellow>, the chip, the clock, the flash and the RAM. No skipping, no summarizing, we read them all fr fr.

- <pink>`board_ststm32_genericSTM32F103VD`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>External</yellow> · MCU `STM32F103VDT6` · 72MHz · `384KB` flash · `64KB` RAM
- <pink>`board_ststm32_genericSTM32F103VE`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>External</yellow> · MCU `STM32F103VET6` · 72MHz · `512KB` flash · `64KB` RAM
- <pink>`board_ststm32_genericSTM32F103ZC`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>External</yellow> · MCU `STM32F103ZCT6` · 72MHz · `256KB` flash · `48KB` RAM
- <pink>`board_ststm32_genericSTM32F103ZD`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>External</yellow> · MCU `STM32F103ZDT6` · 72MHz · `384KB` flash · `64KB` RAM
- <pink>`board_ststm32_genericSTM32F103ZE`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>External</yellow> · MCU `STM32F103ZET6` · 72MHz · `512KB` flash · `64KB` RAM
- <pink>`board_ststm32_genericSTM32F303CB`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>External</yellow> · MCU `STM32F303CBT6` · 72MHz · `128KB` flash · `32KB` RAM
- <pink>`board_ststm32_genericSTM32F401RB`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>External</yellow> · MCU `STM32F401RB` · 84MHz · `128KB` flash · `64KB` RAM
- <pink>`board_ststm32_genericSTM32F401RC`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>External</yellow> · MCU `STM32F401RC` · 84MHz · `256KB` flash · `64KB` RAM
- <pink>`board_ststm32_genericSTM32F401RE`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>External</yellow> · MCU `STM32F401RE` · 84MHz · `512KB` flash · `96KB` RAM

okay the <purple>disco</purple> era is giving main character energy, both of these are <yellow>On-board</yellow> and lowkey stacked ✨

- <pink>`board_ststm32_disco_f750n8`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>On-board</yellow> · MCU `STM32F750N8H6` · 216MHz · `64KB` flash · `340KB` RAM
- <pink>`board_ststm32_disco_h743xi`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>On-board</yellow> · MCU `STM32H747XIH6` · 400MHz · `2MB` flash · `512KB` RAM

---

now we pivot to <hotpink>Atmel SAM</hotpink> land 🌸 the Due twins showed up and they're matching, iconic:

- <pink>`board_atmelsam_sainSmartDue`</pink> — platform <cyan>`platform_atmelsam`</cyan> · <yellow>External</yellow> · MCU `AT91SAM3X8E` · 84MHz · `512KB` flash · `96KB` RAM
- <pink>`board_atmelsam_sainSmartDueUSB`</pink> — platform <cyan>`platform_atmelsam`</cyan> · <yellow>External</yellow> · MCU `AT91SAM3X8E` · 84MHz · `512KB` flash · `96KB` RAM

Nordic nRF51 girlies, you are so smol and so valid 🦋 16MHz core clock, no notes:

- <pink>`board_nordicnrf51_seeedArchBLE`</pink> — platform <cyan>`platform_nordicnrf51`</cyan> · <yellow>On-board</yellow> · MCU `NRF51822` · 16MHz · `128KB` flash · `16KB` RAM
- <pink>`board_nordicnrf51_seeedArchLink`</pink> — platform <cyan>`platform_nordicnrf51`</cyan> · <yellow>On-board</yellow> · MCU `NRF51822` · 16MHz · `256KB` flash · `16KB` RAM
- <pink>`board_ststm32_seeedArchMax`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>On-board</yellow> · MCU `STM32F407VET6` · 168MHz · `512KB` flash · `192KB` RAM
- <pink>`board_nordicnrf51_seeedTinyBLE`</pink> — platform <cyan>`platform_nordicnrf51`</cyan> · <yellow>On-board</yellow> · MCU `NRF51822` · 16MHz · `256KB` flash · `16KB` RAM

the way `wio_3g` is just out here with <rainbow>2MB of flash</rainbow> like it's nothing 😭 obsessed:

- <pink>`board_ststm32_wio_3g`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>On-board</yellow> · MCU `STM32F439VI` · 180MHz · `2MB` flash · `256KB` RAM
- <pink>`board_atmelsam_seeeduino_lorawan`</pink> — platform <cyan>`platform_atmelsam`</cyan> · <yellow>External</yellow> · MCU `SAMD21G18A` · 48MHz · `256KB` flash · `32KB` RAM
- <pink>`board_ststm32_steval_mksboxv1`</pink> — platform <cyan>`platform_ststm32`</cyan> · <yellow>External</yellow> · MCU `STM32L4R9ZI` · 120MHz · `2MB` flash · `640KB` RAM

and that's this lil stretch of the board roster bestie, all twenty of them, nothing dropped, nothing merged 💖 keep scrolling, there's more where that came from 🫶

- **`board_nordicnrf51_Sinobit`** — lives on `platform_nordicnrf51`, <peach>External</peach> vibes, rocking an `NRF51822` at `32MHz`, with `256KB` of flash and `32KB` of RAM ✨

- **`board_nxplpc_dipcortexm0`** — from `platform_nxplpc`, <peach>External</peach>, chip is `LPC11U24`, `50MHz`, `32KB` flash, `8KB` RAM 🦋

- **`board_atmelsam_sparkfun_samd21_9dof`** — `platform_atmelsam`, <peach>External</peach>, `SAMD21G18A` at `48MHz`, `256KB` flash, `32KB` RAM 💖

- **`board_atmelsam_sparkfun_qwiic_micro_samd21e`** — `platform_atmelsam`, <peach>External</peach>, `SAMD21E18A`, `48MHz`, `256KB` flash, `32KB` RAM 🎀

- **`board_atmelsam_sparkfun_redboard_turbo`** — `platform_atmelsam`, <peach>External</peach>, `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🔥

- **`board_atmelsam_sparkfun_samd21_dev_usb`** — `platform_atmelsam`, <peach>External</peach>, `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸

- **`board_atmelsam_sparkfun_samd21_mini_usb`** — `platform_atmelsam`, <peach>External</peach>, `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🧚

- **`board_atmelsam_sparkfun_samd21_proRF`** — `platform_atmelsam`, <peach>External</peach>, `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 💜

- **`board_ststm32_sparky_v1`** — `platform_ststm32`, <peach>External</peach>, `STM32F303CCT6` at `72MHz`, `256KB` flash, `40KB` RAM ⭐

- **`board_nxplpc_lpc1114fn28`** — `platform_nxplpc`, <mint>On-board</mint>, `LPC1114FN28` at `48MHz`, `32KB` flash, `4KB` RAM 🫶

- **`board_nxplpc_ssci824`** — `platform_nxplpc`, <mint>On-board</mint>, `LPC824` at `30MHz`, `32KB` flash, `8KB` RAM 🌈

- **`board_nordicnrf52_stct_nrf52_minidev`** — `platform_nordicnrf52`, <peach>External</peach>, `NRF52832` at `64MHz`, `512KB` flash, `64KB` RAM 👑

- **`board_ststm32_thunder_pack`** — `platform_ststm32`, <peach>External</peach>, `STM32L072KZ` at `32MHz`, `192KB` flash, `20KB` RAM 💅

- **`board_siliconlabsefm32_tb_sense_12`** — `platform_siliconlabsefm32`, <mint>On-board</mint>, `EFR32MG12P432F1024` at `40MHz`, `1MB` flash, `256KB` RAM 😭 (a whole megabyte bestie, we love to see it)

- **`board_ststm32_hy_tinystm103tb`** — `platform_ststm32`, <peach>External</peach>, `STM32F103TBU6` at `72MHz`, `128KB` flash, `20KB` RAM 🍓

- **`board_atmelsam_tuinozero96`** — `platform_atmelsam`, <peach>External</peach>, `SAMD21G18A` at `48MHz`, `256KB` flash, `32KB` RAM 🦋

- **`board_ststm32_vake_v1`** — `platform_ststm32`, <peach>External</peach>, `STM32F446RET6` at `180MHz`, `512KB` flash, `128KB` RAM 🔥

- **`board_nordicnrf52_vbluno52`** — `platform_nordicnrf52`, <mint>On-board</mint>, `NRF52832` at `64MHz`, `512KB` flash, `64KB` RAM 💖

- **`board_nordicnrf51_waveshare_ble400`** — `platform_nordicnrf51`, <peach>External</peach>, `NRF51822` at `32MHz`, `256KB` flash, `32KB` RAM ✨

- **`board_ststm32_wraith32_v1`** — `platform_ststm32`, <peach>External</peach>, `STM32F051K6` at `48MHz`, `32KB` flash, `7.75KB` RAM 💀 (yes `7.75KB`, that decimal is not a typo, the board said what it said)

- **`board_nordicnrf52_hackaBLE`** — platform `platform_nordicnrf52`, debug tool **External**, MCU `NRF52832`, `64MHz`, flash `512KB`, RAM `64KB` 🦋
- **`board_nordicnrf51_ng_beacon`** — platform `platform_nordicnrf51`, debug tool **External**, MCU `NRF51822`, `16MHz`, flash `256KB`, RAM `32KB` 🦋
- **`board_ststm32_sakuraio_evb_01`** — platform `platform_ststm32`, debug tool **On-board**, MCU `STM32F411RET6`, `100MHz`, flash `1MB`, RAM `128KB` 🌸
- **`board_nxplpc_ubloxc027`** — platform `platform_nxplpc`, debug tool **On-board**, MCU `LPC1768`, `96MHz`, flash `512KB`, RAM `64KB` 🍓
- **`board_ststm32_ublox_c030_n211`** — platform `platform_ststm32`, debug tool **External**, MCU `STM32F437VG`, `180MHz`, flash `1MB`, RAM `256KB` 🌸
- **`board_ststm32_ublox_c030_r410m`** — platform `platform_ststm32`, debug tool **On-board**, MCU `STM32F437VG`, `180MHz`, flash `1MB`, RAM `256KB` 🌸
- **`board_ststm32_ublox_c030_u201`** — platform `platform_ststm32`, debug tool **External**, MCU `STM32F437VG`, `180MHz`, flash `1MB`, RAM `256KB` 🌸
- **`board_nordicnrf52_ublox_evk_nina_b1`** — platform `platform_nordicnrf52`, debug tool **On-board**, MCU `NRF52832`, `64MHz`, flash `512KB`, RAM `64KB` 🦋
- **`board_ststm32_ublox_evk_odin_w2`** — platform `platform_ststm32`, debug tool **External**, MCU `STM32F439ZIY6`, `168MHz`, flash `2MB`, RAM `256KB` 🌸
- **`board_ststm32_mtb_ublox_odin_w2`** — platform `platform_ststm32`, debug tool **External**, MCU `STM32F439ZIY6`, `168MHz`, flash `2MB`, RAM `256KB` 🌸
- **`board_nxplpc_lpc11u35_y5_mbug`** — platform `platform_nxplpc`, debug tool **External**, MCU `LPC11U35`, `48MHz`, flash `64KB`, RAM `10KB` 🍓
- **`board_nordicnrf51_nrf51822_y5_mbug`** — platform `platform_nordicnrf51`, debug tool **On-board**, MCU `NRF51822`, `16MHz`, flash `256KB`, RAM `16KB` 🦋

---

# 💅 CMSIS-DAP 💅

okay bestie so here's the tea on <pink>CMSIS-DAP</pink> ✨

CMSIS-DAP is <hotpink>generally implemented as an on-board interface chip</hotpink>, providing direct USB connection from a development board to a debugger running on a host computer on one side, and over <cyan>JTAG</cyan> (<lavender>Joint Test Action Group</lavender>) or <cyan>SWD</cyan> (<lavender>Serial Wire Debug</lavender>) to the target device to access the <purple>Coresight DAP</purple> on the other. Official reference can be found here. 🫶

---

## 🎀 Contents 🎀

- <pink>Configuration</pink>
- <pink>Drivers</pink>
- <pink>Platforms</pink>
- <pink>Frameworks</pink>
- <pink>Boards</pink>

---

## ⚙️ Configuration ⚙️

You can configure debugging tool using `projectconf_debug_tool` option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = cmsis-dap


If you would like to use this tool for firmware uploading, please change upload protocol:

[env:myenv] platform = ... board = ... debug_tool = cmsis-dap upload_protocol = cmsis-dap


More options: 👀

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

## 🛠️ Drivers 🛠️

### <blue>Windows</blue>

Please install Windows serial driver and check "USB Driver Installation" guide for your board. 💖

### <mint>Mac</mint>

Not required. ✨ easy peasy, no notes, we love that for you

### <peach>Linux</peach>

Please install "udev" rules `faq_udev_rules`. If you already installed them before, please check that your rules are up-to-date or repeat steps. 🧚

> ngl bestie, if you skipped the udev step you're gonna have a bad time — go check your rules are current or just run the steps again, fr fr 💀

### ✨ Platforms ✨

okay bestie, this is the part where we meet the ✨platforms✨ — every one of these is a thing you can build for, and no I am not gatekeeping a single one of them 💅

- **`platform_atmelsam`** — Atmel | SMART is out here serving Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures. We're talking a range from 8KB to 2MB of Flash, plus a rich peripheral and feature mix. it's giving *tiny but mighty* 🦋

- **`platform_freescalekinetis`** — Freescale Kinetis Microcontrollers is a whole family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs bring exceptional low-power performance, scalability and feature integration. the compatibility?? <pink>iconic</pink> 🎀

- **`platform_maxim32`** — Maxim's microcontrollers are the low-power, efficient, and secure solution for those *challenging* embedded applications. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. <purple>security AND battery life??</purple> we love a multitasker 💜

- **`platform_nordicnrf51`** — The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. three protocols, one chip, no cap 🔥

- **`platform_nordicnrf52`** — The nRF52 Series are built for speed: carry out increasingly complex tasks in the shortest possible time and then return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. <cyan>main character SoC energy</cyan>, fr fr ⭐

- **`platform_nxplpc`** — The NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. that's the whole anatomy bestie, <mint>no mystery</mint> 🌸

- **`platform_ststm32`** — The STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. performance + DSP + low power in one range?? <hotpink>ate</hotpink> 💖

- **`platform_wiznet7500`** — The IOP (Internet Offload Processor) W7500 is the one-chip solution which integrates an ARM Cortex-M0, 128KB Flash and hardwired TCP/IP core for various embedded application platform especially requiring Internet of things 🧚

---

> ngl bestie, a hardwired TCP/IP core with an ARM Cortex-M0 and 128KB Flash all in one chip is lowkey the "one trip, everything in one bag" of embedded 🌈

## Frameworks 🧚✨

okay bestie, here's the whole framework roster — every single one, no skips, no cuts 💅

- **`framework_arduino`** — the Arduino Wiring-based framework, which lets u write cross-platform software to control devices attached to a wide range of Arduino boards, so u can make all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving "art kid meets engineer" and honestly? iconic 🎀
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. it simplifies software re-use, reduces the learning curve for new microcontroller developers, and cuts the time-to-market for devices. literally a glow-up for ur whole workflow 💖
- **`framework_libopencm3`** — the libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. open source queen behavior 👑
- **`framework_mbed`** — the mbed framework. the mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. it's built on the low-level ARM CMSIS APIs, allowing u to code down to the metal if needed. and on top of RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries has been built on top of the SDK by the mbed Developer Community. so many libraries bestie, we're fed 🍓
- **`framework_simba`** — Simba is an RTOS and build framework. it aims to make embedded programming easy and portable. short, sweet, slays ✨
- **`framework_spl`** — the ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. the idea is to save the user (the new user, in particular) from having to deal directly with the registers. protecting u from register hell, we love to see it 🙈
- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. portable AND fast, the duality 💅
- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. safety girlies rise up 🦋

---

## Boards 🌈

> **NOTE:**
> for more detailed board info please scroll the tables below by horizontal. (yes bestie, sideways. it's a whole vibe.)

okay so here's the board lineup, and i'm keeping every single number exactly as-is because the numbers are the moment fr fr 🔥

- **`board_nxplpc_lpc11u24_301`** — platform: `platform_nxplpc`; debug: `On-board`; MCU: `LPC11U24`; frequency: `48MHz`; flash: `32KB`; RAM: `8KB` ✨
- **`board_atmelsam_mzeropro`** — platform: `platform_atmelsam`; debug: `On-board`; MCU: `SAMD21G18A`; frequency: `48MHz`; flash: `256KB`; RAM: `32KB` 💖
- **`board_nordicnrf52_nano33ble`** — platform: `platform_nordicnrf52`; debug: `External`; MCU: `NRF52840`; frequency: `64MHz`; flash: `960KB`; RAM: `256KB` 🧚
- **`board_atmelsam_zero`** — platform: `platform_atmelsam`; debug: `On-board`; MCU: `SAMD21G18A`; frequency: `48MHz`; flash: `256KB`; RAM: `32KB` 🌸

- **`board_atmelsam_samr21_xpro`** — <cyan>`platform_atmelsam`</cyan> ✨ On-board, and it's serving `SAMR21G18A` at `48MHz` with `256KB` of flash and `32KB` of RAM 🦋
- **`board_atmelsam_samd21g18a`** — <cyan>`platform_atmelsam`</cyan> ✨ On-board, `SAMD21G18A` chip, `48MHz`, `256KB` flash, `32KB` RAM 💖
- **`board_atmelsam_samc21_xpro`** — <cyan>`platform_atmelsam`</cyan> ✨ On-board, `SAMC21J18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_samd21_xpro`** — <cyan>`platform_atmelsam`</cyan> ✨ On-board, `SAMD21J18A`, `48MHz`, `256KB` flash, `32KB` RAM 🎀
- **`board_atmelsam_saml21_xpro_b`** — <cyan>`platform_atmelsam`</cyan> ✨ On-board, `SAML21J18B`, `48MHz`, `256KB` flash, `32KB` RAM 💜
- **`board_nordicnrf51_bbcmicrobit`** — <cyan>`platform_nordicnrf51`</cyan> ✨ On-board, `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM — yes the micro:bit, iconic 👑
- **`board_nordicnrf52_laird_bl652_dvk`** — <cyan>`platform_nordicnrf52`</cyan> ✨ On-board, `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 💅
- **`board_nordicnrf52_laird_bl654_dvk`** — <cyan>`platform_nordicnrf52`</cyan> ✨ On-board, `NRF52840`, `64MHz`, `1MB` flash, `256KB` RAM 🔥
- **`board_nxplpc_lpc4330_m4`** — <cyan>`platform_nxplpc`</cyan> ✨ On-board, `LPC4330`, `204MHz`, `8MB` flash, `264KB` RAM — the way that's EIGHT megabytes, no cap 😭
- **`board_nordicnrf51_calliope_mini`** — <cyan>`platform_nordicnrf51`</cyan> ✨ On-board, `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM 🎵
- **`board_nxplpc_elektor_cocorico`** — <cyan>`platform_nxplpc`</cyan> ✨ On-board, `LPC812`, `30MHz`, `16KB` flash, `4KB` RAM — smol but valid 🍓
- **`board_nordicnrf52_delta_dfbm_nq620`** — <cyan>`platform_nordicnrf52`</cyan> ✨ On-board, `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 🌈
- **`board_nordicnrf51_dfcm_nnn40`** — <cyan>`platform_nordicnrf51`</cyan> ✨ On-board, `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM ⭐
- **`board_nordicnrf51_delta_dfcm_nnn50`** — <cyan>`platform_nordicnrf51`</cyan> ✨ On-board, `NRF51822`, `32MHz`, `256KB` flash, `16KB` RAM 🦋
- **`board_nordicnrf52_electronut_blip`** — <cyan>`platform_nordicnrf52`</cyan> ✨ On-board, `NRF52840`, `64MHz`, `1MB` flash, `256KB` RAM 💖
- **`board_nordicnrf52_electronut_papyr`** — <cyan>`platform_nordicnrf52`</cyan> ✨ On-board, `NRF52840`, `64MHz`, `1MB` flash, `256KB` RAM 📄
- **`board_nxplpc_lpc4088_dm`** — <cyan>`platform_nxplpc`</cyan> ✨ On-board, `LPC4088`, `120MHz`, `512KB` flash, `96KB` RAM 🌸
- **`board_nxplpc_lpc4088`** — <cyan>`platform_nxplpc`</cyan> ✨ On-board, `LPC4088`, `120MHz`, `512KB` flash, `96KB` RAM 💜
- **`board_freescalekinetis_IBMEthernetKit`** — <cyan>`platform_freescalekinetis`</cyan> ✨ On-board, `MK64FN1M0VLL12`, `120MHz`, `1MB` flash, `256KB` RAM 🌐
- **`board_freescalekinetis_frdm_k20d50m`** — <cyan>`platform_freescalekinetis`</cyan> ✨ On-board, `MK20DX128VLH5`, `48MHz`, `128KB` flash, `16KB` RAM 🎀
- **`board_freescalekinetis_frdm_k22f`** — <cyan>`platform_freescalekinetis`</cyan> ✨ On-board, `MK22FN512VLH12`, `120MHz`, `512KB` flash, `128KB` RAM 💅
- **`board_freescalekinetis_frdm_k64f`** — <cyan>`platform_freescalekinetis`</cyan> ✨ On-board, `MK64FN1M0VLL12`, `120MHz`, `1MB` flash, `256KB` RAM 🔥
- **`board_freescalekinetis_frdm_k66f`** — <cyan>`platform_freescalekinetis`</cyan> ✨ On-board, `MK66FN2M0VMD18`, `180MHz`, `2MB` flash, `256KB` RAM — two whole megabytes of flash bestie, she's thriving 😭👑

---

and the roster just keeps going, so stay with me 🫶

okay bestie we're still in the board roll-call, keep your eyes on the prize 👑 here's the next chunk, every single one of them, no cap:

- **`board_freescalekinetis_frdm_k82f`** — platform `platform_freescalekinetis`, On-board, MCU `MK82FN256VLL15`, `150MHz`, `256KB` flash, `256KB` RAM ✨
- **`board_freescalekinetis_frdm_kl05z`** — platform `platform_freescalekinetis`, On-board, MCU `MKL05Z32VFM4`, `48MHz`, `32KB` flash, `4KB` RAM 💖
- **`board_freescalekinetis_frdm_kl25z`** — platform `platform_freescalekinetis`, On-board, MCU `MKL25Z128VLK4`, `48MHz`, `128KB` flash, `16KB` RAM 🌸
- **`board_freescalekinetis_frdm_kl27z`** — platform `platform_freescalekinetis`, On-board, MCU `MKL27Z64VLH4`, `48MHz`, `64KB` flash, `16KB` RAM 🦋
- **`board_freescalekinetis_frdm_kl43z`** — platform `platform_freescalekinetis`, On-board, MCU `MKL43Z256VLH4`, `48MHz`, `256KB` flash, `32KB` RAM 🎀
- **`board_freescalekinetis_frdm_kl46z`** — platform `platform_freescalekinetis`, On-board, MCU `MKL46Z256VLL4`, `48MHz`, `256KB` flash, `32KB` RAM 💜
- **`board_freescalekinetis_frdm_kw41z`** — platform `platform_freescalekinetis`, On-board, MCU `MKW41Z512VHT4`, `48MHz`, `512KB` flash, `128KB` RAM 🔥
- **`board_freescalekinetis_hexiwear`** — platform `platform_freescalekinetis`, External, MCU `MK64FN1M0VDC12`, `120MHz`, `1MB` flash, `256KB` RAM ⭐

---

- **`board_nordicnrf52_holyiot_yj16019`** — platform `platform_nordicnrf52`, External, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 🧚
- **`board_nordicnrf51_wallbot_ble`** — platform `platform_nordicnrf51`, On-board, MCU `NRF51822`, `16MHz`, `128KB` flash, `16KB` RAM 🌈
- **`board_ststm32_rhombio_l476dmw1k`** — platform `platform_ststm32`, On-board, MCU `STM32L476VGT6`, `80MHz`, `1MB` flash, `128KB` RAM 💅
- **`board_nxplpc_lpc11u68`** — platform `platform_nxplpc`, On-board, MCU `LPC11U68`, `50MHz`, `256KB` flash, `36KB` RAM 🍓
- **`board_nxplpc_lpc824`** — platform `platform_nxplpc`, On-board, MCU `LPC824`, `30MHz`, `32KB` flash, `8KB` RAM 🫶
- **`board_nordicnrf52_nrf52832_mdk`** — platform `platform_nordicnrf52`, On-board, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM ✨
- **`board_nordicnrf52_nrf52840_mdk`** — platform `platform_nordicnrf52`, On-board, MCU `NRF52840`, `64MHz`, `1MB` flash, `256KB` RAM 👑
- **`board_maxim32_max32600mbed`** — platform `platform_maxim32`, On-board, MCU `MAX32600`, `24MHz`, `256KB` flash, `32KB` RAM 💖
- **`board_maxim32_maxwsnenv`** — platform `platform_maxim32`, External, MCU `MAX32610`, `24MHz`, `256KB` flash, `32KB` RAM 🦋
- **`board_ststm32_mbed_connect_odin`** — platform `platform_ststm32`, On-board, MCU `STM32F439ZIY6`, `168MHz`, `2MB` flash, `256KB` RAM 🔥
- **`board_atmelsam_moteino_zero`** — platform `platform_atmelsam`, External, MCU `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_nxplpc_lpc812`** — platform `platform_nxplpc`, On-board, MCU `LPC812`, `30MHz`, `16KB` flash, `4KB` RAM 🎀
- **`board_nxplpc_lpc54114`** — platform `platform_nxplpc`, On-board, MCU `LPC54114J256BD64`, `100MHz`, `256KB` flash, `192KB` RAM 💜
- **`board_nxplpc_lpc11u24`** — platform `platform_nxplpc`, On-board, MCU `LPC11U24`, `48MHz`, `32KB` flash, `8KB` RAM ⭐
- **`board_nxplpc_lpc1768`** — platform `platform_nxplpc`, On-board, MCU `LPC1768`, `96MHz`, `512KB` flash, `64KB` RAM 🌈

> lowkey obsessed with how many of these NXP LPC girlies there are, they're literally everywhere and honestly? iconic. the way the `platform_nxplpc` fam just keeps showing up 💅

we're still going bestie, hold my hand, more coming 🫶

okay continuing the board list, we are <pink>still</pink> in it, grab a snack bestie 🍓 this is the part where the flash sizes start flexing 💅

- **`board_nordicnrf51_nrf51_beacon`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM
- **`board_nordicnrf52_thingy_52`** — platform <cyan>`platform_nordicnrf52`</cyan>, <peach>External</peach>, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM
- **`board_nordicnrf51_nrf51_dongle`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM
- **`board_nordicnrf51_nrf51_mkit`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `16MHz`, `128KB` flash, `16KB` RAM
- **`board_nordicnrf51_nrf51_dk`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM
- **`board_nordicnrf52_nrf52_dk`** — platform <cyan>`platform_nordicnrf52`</cyan>, <lavender>On-board</lavender>, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM
- **`board_nordicnrf52_nrf52840_dk`** — platform <cyan>`platform_nordicnrf52`</cyan>, <lavender>On-board</lavender>, MCU `NRF52840`, `64MHz`, `1MB` flash, `256KB` RAM

> not the `1MB` flash and `256KB` RAM on that last one. it's giving main character energy, no cap 👑

---

- **`board_nordicnrf51_redBearLabBLENano`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `16MHz`, `256KB` flash, `32KB` RAM
- **`board_nordicnrf52_redbear_blenano2`** — platform <cyan>`platform_nordicnrf52`</cyan>, <lavender>On-board</lavender>, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM
- **`board_nordicnrf52_redbear_blend2`** — platform <cyan>`platform_nordicnrf52`</cyan>, <lavender>On-board</lavender>, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM
- **`board_nordicnrf51_redBearLab`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM

the way the RedBear family just keeps showing up 😭 three of them in a row, obsessed

- **`board_nordicnrf52_sdt52832b`** — platform <cyan>`platform_nordicnrf52`</cyan>, <peach>External</peach>, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM
- **`board_nordicnrf51_seeedArchBLE`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `16MHz`, `128KB` flash, `16KB` RAM
- **`board_nordicnrf51_seeedArchLink`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM
- **`board_nxplpc_seeedArchPro`** — platform <cyan>`platform_nxplpc`</cyan>, <lavender>On-board</lavender>, MCU `LPC1768`, `96MHz`, `512KB` flash, `64KB` RAM

okay hold up, `board_nxplpc_seeedArchPro` out here with `96MHz`?? in a sea of `16MHz` and `32MHz`?? she ate 🔥

- **`board_nordicnrf51_seeedTinyBLE`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM
- **`board_nordicnrf51_hrm1017`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM

---

- **`board_nxplpc_lpc1114fn28`** — platform <cyan>`platform_nxplpc`</cyan>, <lavender>On-board</lavender>, MCU `LPC1114FN28`, `48MHz`, `32KB` flash, `4KB` RAM
- **`board_nxplpc_ssci824`** — platform <cyan>`platform_nxplpc`</cyan>, <lavender>On-board</lavender>, MCU `LPC824`, `30MHz`, `32KB` flash, `8KB` RAM
- **`board_nordicnrf51_ty51822r3`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM
- **`board_nordicnrf51_vbluno51`** — platform <cyan>`platform_nordicnrf51`</cyan>, <lavender>On-board</lavender>, MCU `NRF51822`, `16MHz`, `128KB` flash, `32KB` RAM
- **`board_nordicnrf52_vbluno52`** — platform <cyan>`platform_nordicnrf52`</cyan>, <lavender>On-board</lavender>, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM
- **`board_wiznet7500_wizwiki_w7500`** — platform <cyan>`platform_wiznet7500`</cyan>, <lavender>On-board</lavender>, MCU `WIZNET7500`, `48MHz`, `128KB` flash, `48KB` RAM

and `4KB` RAM on `board_nxplpc_lpc1114fn28`... it's giving *cozy* 🧚 tiny little memory palace, we respect it

---

okay bestie that's the batch, and the list is literally still going, so do NOT close the terminal, more coming 💖✨

---

- **`board_wiznet7500_wizwiki_w7500eco`** — platform: `platform_wiznet7500`, debug: On-board, MCU: `WIZNET7500ECO`, clock: 48MHz, flash: 128KB, RAM: 48KB 🌸

---

- **`board_wiznet7500_wizwiki_w7500p`** — platform: `platform_wiznet7500`, debug: On-board, MCU: `WIZNET7500P`, clock: 48MHz, flash: 128KB, RAM: 48KB 🌸

---

- **`board_ststm32_sakuraio_evb_01`** — platform: `platform_ststm32`, debug: On-board, MCU: `STM32F411RET6`, clock: 100MHz, flash: 1MB, RAM: 128KB ✨

---

- **`board_nxplpc_ubloxc027`** — platform: `platform_nxplpc`, debug: On-board, MCU: `LPC1768`, clock: 96MHz, flash: 512KB, RAM: 64KB 💅

---

- **`board_ststm32_ublox_c030_n211`** — platform: `platform_ststm32`, debug: External, MCU: `STM32F437VG`, clock: 180MHz, flash: 1MB, RAM: 256KB 🔥

---

- **`board_ststm32_ublox_c030_u201`** — platform: `platform_ststm32`, debug: External, MCU: `STM32F437VG`, clock: 180MHz, flash: 1MB, RAM: 256KB 🔥

---

- **`board_nordicnrf51_nrf51822_y5_mbug`** — platform: `platform_nordicnrf51`, debug: On-board, MCU: `NRF51822`, clock: 16MHz, flash: 256KB, RAM: 16KB 🦋

---

okay bestie real talk, the same <purple>board id</purple> → <cyan>platform</cyan> → <mint>debug probe situation</mint> → <yellow>MCU</yellow> → <peach>clock speed</peach> → <hotpink>flash</hotpink> → <lavender>RAM</lavender> pipeline keeps rolling, and the list is *not* done yet 😭 there's more coming, don't you dare close the pager 💖

<pink>ESP-Prog</pink> is one of Espressif's development and debugging tools, bestie, and it's literally doing the most — its functions include automatic firmware downloading, serial communication, and JTAG online debugging. 💅

Okay so the tea ☕: ESP-Prog's automatic firmware downloading and serial communication functions are supported on <green>both</green> the `ESP8266` and `ESP32` platforms, while the JTAG online debugging is supported <hotpink>only</hotpink> on the `ESP32` platform. Official reference can be found <lavender>here</lavender>. 👑

---

## 🎀 Contents 🎀

- Configuration
- Drivers
- Wiring Connections
- Tutorials
- Platforms
- Frameworks
- Boards

---

## ✨ Configuration ✨

You can configure the debugging tool using the `projectconf_debug_tool` option in `projectconf`, fr fr:

[env:myenv] platform = ... board = ... debug_tool = esp-prog


If you would like to use this tool for firmware uploading, please change the upload protocol, bestie — it's giving setup era 🦋:

[env:myenv] platform = ... board = ... debug_tool = esp-prog upload_protocol = esp-prog


More options 👇

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

## 💖 Drivers 💖

### <cyan>Windows</cyan>

- Step-by-step guide: Drivers, Zadig, Wiring
- Video tutorial

### <purple>Mac</purple>

macOS contains the default `FTDIUSBSerialDriver` driver which conflicts with debug tools which are based on this chip. FTDI Chip company recommends removing this default driver from a system. Everything should work after system rebooting. See detailed instruction in official application note (Page 16, Section 4: Uninstalling FTDI Drivers on OS X) `AN134`: FTDI Drivers Installation guide for MAC OS X. 😭

> no cap, that default driver is the villain of the story — yeet it and reboot.

### <mint>Linux</mint>

Please install "udev" rules `faq_udev_rules`. If you already installed them before, please check that your rules are up-to-date or repeat the steps. 🫶

---

## 🌈 Wiring Connections 🌈

`[image]`

- **`1`** — ESP-Prog JTAG 10-Pin Connector → Board JTAG Pin **`VDD`** — Description: Positive Supply Voltage — Power supply for JTAG 💅

---

…and the pin table is *still* going, bestie 💀 it's giving "I will never end". Anyway, this last chunk of it is the JTAG / debug pinout, under a header column that got cut off reading **`interface drivers`**. Here's what it's saying:

- **`3`** → **`GND`** — "Digital ground" 🫶
- **`2`** → **`ESP_TMS`** — "Test Mode State"
- **`4`** → **`ESP_TCK`** — "JTAG Return Test Clock"
- **`6`** → **`ESP_TDO`** — "Test Data Out"
- **`8`** → **`ESP_TDI`** — "Test Data In"

That's the whole fragment. No cap, it just ends there mid-table. 🙈

---

## ✨ Tutorials ✨

- <pink>**Use the PlatformIO Debugger on the ESP32 Using an ESP-prog**</pink> — that's the one and only tutorial listed here, and honestly? iconic. 💅

---

## 🌸 Platforms 🌸

One row, one platform, zero notes:

- **`platform_espressif32`** — "Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications." 🦋

---

## 🎀 Frameworks 🎀

Three of them, all stacked up like a little framework charcuterie board:

- **`framework_arduino`** — "Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences." ✨
- **`framework_espidf`** — "Espressif IoT Development Framework. Official development framework for ESP32."
- **`framework_simba`** — "Simba is an RTOS and build framework. It aims to make embedded programming easy and portable." 🧚

---

## 👑 Boards 👑

> **NOTE:** For more detailed board information please scroll tables below by horizontal. 👈 literally just scroll sideways bestie, the table is wider than your terminal and it knows it

Then the header row drops: **Name**, **Platform**, **Debug**, **MCU**, **Frequency**, **Flash**, **RAM** — and here's the one board this part actually shows us:

Name Platform Debug MCU Frequency Flash RAM board_espressif32_esp32cam platform_espressif32 External ESP32 240MHz 4MB 320KB


So: <purple>**`board_espressif32_esp32cam`**</purple>, on <cyan>**`platform_espressif32`**</cyan>, with **External** debug, an **`ESP32`** MCU, running at **`240MHz`**, with **`4MB`** of flash and **`320KB`** of RAM. Ate. 💖

And the table keeps rolling on from here, obviously — there's more where that came from… 🌈

okay bestie we're still deep in the board list and it is *not* slowing down 💅 real quick tho — that second column? still blank for every single one of these. iconic of it. anyway, carry on:

- **`board_espressif32_alksesp32`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · <cyan>4MB</cyan> flash · <cyan>320KB</cyan> RAM 🫶
- **`board_espressif32_az-delivery-devkit-v4`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · <hotpink>16MB</hotpink> flash · <hotpink>520KB</hotpink> RAM 🌈 (the way she ate the memory budget fr fr)
- **`board_espressif32_featheresp32`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM ✨
- **`board_espressif32_briki_abc_esp32`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · <peach>3.25MB</peach> flash · 320KB RAM 🍓
- **`board_espressif32_briki_mbc-wb_esp32`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · <peach>3.25MB</peach> flash · 320KB RAM 🍓
- **`board_espressif32_d-duino-32`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 💜
- **`board_espressif32_esp32doit-devkit-v1`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM ✨
- **`board_espressif32_pocket_32`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 🎀
- **`board_espressif32_fm-devkit`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 📻
- **`board_espressif32_esp32vn-iot-uno`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 🌸
- **`board_espressif32_espectro32`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 👑
- **`board_espressif32_espino32`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 🦋
- **`board_espressif32_esp-wrover-kit`** — <pink>platform_espressif32</pink> · <yellow>`On-board`</yellow> · ESP32 @ 240MHz · 4MB flash · 320KB RAM 🔥 — okay the ONLY one in this batch rocking `On-board` instead of `External`, she's the main character, periodt
- **`board_espressif32_esp32dev`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 💖
- **`board_espressif32_firebeetle32`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 🐞
- **`board_espressif32_frogboard`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 🐸
- **`board_espressif32_heltec_wifi_lora_32`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 📡
- **`board_espressif32_heltec_wifi_lora_32_V2`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · <hotpink>8MB</hotpink> flash · 320KB RAM 📡💅
- **`board_espressif32_heltec_wireless_stick`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · <hotpink>8MB</hotpink> flash · 320KB RAM 🪄
- **`board_espressif32_hornbill32dev`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 🐦
- **`board_espressif32_hornbill32minima`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 🐦
- **`board_espressif32_iotaap_magnolia`** — <pink>platform_espressif32</pink> · `External` · ESP32 @ 240MHz · 4MB flash · 320KB RAM 🌺

---

lowkey a vibe check on this whole chunk: every single one is <pink>`platform_espressif32`</pink>, every single one is an <blue>ESP32</blue> running at <green>240MHz</green>, and the RAM is <cyan>320KB</cyan> across the board — except `board_espressif32_az-delivery-devkit-v4` who said "actually no" and brought <hotpink>520KB</hotpink> 😭 queen behavior. Flash is mostly <cyan>4MB</cyan>, with a lil <peach>3.25MB</peach> duo, an <hotpink>8MB</hotpink> duo, and that one <hotpink>16MB</hotpink> overachiever. And `board_espressif32_esp-wrover-kit` is the only `On-board` in the building, everyone else said `External`. no cap.

more rows coming, don't you dare scroll away 🫶

okay continuing the board parade, bestie, no breaks, we're still deep in the <pink>ESP32</pink> section and every single one of these is living its truth 💅

quick reminder of the columns since we're mid-roll: name, then a blank column that's just sitting there being mysterious 🫶, then the platform, then <cyan>External</cyan>, then the MCU (<cyan>ESP32</cyan>), then clock speed, then flash, then RAM. here we go:

- **`board_espressif32_mhetesp32devkit`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 🦋
- **`board_espressif32_mhetesp32minikit`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` ✨
- **`board_espressif32_node32s`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 💖
- **`board_espressif32_nodemcu-32s`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 🌸
- **`board_espressif32_esp32-devkitlipo`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 🔥
- **`board_espressif32_esp32-evb`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 👑
- **`board_espressif32_esp32-gateway`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 🌈
- **`board_espressif32_lopy`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 🧚
- **`board_espressif32_lopy4`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `1.25MB` 💜 (yes bestie, the LoPy4 got that extra RAM, it's giving main character)

the blank column? still blank. still iconic. we respect it 🙈

- **`board_espressif32_sg-o_airMon`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` ⭐
- **`board_espressif32_wesp32`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 🎀
- **`board_espressif32_esp32thing`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 🍓
- **`board_espressif32_sparkfun_lora_gateway_1-channel`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 💀 (longest name in the game, it ate and left no crumbs)

---

and the TTGO crew rolls up, every one of them `240MHz` `4MB`, all on `platform_espressif32`, all <cyan>External</cyan>, all `ESP32` MCU 💅

- **`board_espressif32_ttgo-lora32-v1`** — `320KB` RAM 🦋
- **`board_espressif32_ttgo-lora32-v2`** — `320KB` RAM 🌸
- **`board_espressif32_ttgo-t-beam`** — `1.25MB` RAM 🔥 (the beam said "more memory, more problems, more slay")
- **`board_espressif32_ttgo-t1`** — `320KB` RAM ✨

more boards, more joy, keep scrolling bestie:

- **`board_espressif32_vintlabs-devkit-v1`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 🌈
- **`board_espressif32_lolin_d32`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 💖
- **`board_espressif32_lolin_d32_pro`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 💜
- **`board_espressif32_lolin32`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` 🧚
- **`board_espressif32_wemos_d1_mini32`** — `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` · `320KB` ⭐

> no cap, every single entry in this stretch is the same spec sheet except the two `1.25MB` RAM girlies (`board_espressif32_lopy4` and `board_espressif32_ttgo-t-beam`). the rest are `320KB` and proud 🫶

and we're still going, don't you dare close the tab, the board list is long and we are committed 💅

- **`board_espressif32_wemosbat`** — platform <purple>`platform_espressif32`</purple>, External, MCU ESP32, 240MHz, 4MB flash, 320KB RAM ✨
- **`board_espressif32_xinabox_cw02`** — platform <purple>`platform_espressif32`</purple>, External, MCU ESP32, 240MHz, 4MB flash, 320KB RAM 💖
- **`board_espressif32_iotbusio`** — platform <purple>`platform_espressif32`</purple>, External, MCU ESP32, 240MHz, 4MB flash, 320KB RAM 🦋
- **`board_espressif32_iotbusproteus`** — platform <purple>`platform_espressif32`</purple>, External, MCU ESP32, 240MHz, 4MB flash, 320KB RAM 🌸

okay bestie we're still deep in the board table and it's giving "endless scroll energy" but every single one of these little guys is a real board you can target, no cap 💅 like, the way that `board_espressif32_wemosbat` is just sitting there with its External badge and its 240MHz main character moment? iconic. `board_espressif32_xinabox_cw02` too. and then `board_espressif32_iotbusio` and `board_espressif32_iotbusproteus` — the iotbus duo, slay. all four of them are riding the same vibe check: platform `platform_espressif32`, External, ESP32 chip, 240MHz clock, 4MB of flash, 320KB of RAM. same specs, different glow 🫶

> lowkey important: keep reading down the list, bestie — the table keeps going and we're not skipping a single row, periodt. 👑

---

---

okay bestie we're still deep in the chip-vendor section and this one's a whole *moment* 💅

# 🌈 FTDI Chip 🌈

FTDI Chip develops innovative silicon solutions that enhance interaction with today's technology. When a designer needs to add a USB port, rest assured that FTDI Chip has a full range of USB solutions to get the job done. Official reference can be found `here`. 🫶

---

## 📋 Contents 📋

- Configuration
- Drivers
- Platforms
- Frameworks
- Boards

---

## ⚙️ Configuration ⚙️

You can configure debugging tool using `projectconf_debug_tool` option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = ftdi


If you would like to use this tool for firmware uploading, please change upload protocol:

[env:myenv] platform = ... board = ... debug_tool = ftdi upload_protocol = ftdi


More options:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

## 🚗 Drivers 🚗

### 🪟 Windows 🪟

- Step-by-step guide: Drivers, Zadig, Wiring
- Video tutorial

### 🍎 Mac 🍎

macOS contains default `FTDIUSBSerialDriver` driver which conflicts with debug tools which are based on this chip. FTDI Chip company recommends removing this default driver from a system. Everything should work after system rebooting. See detailed instruction in official application note (Page 16, Section 4: Uninstalling FTDI Drivers on OS X) `AN134: FTDI Drivers Installation guide for MAC OS X`

### 🐧 Linux 🐧

Please install "udev" rules `faq_udev_rules`. If you already installed them before, please check that your rules are up-to-date or repeat steps.

---

## 🧩 Platforms 🧩

- **`platform_espressif32`** — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

- **`platform_riscv_gap`** — GreenWaves GAP8 IoT

application processor enables the <green>cost-effective development, deployment and autonomous operation</green> of intelligent sensing devices that capture, analyze, classify and act on the fusion of rich data sources such as images, sounds or vibrations. 🦋

- **`platform_shakti`** — <pink>Shakti</pink> is an open-source initiative by the <yellow>RISE group at IIT-Madras</yellow>, and bestie, they are *not* just building open source, production grade processors — they're also out here building all the associated components like interconnect fabrics, verification tools, storage controllers, peripheral IPs and SOC tools. 💅✨

- **`platform_sifive`** — <cyan>SiFive</cyan> brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. 🔥 literally faster *and* cheaper, we love to see it.

---

## 🌈 Frameworks 🌈

- **`framework_arduino`** — the <peach>Arduino Wiring-based Framework</peach> lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀 main character energy fr fr.

- **`framework_espidf`** — the <mint>Espressif IoT Development Framework</mint>. It's the **official** development framework for <hotpink>ESP32</hotpink>. 👑

- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the <purple>SiFive Freedom E Platform</purple>. 🌸

- **`framework_mbed`** — The mbed framework The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level <blue>ARM CMSIS APIs</blue>, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the 😭

> ok that last one just <rainbow>stops mid-sentence</rainbow> and honestly? same. more coming tho, don't move. 🫶

- **`framework_pulp-os`** — PULP is a silicon-proven Parallel Ultra Low Power platform targeting high energy efficiencies. The platform is organized in clusters of RISC-V cores that share a tightly-coupled data memory. <purple>(RISC-V girlies stay winning fr fr 🫶)</purple>

- **`framework_shakti-sdk`** — A software development kit for developing applications on Shakti class of processors

- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. <mint>portable?? we love a low-effort baddie ✨</mint>

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <cyan>safety AND security?? she's responsible AND cute, we stan 😌</cyan>

<pink>(and bestie, the row right above this chunk was still going — it was wrapping up a mention of the <green>mbed Developer Community.</green> — so if you were mid-scroll, that's your missing half, ily 💖)</pink>

---

## 🌸 Boards 🌸

> **NOTE:** For more detailed board information please scroll tables below by horizontal. <yellow>(yes literally sideways, i know, it's giving chaos but we move 🙈)</yellow>

---

- **`board_shakti_artix7_35t`**
  - Platform: `platform_shakti`
  - Debug: On-board
  - MCU: `E-CLASS`
  - Frequency: `50MHz`
  - Flash: `0B`
  - RAM: `128KB`

- **`board_shakti_artix7_100t`**
  - Platform: `platform_shakti`
  - Debug: On-board
  - MCU: `C-CLASS`
  - Frequency: `50MHz`
  - Flash: `0B`
  - RAM: `128MB`

- **`board_sifive_e310-arty`**
  - Platform: `platform_sifive`
  - Debug: On-board
  - MCU: `FE310`
  - Frequency: `450MHz`
  - Flash: `16MB`
  - RAM: `256MB`

- **`board_espressif32_esp-wrover-kit`**
  - Platform: `platform_espressif32`
  - Debug: On-board
  - MCU: `ESP32`
  - Frequency: `240MHz`
  - Flash: `4MB`
  - RAM: `320KB`

- **`board_riscv_gap_gapuino`**
  - Platform: `platform_riscv_gap`
  - Debug: On-board
  - MCU: `GAP8`
  - Frequency: `250MHz`
  - Flash: `64MB`
  - RAM: `8MB`

- **`board_sifive_hifive-unleashed`**
  - Platform: `platform_sifive`
  - Debug: On-board
  - MCU: `FU540`
  - Frequency: `1500MHz`
  - Flash: `32MB`
  - RAM: `8GB` <hotpink>(8GB of RAM on a board?? she's not like other girls, she's main character energy 👑)</hotpink>

- **`board_sifive_hifive1`**
  - Platform: `platform_sifive`
  - Debug: On-board
  - MCU: `FE310`
  - Frequency: `320MHz`
  - Flash: `16MB`
  - RAM: `16KB` <lavender>(16KB babe… tiny but mighty, we respect the hustle 🎀)</lavender>

# 💅 GD-LINK 💅

okay bestie, let's talk about <pink>GD-Link</pink> ✨

GD-Link adapter is a <hotpink>three-in-one multi-function development tool</hotpink> for GD32 series of MCUs. It provides a CMSIS-DAP debugger port with JTAG/SWD interface. Official reference can be found here. 🫶

---

## 🌸 Contents 🌸

- Configuration
- Drivers
- Wiring Connections
  - JTAG Interface
  - Serial Wire Mode Interface (SWD)
- Platforms
- Frameworks
- Boards

---

## 🎀 Configuration 🎀

You can configure debugging tool using `projectconf_debug_tool` option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = gd-link


If you would like to use this tool for firmware uploading, please change upload protocol:

[env:myenv] platform = ... board = ... debug_tool = gd-link upload_protocol = gd-link


More options:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

## 🦋 Drivers 🦋

**Windows** — Check vendor recommendations.

**Mac** — Not required. 🍓 (we love a low-effort queen)

**Linux** — Please install `"udev"` rules `faq_udev_rules`. If you already installed them before, please check that your rules are up-to-date or repeat steps.

> ngl bestie, if your rules are crusty and outdated, the whole vibe check fails. go re-run those steps. 💀

---

## 🌈 Wiring Connections 🌈

### ⭐ JTAG Interface ⭐

- **`+3V3`** → **`VCC`** — Positive Supply Voltage — Power supply for JTAG interface drivers
- **`TMS/IO`** → **`TMS`** — Test Mode State pin
- **`TCK/CLK`** → **`TCK`** — JTAG Return Test Clock
- **`TDO/SWO`** → **`TDO`** — Test Data Out pin
- **`TDI`** → **`TDI`** — Test Data In pin
- **`GDN`** → **`GND`** — Digital ground
- **`TReset`** → **`RESET`** — Connect this pin to the (active low) reset input of the target CPU

- **`+3V3`** — board side `VCC` — <mint>Positive Supply Voltage</mint> — aka the power supply for the JTAG interface drivers 💅
- **`GND`** — board side `GND` — <green>Digital ground</green> ⚡
- **`TMS/IO`** — board side `SWDIO` — <cyan>Data I/O</cyan> 🦋
- **`TCK/CLK`** — board side `SWCLK` — <purple>Clock</purple> 🕰️
- **`TReset`** — board side `RESET` — connect this pin to the (active low) reset input of the target CPU 🔁

---

### 🌈 Platforms

- **`platform_gd32v`** — bestie, the GigaDevice GD32V device is a <pink>32-bit general-purpose microcontroller</pink> based on the <hotpink>RISC-V</hotpink> core, and it's giving an impressive balance of processing power, reduced power consumption and peripheral set. no notes, honestly ✨
- **`platform_nuclei`** — find professional RISC-V Processor IP in Nuclei, the first professional RISC-V IP company in Mainland China, matching all your requirements in the AIoT Era 🌸

---

### 🧚 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving ✨main character✨ energy fr fr 💖
- **`framework_gd32vf103-sdk`** — GigaDevice GD32VF103 Firmware Library (SDK) 🎀
- **`framework_nuclei-sdk`** — Open Source Software Development Kit for the Nuclei N/NX processors 👑

---

### 👑 Boards

> <yellow>NOTE:</yellow> for more detailed board information please scroll tables below by horizontal. yes bestie, horizontally. the columns are LONG. we're so back 🙈

---

and now the board table header rolls in, iconic as always:

- **`Name`**
- **`Platform`**
- **`Debug`**
- **`MCU`**
- **`Frequency`**
- **`Flash`**
- **`RAM`**

okay the board table is STILL going bestie, we are deep in it now, and this stretch is <pink>RISC-V o'clock</pink> 🌈 because every single row here is a GD32VF103 and that's the RISC-V one, not the ARM one, iykyk 💅

same columns as before, just reading them out row by row so nothing gets lost:

- **`board_nuclei_gd32vf103v_eval`** — platform: `platform_nuclei` · connection: **External** · MCU: `GD32VF103VBT6` · clock: `108MHz` · flash: `128KB` · RAM: `32KB`
- **`board_nuclei_gd32vf103v_rvstar`** — platform: `platform_nuclei` · connection: **On-board** · MCU: `GD32VF103VBT6` · clock: `108MHz` · flash: `128KB` · RAM: `32KB`
- **`board_gd32v_gd32vf103v-eval`** — platform: `platform_gd32v` · connection: **External** · MCU: `GD32VF103VBT6` · clock: `108MHz` · flash: `128KB` · RAM: `32KB`
- **`board_gd32v_sipeed-longan-nano`** — platform: `platform_gd32v` · connection: **External** · MCU: `GD32VF103CBT6` · clock: `108MHz` · flash: `128KB` · RAM: `32KB`
- **`board_gd32v_sipeed-longan-nano-lite`** — platform: `platform_gd32v` · connection: **External** · MCU: `GD32VF103C8T6` · clock: `108MHz` · flash: `64KB` · RAM: `20KB`
- **`board_gd32v_wio_lite_risc-v`** — platform: `platform_gd32v` · connection: **External** · MCU: `GD32VF103CBT6` · clock: `108MHz` · flash: `128KB` · RAM: `32KB`

---

quick vibe check on what you're actually looking at here, because the little details matter:

- the **`nuclei`** ones live under `platform_nuclei` and the **`gd32v`** ones live under `platform_gd32v` — same silicon family, two different platform homes, no drama 🫶
- see how `board_nuclei_gd32vf103v_rvstar` is the only one tagged **On-board**? yeah, that's the debugger/probe situation — it's <hotpink>built right in</hotpink> instead of you plugging an external one in ✨
- the **Longan Nano Lite** is the lil sis of the group 💀 it's got `GD32VF103C8T6` with only `64KB` flash and `20KB` RAM, while literally everyone else here is flexing `128KB` / `32KB`. not a flaw, just a smaller snack 🍓
- and note the naming chaos: `board_gd32v_sipeed-longan-nano` uses dashes, `board_gd32v_wio_lite_risc-v` mixes dashes AND underscores, and `board_gd32v_gd32vf103v-eval` is yet another shape. yes bestie, board IDs are like that. copy them <cyan>character for character</cyan> or the build will simply not find them 😭

> heads up fr fr: those board IDs are <yellow>exact strings</yellow> — that `risc-v` with the hyphen, that `longan-nano-lite`, all of it. typo = no board = sad little error message 💀

the rows keep coming so stay with me, we're not done yet 👑

- **`3V3`** → **`VCC`** — <mint>Positive Supply Voltage</mint> — literally the power supply for the JTAG interface drivers, bestie, don't skip it 💅
- **`GND`** → **`GND`** — <cyan>Digital ground</cyan> — the ground, the vibe anchor, the one that keeps everything from getting feral ⚡
- **`12`** → **`TDI`** — <lavender>Test Data In pin</lavender> — data goes IN here, hence the name, iykyk 🎀
- **`14`** → **`TMS`** — <purple>Test Mode State pin</purple> — controls the state machine, very main character energy 👑
- **`13`** → **`TCK`** — <peach>JTAG Return Test Clock</peach> — the clock, the heartbeat, the metronome of the whole operation ⏰
- **`15`** → **`TDO`** — <mint>Test Data Out pin</mint> — and data comes OUT here, completing the little circle of life 🦋

---

> <yellow>okay bestie real talk for a sec</yellow> — that last row got cut off mid-table in the source, so if you're wiring this up, <hotpink>double-check the pin numbers against the official reference</hotpink> before you plug anything in. No cap. 🙈

- **`EN`**, **`RESET`** — wire this pin to the *(active low)* reset input of the target CPU, ok? (that's `EN` for ESP32, bestie 💅)

---

## 🦋 Platforms 🦋

- **`platform_espressif32`** — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. ✨
- **`platform_kendryte210`** — Kendryte K210 is an AI capable RISCV64 dual core SoC. 🧠💜

---

## 🌸 Frameworks 🌸

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 👑
- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK without OS support 🌈
- **`framework_kendryte-freertos-sdk`** — Kendryte SDK with FreeRTOS support 🔥
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. 🫶

---

## 👑 Boards 👑

> **NOTE:** For more detailed board information please scroll tables below by horizontal. 👀 *(yes the table is WIDE, we been knew)*

- **`board_espressif32_esp32cam`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB 📸
- **`board_espressif32_alksesp32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB ⭐
- **`board_espressif32_az-delivery-devkit-v4`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 16MB · RAM: 520KB 💖

- **`board_espressif32_featheresp32`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_briki_abc_esp32`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · <yellow>3.25MB</yellow> flash · 320KB RAM
- **`board_espressif32_briki_mbc-wb_esp32`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · <yellow>3.25MB</yellow> flash · 320KB RAM
- **`board_espressif32_d-duino-32`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_esp32doit-devkit-v1`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_pocket_32`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_fm-devkit`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_esp32vn-iot-uno`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_espectro32`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_espino32`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_esp-wrover-kit`** — <cyan>`platform_espressif32`</cyan> · <hotpink>On-board</hotpink> · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_esp32dev`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_firebeetle32`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_frogboard`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_heltec_wifi_lora_32`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_heltec_wifi_lora_32_V2`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · <hotpink>8MB</hotpink> flash · 320KB RAM
- **`board_espressif32_heltec_wireless_stick`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · <hotpink>8MB</hotpink> flash · 320KB RAM
- **`board_espressif32_hornbill32dev`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_hornbill32minima`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_iotaap_magnolia`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_mhetesp32devkit`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_mhetesp32minikit`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM
- **`board_espressif32_node32s`** — <cyan>`platform_espressif32`</cyan> · External · ESP32 · 240MHz · 4MB flash · 320KB RAM

---

okay bestie real talk, that's the ESP32 section of the board roster and it is <rainbow>long</rainbow> 💅 every single one of these is the same family — `platform_espressif32`, ESP32 silicon, <green>240MHz</green>, <purple>320KB</purple> of RAM — so the only things actually moving are the flash size and whether the thing says <hotpink>On-board</hotpink> instead of <cyan>External</cyan>. 🙈

the way most of them sit at a comfy 4MB flash, except the two `briki` boards lowkey doing <yellow>3.25MB</yellow> and the `heltec_wifi_lora_32_V2` plus the `heltec_wireless_stick` flexing <hotpink>8MB</hotpink> like they're the main characters 👑

and yes, `board_espressif32_esp-wrover-kit` is the one little icon standing alone in the <hotpink>On-board</hotpink> column. periodt. ✨

no skipping, no summarising — if you were looking for your board, it's in that list, and if it isn't, keep scrolling, we are <red>not</red> done yet 🦋

<purple>okay bestie we are STILL in the board table and honestly? this is the part where the ESP32 girlies and the K210 girlies finally get their moment 💅</purple> each line here is one board: the board ID, the platform it comes from, `External` (that's the type column, she's giving imported), the chip, the clock speed, the flash, and the RAM. no cap, that's the whole tea. 🫖

---

- **`board_espressif32_nodemcu-32s`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM ✨
- **`board_espressif32_esp32-devkitlipo`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 💖
- **`board_espressif32_esp32-evb`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 🦋
- **`board_espressif32_esp32-gateway`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_lopy`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 🎀
- **`board_espressif32_lopy4`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `1.25MB` RAM 👑 <rainbow>(look at her RAM, she ate)</rainbow>
- **`board_espressif32_sg-o_airMon`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 💜
- **`board_espressif32_wesp32`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM ⭐

<purple>and now… a genre shift. the K210 section. she's faster, she's flashier, she's literally a different chip entirely. iykyk 🧚</purple>

---

- **`board_kendryte210_sipeed-maix-bit`** — `platform_kendryte210`, `External`, K210 at `400MHz`, `16MB` flash, `6MB` RAM 🔥
- **`board_kendryte210_sipeed-maix-bit-mic`** — `platform_kendryte210`, `External`, K210 at `400MHz`, `16MB` flash, `6MB` RAM 🔥
- **`board_kendryte210_sipeed-maix-go`** — `platform_kendryte210`, `External`, K210 at `400MHz`, `16MB` flash, `6MB` RAM 🔥
- **`board_kendryte210_sipeed-maix-one-dock`** — `platform_kendryte210`, `External`, K210 at `400MHz`, `16MB` flash, `6MB` RAM 🔥
- **`board_kendryte210_sipeed-maixduino`** — `platform_kendryte210`, `External`, K210 at `400MHz`, `16MB` flash, `6MB` RAM 🔥
- **`board_kendryte210_sipeed-MF1`** — `platform_kendryte210`, `External`, K210 at `400MHz`, `16MB` flash, `6MB` RAM 🔥

> <cyan>note that the board ID is `board_kendryte210_sipeed-MF1` — capital `MF`, capital `F`. type it exactly like that or the vibe check fails, bestie. 😭</cyan>

<purple>and we're back to the ESP32s because of COURSE we are. she's everywhere. main character energy fr fr 🌈</purple>

---

- **`board_espressif32_esp32thing`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 💖
- **`board_espressif32_sparkfun_lora_gateway_1-channel`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM ✨
- **`board_espressif32_ttgo-lora32-v1`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_ttgo-lora32-v2`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_ttgo-t-beam`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `1.25MB` RAM 👑 <rainbow>(another `1.25MB` baddie, we love to see it)</rainbow>
- **`board_espressif32_ttgo-t1`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 🦋
- **`board_espressif32_vintlabs-devkit-v1`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 🎀
- **`board_espressif32_lolin_d32`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 💜
- **`board_espressif32_lolin_d32_pro`** — `platform_espressif32`, `External`, ESP32 at `240MHz`, `4MB` flash, `320KB` RAM 💜

---

<purple>quick recap of the vibes so far, since the list is getting long: almost every ESP32 board up in here is `240MHz` / `4MB` flash / `320KB` RAM, except `board_espressif32_lopy4` and `board_espressif32_ttgo-t-beam`, who both bring `1.25MB` RAM to the function. 🍓 and every single K210 board is `400MHz` / `16MB` flash / `6MB` RAM, no exceptions, they're a matched set. 🧚</purple>

> <yellow>reminder bestie: those board IDs are literal strings, not ✨vibes✨. copy them character for character — underscores, dashes, capitals, the `1-channel` bit, all of it. one wrong letter and it's giving error message instead of giving compiled firmware. 💀</yellow>

- **`board_espressif32_lolin32`** — platform `platform_espressif32`, type `External`, MCU `ESP32`, `240MHz`, `4MB`, `320KB` 💅
- **`board_espressif32_wemos_d1_mini32`** — platform `platform_espressif32`, type `External`, MCU `ESP32`, `240MHz`, `4MB`, `320KB` ✨
- **`board_espressif32_wemosbat`** — platform `platform_espressif32`, type `External`, MCU `ESP32`, `240MHz`, `4MB`, `320KB` 🦋
- **`board_espressif32_xinabox_cw02`** — platform `platform_espressif32`, type `External`, MCU `ESP32`, `240MHz`, `4MB`, `320KB` 🌸
- **`board_espressif32_iotbusio`** — platform `platform_espressif32`, type `External`, MCU `ESP32`, `240MHz`, `4MB`, `320KB` 🎀
- **`board_espressif32_iotbusproteus`** — platform `platform_espressif32`, type `External`, MCU `ESP32`, `240MHz`, `4MB`, `320KB` 💖

---

okay bestie real talk, this whole lil' cluster right here? <pink>same energy, every single one</pink> 😭 they're all riding the exact same spec sheet — `platform_espressif32`, `External`, `ESP32` brain, `240MHz` clock, `4MB`, `320KB` — the only thing that changes is the name on the door. So if you're scrolling looking for a plot twist, <purple>there isn't one</purple>, and that's honestly kind of iconic of them 🫶

and yeah, one of the columns is just… empty? <lavender>a lil' void, a lil' ghost</lavender> 👻 not a single character in there for any of these boards. not me pointing it out but also not *not* pointing it out 💀 it's giving "reserved for later" and later never came, fr fr.

> <yellow>heads up tho</yellow> — `240MHz`, `4MB`, `320KB` are exactly what the page says and I am *not* out here guessing what each one means for you. the table said it, I'm repeating it, periodt. no cap, no additions, no invented lore 🧚

anyway keep scrolling, the list keeps going and I'm right here with you ⭐

├──────────────────────────────────┼────────────────┴─────┼──────────┼─────┴───┼──────┴────┼──┴────┼──────┴┼───────┴────────┘


(okay yes we're still inside the table bestie, the lines are just, like, *vibes* ✨ moving on)

# 🦋 J-LINK 🦋

<pink>SEGGER J-Links</pink> are the most widely used line of debug probes available today, no cap. They've proven their value for more than **10 years** with over **400,000 units sold**, including OEM versions and on-board solutions. So why is everyone so obsessed? Because of the unparalleled performance, the extensive feature set, the large number of supported CPUs, and the fact that they play nice with all popular development environments. The official reference can be found here. 👑

- J-Link Supported Devices

Also, peep `debugging_tool_custom` — that's the debugging configuration with J-Link GDB Server. 🫶

---

## 📋 Contents

- Configuration
  - Custom Server
- Drivers
- Wiring Connections
  - JTAG Interface
  - Serial Wire Mode Interface (SWD)
- Platforms
- Frameworks
- Boards

---

## ⚙️ Configuration

You can configure the debugging tool using the `projectconf_debug_tool` option in `projectconf`, like so:

[env:myenv] platform = ... board = ... debug_tool = jlink


And if you want to use this tool for firmware uploading too? Bestie, you gotta change the upload protocol:

[env:myenv] platform = ... board = ... debug_tool = jlink

; SWD interface upload_protocol = jlink

; JTAG interface upload_protocol = jlink-jtag


More options for your reading pleasure:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

## 🧚 Custom Server

[env:debug_jlink] platform = ststm32 framework = mbed board = nucleo_f446re

debug_tool = jlink debug_port = :2331

debug_server = /full/path/to/JLinkGDBServerCL -singlerun -if SWD -select USB -port 2331 -device STM32F446RE


---

## 🎀 Drivers

### Windows

1. Start the debugging session using `pioide`. PlatformIO will install the J-Link software dependencies for you, it's giving *effortless* 💅
2. Navigate to `projectconf_pio_core_dir/packages/tool-jlink/USBDriver`

- <pink>**Windows**</pink> — just run `InstDrivers.exe`. that's it bestie, that's the whole task 💅

- <pink>**Mac**</pink> — not required. nothing to do, go touch grass 🌸

- <pink>**Linux**</pink> — okay so you *do* need to install the `"udev"` rules, see `faq_udev_rules`. and if you already installed them at some point before? pls double-check your rules are up-to-date, or just redo the steps. no cap, stale rules will ghost you 🙈

---

### 🦋 Wiring Connections

[image]

like, there's a picture here in the original and it is lowkey essential, so go look at it. 📸

---

### ✨ JTAG Interface

the J-Link JTAG 20-Pin Connector → Board JTAG Pin → Description situation, in order:

- **`1`** → **`VCC`** — Positive Supply Voltage — power supply for JTAG interface drivers ⚡

- **`4`** → **`GND`** — Digital ground 🌍

- **`5`** → **`TDI`** — Test Data In pin 📥

- **`7`** → **`TMS`** — Test Mode State pin 🎛️

- **`9`** → **`TCK`** — JTAG Return Test Clock ⏰

- **`13`** → **`TDO`** — Test Data Out pin 📤

- **`15`** → **`RESET`** — connect this pin to the (active low) reset input of the target CPU (that's `EN` for ESP32) 🔁

> fr fr don't skip the RESET row, it's giving "optional" but it is NOT optional in spirit. 🫶

---

### 🌈 Serial Wire Mode Interface (SWD)

and now the SWD glow-up, J-Link SWD 20-Pin Connector → Board SWD Pin → Description:

- **`1`** → **`VCC`** — Positive Supply Voltage — power supply for JTAG interface drivers ⚡

- **`4`** → **`GND`** — Digital ground 🌍

- **`7`** → **`SWDIO`** — Data I/O 🔄

- **`9`** → **`SWCLK`** — Clock ⏰

- **`15`** → **`RESET`** — connect this pin to the (active low) reset input of the target CPU 🔁

---

<purple>notice how SWD is literally the same energy but with fewer pins? iconic. fewer wires, same main character debugging moment. 👑</purple>

- **`platform_aceinna_imu`** — an open-source, embedded dev platform for Aceinna IMU hardware, so you can run your own custom algorithms and navigation code straight on Aceinna IMU/INS hardware. <purple>your code, their silicon, iconic behavior</purple> 💅

- **`platform_atmelsam`** — Atmel | SMART serves up Flash-based ARM products built on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from `8KB` all the way up to `2MB` of Flash, plus a rich peripheral and feature mix. <cyan>tiny to chonky, they got range</cyan> ✨

- **`platform_espressif32`** — Espressif Systems is a privately held fabless semiconductor company, and they make wireless communications and Wi-Fi chips that are widely used in mobile devices and Internet of Things applications. <mint>no fab, all vibes, still everywhere</mint> 📶

- **`platform_freescalekinetis`** — Freescale Kinetis Microcontrollers is a family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs offer exceptional low-power performance, scalability and feature integration. <green>lowkey sipping power, highkey doing everything</green> 🔋

- **`platform_gd32v`** — the GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the RISC-V core, with an impressive balance of processing power, reduced power consumption and peripheral set. <blue>RISC-V girlies rise</blue> 🦋

- **`platform_infineonxmc`** — Infineon designed the XMC microcontrollers for real-time critical applications with an industry-standard core, and the XMC microcontrollers can be integrated with the Arduino platform. <yellow>Arduino-coded and real-time ready, bestie</yellow> 🎀

- **`platform_kendryte210`** — Kendryte K210 is an AI capable RISCV64 dual core SoC. <hotpink>dual core, AI capable, RISC-V, it's giving main character</hotpink> 🔥

- **`platform_maxim32`** — Maxim's microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation. <purple>security AND battery life, the way that's possible</purple> 🔐

- **`platform_nordicnrf51`** — the Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary `2.4GHz` protocols such as Gazell. <cyan>multi-protocol princess behavior</cyan> 📡

- **`platform_nordicnrf52`** — the nRF52 Series are built for speed, so they can carry out increasingly complex tasks in the shortest possible time and then return to sleep, conserving precious battery power. They have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. <mint>wake up, slay, go back to sleep. the dream</mint> 😴

- **`platform_nuclei`** — find professional RISC-V Processor IP in Nuclei, the first professional RISC-V IP company in Mainland China, matching all your requirements in the AIoT Era. <lavender>first in the game fr fr</lavender> 🧚

- **`platform_nxpimxrt`** — the i.MX RT series of crossover processors features the Arm Cortex-M core, real-time functionality and MCU usability at a cost-effective price. <green>crossover episode but make it silicon</green> 💚

- **`platform_nxplpc`** — the NXP LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. <blue>core, RAM, flash, debug, peripherals — the whole friend group</blue> 👑

- **`platform_shakti`** — Shakti is an open-source initiative by the RISE group at IIT-Madras, which is not only building open source, production grade processors, but also associated components like interconnect fabrics, verification tools, storage controllers, peripheral IPs and SOC tools. <rainbow>not just processors — the entire ecosystem ate</rainbow> 🌈

- **`platform_sifive`** — SiFive brings the power of

...and the description just keeps going, bestie: <lavender>open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before.</lavender> 💖

---

- **`platform_siliconlabsefm32`** — okay so this one is the <cyan>Silicon Labs EFM32 Gecko</cyan> 32-bit microcontroller (MCU) family, and it includes devices that offer flash memory configurations up to 256 kB, 32 kB of RAM and CPU speeds up to 48 MHz. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals, making it ideal for battery operated applications and other systems requiring high performance and low-energy consumption. 🔋✨
- **`platform_ststm32`** — the <pink>STM32</pink> family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. it's giving <rainbow>versatile icon</rainbow> fr fr 💅
- **`platform_teensy`** — <mint>Teensy</mint> is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port. tiny board, main character energy 🦋
- **`platform_wiznet7500`** — the IOP (Internet Offload Processor) <purple>W7500</purple> is the one-chip solution which integrates an ARM Cortex-M0, 128KB Flash and hardwired TCP/IP core for various embedded application platform especially requiring Internet of things 🌐

---

### ✨ Frameworks ✨

so this lil table has two columns, bestie — <yellow>Name</yellow> and <yellow>Description</yellow> — and here's every single row, no skips, no cap:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_cmsis`** — the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. 💜
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 🔥
- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform 🌸
- **`framework_gd32vf103-sdk`** — GigaDevice GD32VF103 Firmware Library (SDK) ⭐
- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK without OS support 🧚
- **`framework_kendryte-freertos-sdk`** — Kendryte SDK with FreeRTOS support 🫶
- **`framework_libopencm3`** — the libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP

- **`framework_mbed`** — bestie, this is the mbed framework and it's *giving* hardware abstraction that's actually intuitive. The mbed SDK was designed to be "intuitive and concise, yet powerful enough to build complex projects" — like, both?? iconic. It's built on the low-level ARM CMSIS APIs so you can still code down to the metal if you need to 💅. And on top of RTOS, USB and Networking libraries, the mbed Developer Community built a whole cookbook of hundreds of reusable peripheral and module libraries. Obsessed fr fr.

- **`framework_nuclei-sdk`** — Open Source Software Development Kit for the Nuclei N/NX processors. slay. 🦋

- **`framework_shakti-sdk`** — a software development kit for developing applications on the Shakti class of processors ✨

- **`framework_simba`** — Simba is an RTOS and build framework, and its whole goal is making embedded programming easy and portable. we love a portable king 👑

- **`framework_spl`** — the ST Standard Peripheral Library, aka a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea (and this is so real) is to save the user — the *new* user in particular — from having to deal directly with the registers. no cap, we've all been there 😭

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, which enables portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency. it's giving versatile 💜

- **`framework_zephyr`** — the Zephyr Project, a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind 🛡️✨

---

## 🎀 Boards 🎀

> **NOTE:** for more detailed board information please scroll the tables below by horizontal. (yes bestie, horizontally — the terminal is wide, live a little 💅)

Here's the board table, and I'm keeping every single cell exactly as it is:

Name Platform Debug MCU Frequency Flash RAM


- **`board_ststm32_1bitsy_stm32f415rgt`** — Platform: `platform_ststm32` · Debug: External · MCU: `STM32F415RGT` · Frequency: `168MHz` · Flash: `1MB` · RAM: `128KB`
- **`board_ststm32_disco_f412zg`** — Platform: `platform_ststm32` · Debug: On-board · MCU: `STM32F412ZGT6` · Frequency: `100MHz` · Flash: `1MB` · RAM: `256KB`
- **`board_ststm32_disco_f723ie`** — Platform: `platform_ststm32` · Debug: On-board · MCU: `STM32F723IEK6` · Frequency: `216MHz` · Flash: `512KB` · RAM: `192KB`
- **`board_ststm32_armed_v1`** — Platform: `platform_ststm32` · Debug: External · MCU: `STM32F407VET6` · Frequency: `168MHz` · Flash: `512KB` · RAM: `192KB`
- **`board_ststm32_rumba32_f446ve`** — Platform: `platform_ststm32` · Debug: External · MCU: `STM32F446RET6` · Frequency: `180MHz` · Flash: `512KB` · RAM: `128KB`
- **`board_ststm32_remram_v1`** — Platform: `platform_ststm32` · Debug: On-board · MCU: `STM32F765VIT6` · Frequency: `216MHz` · Flash: `2MB` · RAM: `512KB`

---

<rainbow>and bestie, that's the vibe check on the frameworks and boards — every last detail preserved, every last emoji earned 💖</rainbow>

…and we're still in the board lineup, bestie, the roster is **endless** and honestly? respect 💅 every row is a real board you can target, so let's keep scrolling, no skipping, we don't do that here ✨

- **`board_ststm32_st3dp001_eval`** — platform `platform_ststm32` · On-board · `STM32F401VGT6` · `84MHz` · `512KB` flash · `96KB` RAM 🦋
- **`board_ststm32_b96b_argonkey`** — platform `platform_ststm32` · External · `STM32F412CG` · `100MHz` · `1MB` flash · `256KB` RAM
- **`board_ststm32_b96b_f446ve`** — platform `platform_ststm32` · On-board · `STM32F446VET6` · `168MHz` · `512KB` flash · `128KB` RAM
- **`board_ststm32_b96b_neonkey`** — platform `platform_ststm32` · External · `STM32F411CE` · `100MHz` · `512KB` flash · `128KB` RAM 💖

<purple>argonkey… neonkey… the naming committee ATE, no notes</purple> 🎀

- **`board_nordicnrf52_96b_nitrogen`** — platform `platform_nordicnrf52` · External · `NRF52832` · `64MHz` · `512KB` flash · `64KB` RAM
- **`board_espressif32_esp32cam`** — platform `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` flash · `320KB` RAM 📸
- **`board_espressif32_alksesp32`** — platform `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` flash · `320KB` RAM
- **`board_nxplpc_lpc11u24_301`** — platform `platform_nxplpc` · On-board · `LPC11U24` · `48MHz` · `32KB` flash · `8KB` RAM 🫶

okay `LPC11U24` with `32KB` of flash is giving *cozy*, it's giving *minimalist*, it's giving we-are-not-installing-a-whole-framework-on-this-one 😭 still valid though, all boards are valid, we love all boards

- **`board_espressif32_az-delivery-devkit-v4`** — platform `platform_espressif32` · External · `ESP32` · `240MHz` · `16MB` flash · `520KB` RAM 🔥

> not me noticing `16MB` of flash on that one… that's a LOT of flash bestie, that's room for *feelings* ✨

- **`board_aceinna_imu_LowCostRTK`** — platform `platform_aceinna_imu` · On-board · `STM32F469NIH6` · `180MHz` · `1MB` flash · `384KB` RAM
- **`board_aceinna_imu_OpenIMU300`** — platform `platform_aceinna_imu` · External · `STM32F405RG` · `120MHz` · `1MB` flash · `128KB` RAM
- **`board_aceinna_imu_OpenIMU300ZA`** — platform `platform_aceinna_imu` · External · `STM32F405RG` · `120MHz` · `1MB` flash · `128KB` RAM
- **`board_aceinna_imu_OpenIMU330`** — platform `platform_aceinna_imu` · External · `STM32L431CB` · `80MHz` · `128KB` flash · `64KB` RAM
- **`board_aceinna_imu_OpenRTK`** — platform `platform_aceinna_imu` · External · `STM32F469IG` · `180MHz` · `1MB` flash · `384KB` RAM
- **`board_aceinna_imu_OpenRTK330L`** — platform `platform_aceinna_imu` · External · `STM32F469IG` · `180MHz` · `1MB` flash · `384KB` RAM 🌈

the `platform_aceinna_imu` girlies really said "we do inertial measurement units and we do them *thoroughly*" and I have to respect the commitment 🧚

---

- **`board_nordicnrf52_adafruit_feather_nrf52832`** — platform `platform_nordicnrf52` · External · `NRF52832` · `64MHz` · `512KB` flash · `64KB` RAM 🪶
- **`board_atmelsam_adafruit_circuitplayground_m0`** — platform `platform_atmelsam` · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM
- **`board_atmelsam_adafruit_crickit_m0`** — platform `platform_atmelsam` · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM
- **`board_espressif32_featheresp32`** — platform `platform_espressif32` · External · `ESP32` · `240MHz` · `4MB` flash · `320KB` RAM
- **`board_nordicnrf52_adafruit_feather_nrf52840_sense`** — platform `platform_nordicnrf52` · External · `NRF52840` · `64MHz` · `796KB` flash · `243KB` RAM 👑

<pink>quick vibe check on those numbers, since we're all reading them together:</pink>

- the columns go: board ID 💖 platform 🦋 the On-board / External thing 🌸 the MCU chip ⭐ the clock speed in `MHz` ✨ the flash size 💅 and the RAM size 🎀
- `board_nordicnrf52_adafruit_feather_nrf52840_sense` is the chonkiest nRF in this batch — `796KB` flash, `243KB` RAM — and yes those numbers are *weirdly specific*, that's just what the page says, no cap 🫶
- `board_aceinna_imu_OpenIMU330` is the tiny one here at `128KB` flash / `64KB` RAM, and honestly? she's doing her best and it's working 💜

and we are STILL not done with the board table, bestie, there's more coming, stay with me 🦋

---

okay continuing the board list bestie, the Adafruit run is *long* and honestly? iconic of them 💅 every single row, no skips, let's go 🦋

- **`board_atmelsam_adafruit_feather_m0`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`
- **`board_atmelsam_adafruit_feather_m0_express`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`
- **`board_atmelsam_adafruit_feather_m4`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51J19A`, `120MHz`, flash `512KB`, RAM `192KB`
- **`board_ststm32_adafruit_feather_f405`** — platform <cyan>`platform_ststm32`</cyan>, <yellow>External</yellow>, chip `STM32F405RGT6`, `168MHz`, flash `1MB`, RAM `128KB`
- **`board_nordicnrf52_adafruit_feather_nrf52840`** — platform <cyan>`platform_nordicnrf52`</cyan>, <yellow>External</yellow>, chip `NRF52840`, `64MHz`, flash `796KB`, RAM `243KB`
- **`board_atmelsam_adafruit_gemma_m0`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD21E18A`, `48MHz`, flash `256KB`, RAM `32KB`
- **`board_atmelsam_adafruit_grandcentral_m4`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51P20A`, `120MHz`, flash `1MB`, RAM `256KB`

> not the `1MB` flash and `256KB` RAM combo showing UP on the grandcentral bestie 😭 she's giving main character energy fr fr

- **`board_atmelsam_adafruit_hallowing`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`
- **`board_atmelsam_adafruit_hallowing_m4`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51J19A`, `120MHz`, flash `496KB`, RAM `192KB`
- **`board_atmelsam_adafruit_itsybitsy_m0`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`
- **`board_atmelsam_adafruit_itsybitsy_m4`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51G19A`, `120MHz`, flash `512KB`, RAM `192KB`
- **`board_atmelsam_adafruit_monster_m4sk`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51G19A`, `120MHz`, flash `496KB`, RAM `192KB`

<lavender>monster m4sk my beloved 🎀 okay moving on</lavender>

- **`board_atmelsam_adafruit_metro_m0`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`
- **`board_atmelsam_adafruit_metro_m4`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51J19A`, `120MHz`, flash `512KB`, RAM `192KB`
- **`board_atmelsam_adafruit_metro_m4_airliftlite`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51J19A`, `120MHz`, flash `512KB`, RAM `192KB`
- **`board_atmelsam_adafruit_pygamer_advance_m4`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51J20A`, `120MHz`, flash `1MB`, RAM `256KB`
- **`board_atmelsam_adafruit_pygamer_m4`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51J19A`, `120MHz`, flash `512KB`, RAM `192KB`
- **`board_atmelsam_adafruit_pyportal_m4`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51J20A`, `120MHz`, flash `1MB`, RAM `256KB`
- **`board_atmelsam_adafruit_pyportal_m4_titano`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51J20A`, `120MHz`, flash `1MB`, RAM `256KB`
- **`board_atmelsam_adafruit_trellis_m4`** — platform <cyan>`platform_atmelsam`</cyan>, <yellow>External</yellow>, chip `SAMD51J19A`, `120MHz`, flash `512KB`, RAM `192KB`

<peach>and that's the whole Adafruit slice of the table, every row accounted for, no cap ✨</peach>

<rainbow>💖 🦋 🌸 💅 🫶</rainbow>

- **`board_atmelsam_adafruit_trinket_m0`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21E18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_adafruit_pirkey`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21E18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_adafruit_pybadge_airlift_m4`** — <pink>`platform_atmelsam`</pink> · External · `SAMD51J20A` · `120MHz` · `1008KB` flash · `192KB` RAM

- **`board_atmelsam_adafruit_pybadge_m4`** — <pink>`platform_atmelsam`</pink> · External · `SAMD51J19A` · `120MHz` · `512KB` flash · `192KB` RAM

- **`board_ststm32_afroflight_f103cb`** — <blue>`platform_ststm32`</blue> · External · `STM32F103CBT6` · `72MHz` · `128KB` flash · `20KB` RAM

- **`board_atmelsam_due`** — <pink>`platform_atmelsam`</pink> · External · `AT91SAM3X8E` · `84MHz` · `512KB` flash · `96KB` RAM

- **`board_atmelsam_dueUSB`** — <pink>`platform_atmelsam`</pink> · External · `AT91SAM3X8E` · `84MHz` · `512KB` flash · `96KB` RAM

- **`board_atmelsam_mzeroUSB`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_mzeroproUSB`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_mzeropro`** — <pink>`platform_atmelsam`</pink> · On-board · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

okay bestie the whole MKR family is about to walk in single file and every single one of them is running the same chip, the same clock, the same memory, and I need you to know that's not a typo, that's just what the MKR lineup *is* 😭 consistency is a personality trait and they committed to it 💅

- **`board_atmelsam_mkrfox1200`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_mkrgsm1400`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_mkrnb1500`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_mkrwan1300`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_mkrwan1310`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_mkrwifi1010`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_mkr1000USB`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_atmelsam_mkrzero`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

- **`board_nordicnrf52_nano33ble`** — <purple>`platform_nordicnrf52`</purple> · External · `NRF52840` · `64MHz` · `960KB` flash · `256KB` RAM

- **`board_atmelsam_tian`** — <pink>`platform_atmelsam`</pink> · External · `SAMD21G18A` · `48MHz` · `256KB` flash · `32KB` RAM

> <yellow>reminder bestie:</yellow> every line above is *exactly* what the list gives you — the board ID on the left, then the platform it lives in, whether it's **External** or **On-board**, the MCU, the clock speed, the flash size and the RAM size. No guessing, no vibes-based estimates, I promise 🫶

and yes, the `nano33ble` is the one that lowkey breaks the streak with `NRF52840` at `64MHz` and `960KB` flash / `256KB` RAM — it's giving main character energy in a sea of `SAMD21G18A` and honestly? iconic ✨

okay bestie we're still deep in the board roster and it's lowkey giving ✨hardware catalog✨, so let's keep scrolling — every single one of these is real and every number is exactly what it says 💅

- **`board_atmelsam_zero`** — platform <pink>`platform_atmelsam`</pink>, on-board, MCU <cyan>`SAMD21G18A`</cyan>, `48MHz`, `256KB` flash, `32KB` RAM 🦋
- **`board_atmelsam_zeroUSB`** — platform <pink>`platform_atmelsam`</pink>, **external**, MCU <cyan>`SAMD21G18A`</cyan>, `48MHz`, `256KB` flash, `32KB` RAM 🔌
- **`board_ststm32_armstrap_eagle1024`** — platform <pink>`platform_ststm32`</pink>, on-board, MCU <cyan>`STM32F417VGT6`</cyan>, `168MHz`, `1MB` flash, `192KB` RAM 🔥
- **`board_ststm32_armstrap_eagle2048`** — platform <pink>`platform_ststm32`</pink>, on-board, MCU <cyan>`STM32F427VIT6`</cyan>, `168MHz`, `1.99MB` flash, `256KB` RAM 😭 (yes `1.99MB`, not `2MB`, that's just what it is, no cap)
- **`board_ststm32_armstrap_eagle512`** — platform <pink>`platform_ststm32`</pink>, on-board, MCU <cyan>`STM32F407VET6`</cyan>, `168MHz`, `512KB` flash, `192KB` RAM 💜
- **`board_shakti_artix7_35t`** — platform <pink>`platform_shakti`</pink>, on-board, MCU <cyan>`E-CLASS`</cyan>, `50MHz`, `0B` flash, `128KB` RAM 🫶 (`0B` flash, bestie — the FPGA vibe, iykyk)
- **`board_shakti_artix7_100t`** — platform <pink>`platform_shakti`</pink>, on-board, MCU <cyan>`C-CLASS`</cyan>, `50MHz`, `0B` flash, `128MB` RAM 🌈
- **`board_sifive_e310-arty`** — platform <pink>`platform_sifive`</pink>, on-board, MCU <cyan>`FE310`</cyan>, `450MHz`, `16MB` flash, `256MB` RAM 👑 absolute main character energy
- **`board_atmelsam_samr21_xpro`** — platform <pink>`platform_atmelsam`</pink>, on-board, MCU <cyan>`SAMR21G18A`</cyan>, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_samd21g18a`** — platform <pink>`platform_atmelsam`</pink>, on-board, MCU <cyan>`SAMD21G18A`</cyan>, `48MHz`, `256KB` flash, `32KB` RAM ⭐
- **`board_atmelsam_samc21_xpro`** — platform <pink>`platform_atmelsam`</pink>, on-board, MCU <cyan>`SAMC21J18A`</cyan>, `48MHz`, `256KB` flash, `32KB` RAM 🎀
- **`board_atmelsam_samd21_xpro`** — platform <pink>`platform_atmelsam`</pink>, on-board, MCU <cyan>`SAMD21J18A`</cyan>, `48MHz`, `256KB` flash, `32KB` RAM 💖
- **`board_atmelsam_saml21_xpro_b`** — platform <pink>`platform_atmelsam`</pink>, on-board, MCU <cyan>`SAML21J18B`</cyan>, `48MHz`, `256KB` flash, `32KB` RAM ✨
- **`board_nordicnrf51_bbcmicrobit`** — platform <pink>`platform_nordicnrf51`</pink>, on-board, MCU <cyan>`NRF51822`</cyan>, `16MHz`, `256KB` flash, `16KB` RAM 🍓 the micro:bit girlies stay winning
- **`board_nordicnrf52_laird_bl652_dvk`** — platform <pink>`platform_nordicnrf52`</pink>, on-board, MCU <cyan>`NRF52832`</cyan>, `64MHz`, `512KB` flash, `64KB` RAM 🧚
- **`board_nordicnrf52_laird_bl654_dvk`** — platform <pink>`platform_nordicnrf52`</pink>, on-board, MCU <cyan>`NRF52840`</cyan>, `64MHz`, `1MB` flash, `256KB` RAM 💅
- **`board_nxplpc_lpc4330_m4`** — platform <pink>`platform_nxplpc`</pink>, on-board, MCU <cyan>`LPC4330`</cyan>, `204MHz`, `8MB` flash, `264KB` RAM 🦋
- **`board_ststm32_black_f407ve`** — platform <pink>`platform_ststm32`</pink>, **external**, MCU <cyan>`STM32F407VET6`</cyan>, `168MHz`, `512KB` flash, `128KB` RAM 🔥
- **`board_ststm32_black_f407vg`** — platform <pink>`platform_ststm32`</pink>, **external**, MCU <cyan>`STM32F407VGT6`</cyan>, `168MHz`, `512KB` flash, `128KB` RAM 💀
- **`board_ststm32_black_f407ze`** — platform <pink>`platform_ststm32`</pink>, **external**, MCU <cyan>`STM32F407ZET6`</cyan>, `168MHz`, `512KB` flash, `128KB` RAM 🙈

---

> heads up bestie: notice how some of these say **On-board** and some say **External**? that's not a typo, that's literally the column telling you whether the chip lives on the board itself or you're bringing your own. don't mix em up 💜

and we are NOT done yet, there's still more of this list coming, so don't you dare close the terminal 🌟

- **`board_ststm32_black_f407zg`** — platform: `platform_ststm32`, and it's <cyan>External</cyan>, MCU `STM32F407ZGT6`, clocking `168MHz`, with `1MB` of flash and `128KB` of RAM 💖
- **`board_ststm32_blackpill_f103c8`** — platform: `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F103C8T6`, `72MHz`, `64KB` flash, `20KB` RAM ✨
- **`board_ststm32_blackpill_f103c8_128`** — platform: `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F103C8T6`, `72MHz`, `128KB` flash, `20KB` RAM 🎀
- **`board_ststm32_robotdyn_blackpill_f303cc`** — platform: `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F303CCT6`, `72MHz`, `256KB` flash, `40KB` RAM 🦋
- **`board_ststm32_blackpill_f401cc`** — platform: `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F401CCT6`, `84MHz`, `256KB` flash, `64KB` RAM 🌸
- **`board_ststm32_blue_f407ve_mini`** — platform: `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F407VET6`, `168MHz`, `512KB` flash, `128KB` RAM 💅
- **`board_ststm32_bluepill_f103c6`** — platform: `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F103C6T6`, `72MHz`, `32KB` flash, `10KB` RAM 🫶
- **`board_ststm32_bluepill_f103c8`** — platform: `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F103C8T6`, `72MHz`, `64KB` flash, `20KB` RAM 😭
- **`board_ststm32_bluepill_f103c8_128k`** — platform: `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F103C8T6`, `72MHz`, `128KB` flash, `20KB` RAM 🔥
- **`board_nordicnrf52_bluey`** — platform: `platform_nordicnrf52`, <cyan>External</cyan>, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 👑
- **`board_nordicnrf51_bluz_dk`** — platform: `platform_nordicnrf51`, <cyan>External</cyan>, MCU `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM 🌈
- **`board_espressif32_briki_abc_esp32`** — platform: `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32`, `240MHz`, `3.25MB` flash, `320KB` RAM ⭐
- **`board_atmelsam_briki_abc_samd21`** — platform: `platform_atmelsam`, <cyan>External</cyan>, MCU `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 💀
- **`board_espressif32_briki_mbc-wb_esp32`** — platform: `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32`, `240MHz`, `3.25MB` flash, `320KB` RAM 🙈
- **`board_atmelsam_briki_mbcwb_samd21`** — platform: `platform_atmelsam`, <cyan>External</cyan>, MCU `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🍓
- **`board_nxplpc_lpc11u35_501`** — platform: `platform_nxplpc`, <cyan>External</cyan>, MCU `LPC11U35`, `48MHz`, `64KB` flash, `10KB` RAM 🧚
- **`board_nordicnrf51_calliope_mini`** — platform: `platform_nordicnrf51`, <hotpink>On-board</hotpink> (yes bestie, this one's built in, no extra hardware run needed 💜), MCU `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM
- **`board_nordicnrf52_adafruit_cplaynrf52840`** — platform: `platform_nordicnrf52`, <cyan>External</cyan>, MCU `NRF52840`, `64MHz`, `796KB` flash, `243KB` RAM 💖
- **`board_nxplpc_elektor_cocorico`** — platform: `platform_nxplpc`, <hotpink>On-board</hotpink>, MCU `LPC812`, `30MHz`, `16KB` flash, `4KB` RAM ✨
- **`board_ststm32_coreboard_f401rc`** — platform: `platform_ststm32`, <cyan>External</cyan>, MCU `STM32F401RCT6`, `84MHz`, `256KB` flash, `64KB` RAM 🎀

---

<purple>okay and that's the run of boards right there — every single one, name for name, clock for clock, flash for flash, RAM for RAM, no skips no shortcuts 💅</purple>

okay bestie we're <pink>still</pink> in the board roster and honestly it's giving ✨ infinite scroll ✨ — but we do not skip a single row in this house, so here comes the next batch, every field intact, no cap 💅

- **`board_espressif32_d-duino-32`** — platform `platform_espressif32`, **External**, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 🦋
- **`board_espressif32_esp32doit-devkit-v1`** — platform `platform_espressif32`, **External**, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_nordicnrf52_delta_dfbm_nq620`** — platform `platform_nordicnrf52`, **On-board**, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 💜
- **`board_ststm32_demo_f030f4`** — platform `platform_ststm32`, **External**, MCU `STM32F030F4P6`, `48MHz`, `16KB` flash, `4KB` RAM 🎀
- **`board_atmelsam_digix`** — platform `platform_atmelsam`, **External**, MCU `AT91SAM3X8E`, `84MHz`, `512KB` flash, `96KB` RAM ⭐
- **`board_nxplpc_lpc1347`** — platform `platform_nxplpc`, **External**, MCU `LPC1347`, `72MHz`, `64KB` flash, `12KB` RAM 🍓
- **`board_espressif32_pocket_32`** — platform `platform_espressif32`, **External**, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 🔥
- **`board_nxplpc_lpc11u35`** — platform `platform_nxplpc`, **External**, MCU `LPC11U35`, `48MHz`, `64KB` flash, `10KB` RAM 🌈
- **`board_siliconlabsefm32_efm32gg_stk3700`** — platform `platform_siliconlabsefm32`, **On-board**, MCU `EFM32GG990F1024`, `48MHz`, `1MB` flash, `128KB` RAM 👑
- **`board_siliconlabsefm32_efm32lg_stk3600`** — platform `platform_siliconlabsefm32`, **On-board**, MCU `EFM32LG990F256`, `48MHz`, `256KB` flash, `32KB` RAM 🧚
- **`board_siliconlabsefm32_efm32wg_stk3800`** — platform `platform_siliconlabsefm32`, **On-board**, MCU `EFM32WG990F256`, `48MHz`, `256KB` flash, `32KB` RAM 💖
- **`board_siliconlabsefm32_efm32zg_stk3200`** — platform `platform_siliconlabsefm32`, **On-board**, MCU `EFM32ZG222F32`, `24MHz`, `32KB` flash, `4KB` RAM 🫶

---

> not me noticing the little column separators got <hotpink>wider</hotpink> mid-list 🙈 that's just the table stretching out, bestie — the vibe check says the format changed, the data did not.

and the roster keeps rolling, same fields every time, so let's gooo 🦋

- **`board_espressif32_fm-devkit`** — platform `platform_espressif32`, **External**, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM ✨
- **`board_espressif32_esp32vn-iot-uno`** — platform `platform_espressif32`, **External**, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 💫
- **`board_espressif32_espectro32`** — platform `platform_espressif32`, **External**, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_espino32`** — platform `platform_espressif32`, **External**, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 💅
- **`board_nordicnrf52_electronut_blip`** — platform `platform_nordicnrf52`, **On-board**, MCU `NRF52840`, `64MHz`, `1MB` flash, `256KB` RAM 💜
- **`board_nordicnrf52_electronut_papyr`** — platform `platform_nordicnrf52`, **On-board**, MCU `NRF52840`, `64MHz`, `1MB` flash, `256KB` RAM 🎀
- **`board_nxplpc_lpc4088_dm`** — platform `platform_nxplpc`, **On-board**, MCU `LPC4088`, `120MHz`, `512KB` flash, `96KB` RAM ⭐
- **`board_nxplpc_lpc4088`** — platform `platform_nxplpc`, **On-board**, MCU `LPC4088`, `120MHz`, `512KB` flash, `96KB` RAM 🌈

---

okay the two `board_nxplpc_lpc4088` entries are sitting right next to each other like twins matching outfits, and the two `electronut` boards are literally matching too — `NRF52840`, `64MHz`, `1MB`, `256KB`, same everything, iconic coordinated energy 👯

and no, we are <red>not</red> done, the list is still going, so stay with me bestie 💖

- **`board_ststm32_elmo_f411re`** — platform: `platform_ststm32` · board type: External · MCU: `STM32F411RET6` · 100MHz · 512KB flash · 128KB RAM <pink>💅</pink>
- **`board_espressif32_esp-wrover-kit`** — platform: `platform_espressif32` · board type: On-board · MCU: `ESP32` · 240MHz · 4MB flash · 320KB RAM <cyan>✨</cyan>
- **`board_espressif32_esp32dev`** — platform: `platform_espressif32` · board type: External · MCU: `ESP32` · 240MHz · 4MB flash · 320KB RAM <cyan>✨</cyan>
- **`board_freescalekinetis_IBMEthernetKit`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MK64FN1M0VLL12` · 120MHz · 1MB flash · 256KB RAM <mint>🦋</mint>
- **`board_ststm32_diymore_f407vgt`** — platform: `platform_ststm32` · board type: External · MCU: `STM32F407VGT6` · 168MHz · 512KB flash · 128KB RAM <pink>💅</pink>
- **`board_ststm32_fk407m1`** — platform: `platform_ststm32` · board type: External · MCU: `STM32F407VET6` · 168MHz · 512KB flash · 128KB RAM <pink>💅</pink>
- **`board_espressif32_firebeetle32`** — platform: `platform_espressif32` · board type: External · MCU: `ESP32` · 240MHz · 4MB flash · 320KB RAM <cyan>✨</cyan>
- **`board_freescalekinetis_frdm_k20d50m`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MK20DX128VLH5` · 48MHz · 128KB flash · 16KB RAM <mint>🦋</mint>
- **`board_freescalekinetis_frdm_k22f`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MK22FN512VLH12` · 120MHz · 512KB flash · 128KB RAM <mint>🦋</mint>
- **`board_freescalekinetis_frdm_k64f`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MK64FN1M0VLL12` · 120MHz · 1MB flash · 256KB RAM <mint>🦋</mint>
- **`board_freescalekinetis_frdm_k66f`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MK66FN2M0VMD18` · 180MHz · 2MB flash · 256KB RAM <mint>🦋</mint>
- **`board_freescalekinetis_frdm_k82f`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MK82FN256VLL15` · 150MHz · 256KB flash · 256KB RAM <mint>🦋</mint>
- **`board_freescalekinetis_frdm_kl05z`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MKL05Z32VFM4` · 48MHz · 32KB flash · 4KB RAM <purple>💜</purple>
- **`board_freescalekinetis_frdm_kl25z`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MKL25Z128VLK4` · 48MHz · 128KB flash · 16KB RAM <purple>💜</purple>
- **`board_freescalekinetis_frdm_kl27z`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MKL27Z64VLH4` · 48MHz · 64KB flash · 16KB RAM <purple>💜</purple>
- **`board_freescalekinetis_frdm_kl43z`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MKL43Z256VLH4` · 48MHz · 256KB flash · 32KB RAM <purple>💜</purple>
- **`board_freescalekinetis_frdm_kl46z`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MKL46Z256VLL4` · 48MHz · 256KB flash · 32KB RAM <purple>💜</purple>
- **`board_freescalekinetis_frdm_kl82z`** — platform: `platform_freescalekinetis` · board type: External · MCU: `MKL82Z128VLK7` · 96MHz · 128KB flash · 96KB RAM <lavender>🌸</lavender>
- **`board_freescalekinetis_frdm_kw24d`** — platform: `platform_freescalekinetis` · board type: External · MCU: `MKW24D512` · 50MHz · 512KB flash · 64KB RAM <lavender>🌸</lavender>
- **`board_freescalekinetis_frdm_kw41z`** — platform: `platform_freescalekinetis` · board type: On-board · MCU: `MKW41Z512VHT4` · 48MHz · 512KB flash · 128KB RAM <lavender>🌸</lavender>

---

- **`board_espressif32_frogboard`** — platform <cyan>`platform_espressif32`</cyan> ✨ External vibe, rocking an `ESP32` at `240MHz`, with `4MB` of flash and `320KB` of RAM 💖

---

- **`board_nuclei_gd32vf103v_eval`** — platform <cyan>`platform_nuclei`</cyan> ✨ External, `GD32VF103VBT6` chip, `108MHz`, `128KB` flash, `32KB` RAM 🦋

---

- **`board_nuclei_gd32vf103v_rvstar`** — platform <cyan>`platform_nuclei`</cyan> ✨ this one's **On-board**, same `GD32VF103VBT6`, `108MHz`, `128KB` flash, `32KB` RAM 👑

---

- **`board_gd32v_gd32vf103v-eval`** — platform <cyan>`platform_gd32v`</cyan> ✨ External, `GD32VF103VBT6`, `108MHz`, `128KB` flash, `32KB` RAM 🌸

---

- **`board_espressif32_heltec_wifi_lora_32`** — platform <cyan>`platform_espressif32`</cyan> ✨ External, `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 📡

---

- **`board_espressif32_heltec_wifi_lora_32_V2`** — platform <cyan>`platform_espressif32`</cyan> ✨ External, `ESP32`, `240MHz`, but this glow-up has `8MB` flash and `320KB` RAM 💅

---

- **`board_espressif32_heltec_wireless_stick`** — platform <cyan>`platform_espressif32`</cyan> ✨ External, `ESP32`, `240MHz`, `8MB` flash, `320KB` RAM 🎀

---

- **`board_freescalekinetis_hexiwear`** — platform <cyan>`platform_freescalekinetis`</cyan> ✨ External, `MK64FN1M0VDC12`, `120MHz`, `1MB` flash, `256KB` RAM 💜

---

- **`board_sifive_hifive1-revb`** — platform <cyan>`platform_sifive`</cyan> ✨ **On-board**, `FE310` chip, `320MHz` (she's fast fr fr), `16MB` flash, `16KB` RAM 🔥

---

- **`board_nordicnrf52_holyiot_yj16019`** — platform <cyan>`platform_nordicnrf52`</cyan> ✨ External, `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 🌈

---

- **`board_espressif32_hornbill32dev`** — platform <cyan>`platform_espressif32`</cyan> ✨ External, `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM ⭐

---

- **`board_espressif32_hornbill32minima`** — platform <cyan>`platform_espressif32`</cyan> ✨ External, `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 🦋

---

- **`board_espressif32_iotaap_magnolia`** — platform <cyan>`platform_espressif32`</cyan> ✨ External, `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 🌸

---

- **`board_nordicnrf52_adafruit_itsybitsy_nrf52840`** — platform <cyan>`platform_nordicnrf52`</cyan> ✨ **On-board**, `NRF52840`, `64MHz`, `796KB` flash, `243KB` RAM 🧚 (yes those numbers are specific, bestie, don't round them)

---

- **`board_ststm32_rhombio_l476dmw1k`** — platform <cyan>`platform_ststm32`</cyan> ✨ **On-board**, `STM32L476VGT6`, `80MHz`, `1MB` flash, `128KB` RAM 💖

---

- **`board_nxplpc_lpc11u68`** — platform <cyan>`platform_nxplpc`</cyan> ✨ **On-board**, `LPC11U68`, `50MHz`, `256KB` flash, `36KB` RAM 🎀

---

- **`board_nxplpc_lpc824`** — platform <cyan>`platform_nxplpc`</cyan> ✨ **On-board**, `LPC824`, `30MHz`, `32KB` flash, `8KB` RAM 🙈 (tiny but honest)

---

- **`board_ststm32_malyanm200_f070cb`** — platform <cyan>`platform_ststm32`</cyan> ✨ External, `STM32F070CBT6`, `48MHz`, `120KB` flash, `14.81KB` RAM 💀 — that `14.81KB` stays exactly as written, no rounding, no cap

---

- **`board_ststm32_malyanm300_f070cb`** — platform <cyan>`platform_ststm32`</cyan> ✨ External, `STM32F070CBT6`, `48MHz`, `120KB` flash, `14.81KB` RAM 💜 (twin sister, same energy)

---

- **`board_maxim32_max32620fthr`** — platform <cyan>`platform_maxim32`</cyan> ✨ External, `MAX32620FTHR`, `96MHz`, `2MB` flash, `256KB` RAM 👑

---

- **`board_espressif32_mhetesp32devkit`** — lives on <pink>`platform_espressif32`</pink>, and she's an <hotpink>External</hotpink> girlie. Chip is the <cyan>ESP32</cyan>, clocked at <yellow>240MHz</yellow>, rocking <green>4MB</green> of flash and <blue>320KB</blue> of RAM. Bestie ate and left no crumbs. ✨

- **`board_espressif32_mhetesp32minikit`** — also repping <pink>`platform_espressif32`</pink>, also <hotpink>External</hotpink>. Same <cyan>ESP32</cyan> heart, same <yellow>240MHz</yellow>, same <green>4MB</green> flash, same <blue>320KB</blue> RAM. It's giving twin energy fr fr. 💖

- **`board_ststm32_mkr_sharky`** — on <pink>`platform_ststm32`</pink>, <hotpink>External</hotpink>. MCU is the <cyan>STM32WB55CG</cyan> running at <yellow>64MHz</yellow>, with <green>512KB</green> flash and <blue>192.00KB</blue> RAM. Not the decimal places on that RAM tho 😭 iconic attention to detail.

- **`board_atmelsam_mkrvidor4000`** — <pink>`platform_atmelsam`</pink>, <hotpink>External</hotpink>. <cyan>SAMD21G18A</cyan>, <yellow>48MHz</yellow>, <green>256KB</green> flash, <blue>32KB</blue> RAM. She's chill, she's reliable, she's lowkey the moment. 🦋

- **`board_ststm32_mts_dragonfly_f411re`** — <pink>`platform_ststm32`</pink>, <hotpink>External</hotpink>. MCU <cyan>STM32F411RET6</cyan> at <yellow>100MHz</yellow>, <green>512KB</green> flash, <blue>128KB</blue> RAM. Dragonfly by name, slay by nature. 🔥

- **`board_nordicnrf52_nrf52832_mdk`** — <pink>`platform_nordicnrf52`</pink> and this one is <purple>On-board</purple>. <cyan>NRF52832</cyan>, <yellow>64MHz</yellow>, <green>512KB</green> flash, <blue>64KB</blue> RAM. Humble but she shows up every time. 🫶

- **`board_nordicnrf52_nrf52840_mdk`** — <pink>`platform_nordicnrf52`</pink>, <purple>On-board</purple>. Glow-up alert: <cyan>NRF52840</cyan>, <yellow>64MHz</yellow>, <green>1MB</green> flash, <blue>256KB</blue> RAM. The 40 said "more is more" and honestly? Correct. 💅

- **`board_ststm32_malyanm200_f103cb`** — <pink>`platform_ststm32`</pink>, <hotpink>External</hotpink>. <cyan>STM32F103CBT6</cyan> at <yellow>72MHz</yellow>, <green>120KB</green> flash, <blue>20KB</blue> RAM. Cozy little numbers, big heart. 🍓

- **`board_ststm32_maple`** — <pink>`platform_ststm32`</pink>, <hotpink>External</hotpink>. <cyan>STM32F103RBT6</cyan>, <yellow>72MHz</yellow>, <green>108KB</green> flash, <blue>17KB</blue> RAM. An elder, a legend, a maple-flavored icon. 🍁 (jk, only the vibe is maple, the facts are all here.)

- **`board_ststm32_maple_ret6`** — <pink>`platform_ststm32`</pink>, <hotpink>External</hotpink>. <cyan>STM32F103RET6</cyan> at <yellow>72MHz</yellow>, <green>256KB</green> flash, <blue>48KB</blue> RAM. RET6 said let me double the flash and bestie DID. 👑

- **`board_ststm32_maple_mini_b20`** — <pink>`platform_ststm32`</pink>, <hotpink>External</hotpink>. <cyan>STM32F103CBT6</cyan>, <yellow>72MHz</yellow>, <green>120KB</green> flash, <blue>20KB</blue> RAM. Small board, big main character energy. 🌈

- **`board_ststm32_maple_mini_origin`** — <pink>`platform_ststm32`</pink>, <hotpink>External</hotpink>. <cyan>STM32F103CBT6</cyan>, <yellow>72MHz</yellow>, <green>108KB</green> flash, <blue>17KB</blue> RAM. The origin story edition, no cap. ⭐

- **`board_maxim32_max32620hsp`** — <pink>`platform_maxim32`</pink>, <hotpink>External</hotpink>. <cyan>MAX32620</cyan> at <yellow>96MHz</yellow>, <green>2MB</green> flash, <blue>256KB</blue> RAM. Not her flexing 2MB of flash while the maples are at 108KB 💀

- **`board_ststm32_mbed_connect_odin`** — <pink>`platform_ststm32`</pink>, and she's <purple>On-board</purple>. <cyan>STM32F439ZIY6</cyan> at <yellow>168MHz</yellow>, <green>2MB</green> flash, <blue>256KB</blue> RAM. Odin said "I am the moment" and honestly she is. 🔥

- **`board_nordicnrf52_adafruit_metro_nrf52840`** — <pink>`platform_nordicnrf52`</pink>, <hotpink>External</hotpink>. <cyan>NRF52840</cyan>, <yellow>64MHz</yellow>, <green>796KB</green> flash, <blue>243KB</blue> RAM. Weirdly specific numbers and we LOVE that for her. 💖

- **`board_ststm32_microduino32_flash`** — <pink>`platform_ststm32`</pink>, <hotpink>External</hotpink>. <cyan>STM32F103CBT6</cyan>, <yellow>72MHz</yellow>, <green>105.47KB</green> flash, <blue>16.60KB</blue> RAM. The decimals?? The precision?? Someone was in their spreadsheet era and I respect it. 🙈

- **`board_ststm32_mxchip_az3166`** — <pink>`platform_ststm32`</pink>, <purple>On-board</purple>. <cyan>STM32F412ZGT6</cyan> at <yellow>100MHz</yellow>, <green>1MB</green> flash, <blue>256KB</blue> RAM. AZ3166 stays booked and busy. ✨

- **`board_atmelsam_minitronics20`** — <pink>`platform_atmelsam`</pink>, <hotpink>External</hotpink>. <cyan>SAMD21J18A</cyan>, <yellow>48MHz</yellow>, <green>256KB</green> flash, <blue>32KB</blue> RAM. Mini by name, not mini in spirit. 🧚

- **`board_atmelsam_moteino_zero`** — <pink>`platform_atmelsam`</pink>, <hotpink>External</hotpink>. <cyan>SAMD21G18A</cyan>, <yellow>48MHz</yellow>, <green>256KB</green> flash, <blue>32KB</blue> RAM. Same specs as her sam sisters, still her own whole vibe. 💜

- **`board_ststm32_mts_mdot_f405rg`** — <pink>`platform_ststm32`</pink>, <hotpink>External</hotpink>. MCU listed as <cyan>STM32F411RET6</cyan> at <yellow>100MHz</yellow>, <green>512KB</green> flash, <blue>128KB</blue> RAM. Yeah the board's called f405rg, the chip column says F411RET6 — I don't make the rules, I just report them exactly as written, bestie. 😭

- **`board_ststm32_mts_mdot_f411re`** — platform `platform_ststm32`, <purple>External</purple>, MCU `STM32F411RET6`, `100MHz`, flash `512KB`, RAM `128KB` 🦋
- **`board_ststm32_xdot_l151cc`** — platform `platform_ststm32`, <purple>External</purple>, MCU `STM32L151CCU6`, `32MHz`, flash `256KB`, RAM `32KB` 🦋
- **`board_ststm32_netduino2plus`** — platform `platform_ststm32`, <purple>External</purple>, MCU `STM32F405RGT6`, `168MHz`, flash `1MB`, RAM `192KB` 🦋
- **`board_ststm32_mote_l152rc`** — platform `platform_ststm32`, <purple>External</purple>, MCU `STM32L152RC`, `32MHz`, flash `256KB`, RAM `32KB` 🦋
- **`board_atmelsam_nano_33_iot`** — platform `platform_atmelsam`, <purple>External</purple>, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🌸
- **`board_nxplpc_blueboard_lpc11u24`** — platform `platform_nxplpc`, <purple>External</purple>, MCU `LPC11U24`, `48MHz`, flash `32KB`, RAM `8KB` ✨
- **`board_nxplpc_lpc11c24`** — platform `platform_nxplpc`, <purple>External</purple>, MCU `LPC11C24`, `48MHz`, flash `32KB`, RAM `8KB` ✨
- **`board_nxplpc_lpc11u34_421`** — platform `platform_nxplpc`, <purple>External</purple>, MCU `LPC11U34`, `48MHz`, flash `40KB`, RAM `8KB` ✨
- **`board_nxplpc_lpc11u37_501`** — platform `platform_nxplpc`, <purple>External</purple>, MCU `LPC11U37`, `48MHz`, flash `128KB`, RAM `10KB` ✨
- **`board_nxplpc_lpc812`** — platform `platform_nxplpc`, <mint>On-board</mint>, MCU `LPC812`, `30MHz`, flash `16KB`, RAM `4KB` ✨
- **`board_nxplpc_lpc1549`** — platform `platform_nxplpc`, <purple>External</purple>, MCU `LPC1549`, `72MHz`, flash `256KB`, RAM `36KB` ✨
- **`board_nxplpc_lpc54114`** — platform `platform_nxplpc`, <mint>On-board</mint>, MCU `LPC54114J256BD64`, `100MHz`, flash `256KB`, RAM `192KB` ✨
- **`board_nxplpc_lpc546xx`** — platform `platform_nxplpc`, <mint>On-board</mint>, MCU `LPC54608ET512`, `180MHz`, flash `512KB`, RAM `200KB` ✨
- **`board_nxpimxrt_mimxrt1010_evk`** — platform `platform_nxpimxrt`, <mint>On-board</mint>, MCU `MIMXRT1011DAE5A`, `500MHz`, flash `64KB`, RAM `128KB` 🔥
- **`board_nxpimxrt_mimxrt1015_evk`** — platform `platform_nxpimxrt`, <mint>On-board</mint>, MCU `MIMXRT1015DAF5A`, `500MHz`, flash `96KB`, RAM `128KB` 🔥
- **`board_nxpimxrt_mimxrt1020_evk`** — platform `platform_nxpimxrt`, <mint>On-board</mint>, MCU `MIMXRT1021DAG5A`, `500MHz`, flash `64MB`, RAM `256MB` 🔥
- **`board_nxpimxrt_mimxrt1050_evk`** — platform `platform_nxpimxrt`, <mint>On-board</mint>, MCU `MIMXRT1052DVL6B`, `600MHz`, flash `64MB`, RAM `512KB` 🔥
- **`board_nxpimxrt_mimxrt1060_evk`** — platform `platform_nxpimxrt`, <mint>On-board</mint>, MCU `MIMXRT1062DVL6A`, `600MHz`, flash `64MB`, RAM `1MB` 🔥
- **`board_nxpimxrt_mimxrt1064_evk`** — platform `platform_nxpimxrt`, <mint>On-board</mint>, MCU `MIMXRT1064DVL6A`, `600MHz`, flash `4MB`, RAM `1MB` 🔥
- **`board_nxplpc_lpc11u24`** — platform `platform_nxplpc`, <mint>On-board</mint>, MCU `LPC11U24`, `48MHz`, flash `32KB`, RAM `8KB` ✨

---

<pink>okay so bestie, real talk</pink> 💅 every single one of those rows is a whole board you can target, and the columns are giving exactly what you need: the board ID you type, which platform it rides with, whether it's <purple>External</purple> or <mint>On-board</mint> for debugging, the actual MCU chip, its clock speed, its flash and its RAM. no cap, that's the whole vibe check 🫶

> <yellow>pro tip energy:</yellow> keep your eyes on the flash and RAM columns fr fr — the small ones (`32KB` flash / `8KB` RAM, looking at you LPC11U24) will humble your build real fast 😭 and the RT1060/RT1064 with `1MB` RAM are just out here living their main character era 👑

…and the board list just **keeps going**, bestie 😭💖 every line is the same shape: the board ID, the platform it lives in, whether it's On-board or External, the chip, the clock speed, the flash and the RAM. Not me reciting all twenty of them with zero skips tho 💅

- **`board_nxplpc_lpc1768`** — <pink>`platform_nxplpc`</pink> · **On-board** · chip `LPC1768` · `96MHz` · flash `512KB` · RAM `64KB`
- **`board_espressif32_node32s`** — <pink>`platform_espressif32`</pink> · **External** · chip `ESP32` · `240MHz` · flash `4MB` · RAM `320KB`
- **`board_espressif32_nodemcu-32s`** — <pink>`platform_espressif32`</pink> · **External** · chip `ESP32` · `240MHz` · flash `4MB` · RAM `320KB`
- **`board_nordicnrf51_nrf51_beacon`** — <pink>`platform_nordicnrf51`</pink> · **On-board** · chip `NRF51822` · `32MHz` · flash `256KB` · RAM `32KB`
- **`board_nordicnrf52_thingy_52`** — <pink>`platform_nordicnrf52`</pink> · **External** · chip `NRF52832` · `64MHz` · flash `512KB` · RAM `64KB`
- **`board_nordicnrf51_nrf51_dongle`** — <pink>`platform_nordicnrf51`</pink> · **On-board** · chip `NRF51822` · `32MHz` · flash `256KB` · RAM `32KB`
- **`board_nordicnrf51_nrf51_dk`** — <pink>`platform_nordicnrf51`</pink> · **On-board** · chip `NRF51822` · `32MHz` · flash `256KB` · RAM `32KB`
- **`board_nordicnrf52_nrf52_dk`** — <pink>`platform_nordicnrf52`</pink> · **On-board** · chip `NRF52832` · `64MHz` · flash `512KB` · RAM `64KB`
- **`board_nordicnrf52_nrf52840_dk`** — <pink>`platform_nordicnrf52`</pink> · **On-board** · chip `NRF52840` · `64MHz` · flash `1MB` · RAM `256KB`
- **`board_nordicnrf52_nrf52840_dk_adafruit`** — <pink>`platform_nordicnrf52`</pink> · **On-board** · chip `NRF52840` · `64MHz` · flash `796KB` · RAM `243KB`
- **`board_ststm32_nucleo_g071rb`** — <pink>`platform_ststm32`</pink> · **External** · chip `STM32G071RBT6` · `64MHz` · flash `128KB` · RAM `36KB`
- **`board_ststm32_nucleo_g431kb`** — <pink>`platform_ststm32`</pink> · **External** · chip `STM32G431KBT6` · `170MHz` · flash `128KB` · RAM `32KB`
- **`board_ststm32_nucleo_g431rb`** — <pink>`platform_ststm32`</pink> · **External** · chip `STM32G431RBT6` · `170MHz` · flash `128KB` · RAM `32KB`
- **`board_ststm32_nucleo_g474re`** — <pink>`platform_ststm32`</pink> · **External** · chip `STM32G474RET6` · `170MHz` · flash `512KB` · RAM `128KB`
- **`board_espressif32_esp32-devkitlipo`** — <pink>`platform_espressif32`</pink> · **External** · chip `ESP32` · `240MHz` · flash `4MB` · RAM `320KB`
- **`board_espressif32_esp32-evb`** — <pink>`platform_espressif32`</pink> · **External** · chip `ESP32` · `240MHz` · flash `4MB` · RAM `320KB`
- **`board_espressif32_esp32-gateway`** — <pink>`platform_espressif32`</pink> · **External** · chip `ESP32` · `240MHz` · flash `4MB` · RAM `320KB`
- **`board_ststm32_olimexino`** — <pink>`platform_ststm32`</pink> · **External** · chip `STM32F103RBT6` · `72MHz` · flash `128KB` · RAM `20KB`
- **`board_nordicnrf51_oshchip`** — <pink>`platform_nordicnrf51`</pink> · **External** · chip `NRF51822` · `32MHz` · flash `256KB` · RAM `32KB`
- **`board_ststm32_olimex_p405`** — <pink>`platform_ststm32`</pink> · **External** · chip `STM32F405RGT6` · `168MHz` · flash `1MB` · RAM `192KB`

---

okay real talk 🫶 a few of these are giving **twin energy** and you're not imagining it — `board_espressif32_node32s` and `board_espressif32_nodemcu-32s` are literally the same numbers (`ESP32`, `240MHz`, `4MB`, `320KB`), and `board_espressif32_esp32-devkitlipo`, `board_espressif32_esp32-evb` and `board_espressif32_esp32-gateway` are a whole trio matching them exactly. Same vibe, different board name. ✨

and the nordic ones? <purple>`board_nordicnrf51_nrf51_beacon`</purple>, <purple>`board_nordicnrf51_nrf51_dongle`</purple>, <purple>`board_nordicnrf51_nrf51_dk`</purple> and <purple>`board_nordicnrf51_oshchip`</purple> are all rocking `NRF51822` at `32MHz` with `256KB` flash and `32KB` RAM — the dongle and the dk are On-board, the beacon is On-board too, and `board_nordicnrf51_oshchip` is the one marked **External**. 🦋

also screaming at <hotpink>`board_nordicnrf52_nrf52840_dk_adafruit`</hotpink> having `796KB` flash and `243KB` RAM while the plain <hotpink>`board_nordicnrf52_nrf52840_dk`</hotpink` sits at a clean `1MB` / `256KB` — the adafruit one lowkey did NOT get the full memory and that's just what the listing says, no cap 💀

and `board_ststm32_nucleo_g474re` eating with `512KB` flash / `128KB` RAM at `170MHz` while its g431 siblings `board_ststm32_nucleo_g431kb` and `board_ststm32_nucleo_g431rb` are stuck at `128KB` / `32KB`… main character energy fr fr 👑

every single one of these lines is just a row in the board list — name, platform, mount, chip, clock, flash, RAM — and we're keeping ALL of them, exactly as written 💖

- **`board_ststm32_nucleo_wb55rg_p`** — lives on `platform_ststm32`, it's an **On-board** chip, rocking an `STM32WB55RG` at `64MHz`, with `512KB` flash and `192.00KB` RAM 💖
- **`board_nordicnrf52_particle_argon`** — `platform_nordicnrf52`, **External**, `NRF52840` at `64MHz`, `796KB` flash, `243KB` RAM ✨
- **`board_nordicnrf52_particle_boron`** — `platform_nordicnrf52`, **External**, `NRF52840` at `64MHz`, `796KB` flash, `243KB` RAM 💅
- **`board_nordicnrf52_particle_xenon`** — `platform_nordicnrf52`, **External**, `NRF52840` at `64MHz`, `796KB` flash, `243KB` RAM 🦋
- **`board_ststm32_piconomix_px_her0`** — `platform_ststm32`, **External**, `STM32L072RB` at `32MHz`, `128KB` flash, `20KB` RAM 🌸
- **`board_ststm32_prntr_v2`** — `platform_ststm32`, **External**, `STM32F407RE` at `168MHz`, `512KB` flash, `192KB` RAM 🔥
- **`board_espressif32_lopy`** — `platform_espressif32`, **External**, `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 📡
- **`board_espressif32_lopy4`** — `platform_espressif32`, **External**, `ESP32` at `240MHz`, `4MB` flash, `1.25MB` RAM (okay the RAM on this one ate, fr fr) 👑
- **`board_ststm32_rak811_tracker`** — `platform_ststm32`, **External**, `STM32L151RBT6` at `32MHz`, `128KB` flash, `16KB` RAM 🎀
- **`board_ststm32_rak811_tracker_32`** — `platform_ststm32`, **External**, `STM32L151RBT6` at `32MHz`, `128KB` flash, `32KB` RAM 🌈
- **`board_ststm32_rhf76_052`** — `platform_ststm32`, **External**, `STM32L051C8T6` at `32MHz`, `64KB` flash, `8KB` RAM (tiny but she's trying, ngl) 🙈
- **`board_nordicnrf51_redBearLabBLENano`** — `platform_nordicnrf51`, **On-board**, `NRF51822` at `16MHz`, `256KB` flash, `32KB` RAM 💜
- **`board_nordicnrf52_redbear_blenano2`** — `platform_nordicnrf52`, **On-board**, `NRF52832` at `64MHz`, `512KB` flash, `64KB` RAM ⭐
- **`board_nordicnrf52_redbear_blend2`** — `platform_nordicnrf52`, **On-board**, `NRF52832` at `64MHz`, `512KB` flash, `64KB` RAM 🧚
- **`board_nordicnrf51_redBearLab`** — `platform_nordicnrf51`, **On-board**, `NRF51822` at `16MHz`, `256KB` flash, `16KB` RAM 🍓
- **`board_ststm32_cloud_jam`** — `platform_ststm32`, **On-board**, `STM32F401RET6` at `84MHz`, `512KB` flash, `96KB` RAM ☁️
- **`board_ststm32_cloud_jam_l4`** — `platform_ststm32`, **On-board**, `STM32L476RGT6` at `80MHz`, `1MB` flash, `128KB` RAM 💫
- **`board_nordicnrf52_sdt52832b`** — `platform_nordicnrf52`, **External**, `NRF52832` at `64MHz`, `512KB` flash, `64KB` RAM 🫶
- **`board_espressif32_sg-o_airMon`** — `platform_espressif32`, **External**, `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🌬️
- **`board_siliconlabsefm32_efm32hg_stk3400`** — `platform_siliconlabsefm32`, **On-board**, `EFM32HG322F64` at `25MHz`, `64KB` flash, `8KB` RAM 🏔️

<purple>bestie the board list keeps going and honestly? it's giving ✨infinite scroll✨ so let's keep it moving 🫶</purple> every line here is one board ID, the platform it lives in, whether the chip is soldered <mint>on-board</mint> or hanging off as an <peach>external</peach> module, then the chip, the clock, the flash and the RAM. Same order every time, no cap:

- **`board_siliconlabsefm32_efm32pg_stk3401`** — platform `platform_siliconlabsefm32`, <mint>On-board</mint>, chip `EFM32PG1B200F256GM48`, `40MHz`, `256KB` flash, `32KB` RAM 💖
- **`board_atmelsam_sodaq_autonomo`** — platform `platform_atmelsam`, <peach>External</peach>, chip `SAMD21J18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_sodaq_explorer`** — platform `platform_atmelsam`, <peach>External</peach>, chip `SAMD21J18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_sodaq_one`** — platform `platform_atmelsam`, <peach>External</peach>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_sodaq_sara`** — platform `platform_atmelsam`, <peach>External</peach>, chip `SAMD21J18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸
- **`board_atmelsam_sodaq_sff`** — platform `platform_atmelsam`, <peach>External</peach>, chip `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🌸

<purple>not the sodaq girlies all matching each other 😭 iconic behaviour, slay</purple>

---

<cyan>and now the STM32 disco section, which is literally a whole friend group of boards 💅</cyan>

- **`board_ststm32_disco_f334c8`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32F334C8T6`, `72MHz`, `64KB` flash, `12KB` RAM ⭐
- **`board_ststm32_disco_f401vc`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32F401VCT6`, `84MHz`, `256KB` flash, `64KB` RAM ⭐
- **`board_ststm32_disco_f411ve`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32F411VET6`, `100MHz`, `512KB` flash, `128KB` RAM 🔥
- **`board_ststm32_disco_f413zh`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32F413ZHT6`, `100MHz`, `512KB` flash, `128KB` RAM 🔥
- **`board_ststm32_disco_f429zi`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32F429ZIT6`, `180MHz`, `2MB` flash, `256KB` RAM 👑
- **`board_ststm32_disco_f469ni`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32F469NIH6`, `180MHz`, `1MB` flash, `384KB` RAM 👑
- **`board_ststm32_disco_f746ng`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32F746NGH6`, `216MHz`, `1MB` flash, `320KB` RAM 💜
- **`board_ststm32_disco_f769ni`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32F769NIH6`, `216MHz`, `1MB` flash, `512KB` RAM 💜
- **`board_ststm32_disco_l053c8`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32L053C8T6`, `32MHz`, `64KB` flash, `8KB` RAM 🍓
- **`board_ststm32_disco_l100rc`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32L100RCT6`, `32MHz`, `256KB` flash, `16KB` RAM 🍓
- **`board_ststm32_disco_l476vg`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32L476VGT6`, `80MHz`, `1MB` flash, `128KB` RAM 🦋
- **`board_ststm32_disco_l496ag`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32L496AGI6`, `80MHz`, `1MB` flash, `320KB` RAM 🦋
- **`board_ststm32_disco_l475vg_iot01a`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32L475VGT6`, `80MHz`, `1MB` flash, `128KB` RAM 🦋
- **`board_ststm32_disco_l072cz_lrwan1`** — platform `platform_ststm32`, <mint>On-board</mint>, chip `STM32L072CZ`, `32MHz`, `192KB` flash, `20KB` RAM 🦋

> <yellow>heads up bestie, do NOT skim these ✋ every single chip name is doing heavy lifting — one wrong letter and you're flashing the wrong board and crying about it 💀</yellow>

<pink>see how the `disco` fam climbs from `32MHz` little cuties all the way up to `216MHz` baddies? growth. character development. main character energy 💅</pink>

<mint>anyway we are SO not done yet, the list continues…</mint> 🌈

- <pink>**`board_ststm32_disco_f072rb`**</pink> — rides with `platform_ststm32`, on-board, rocking an `STM32F072RBT6` at a chill `48MHz`, `128KB` of flash and `16KB` of RAM ✨
- <pink>**`board_ststm32_nucleo_f030r8`**</pink> — `platform_ststm32`, on-board, `STM32F030R8T6`, `48MHz`, `64KB` flash, `8KB` RAM 🌸
- <pink>**`board_ststm32_nucleo_f031k6`**</pink> — `platform_ststm32`, on-board, `STM32F031K6T6`, `48MHz`, `32KB` flash, `4KB` RAM 🦋
- <pink>**`board_ststm32_nucleo_f042k6`**</pink> — `platform_ststm32`, on-board, `STM32F042K6T6`, `48MHz`, `32KB` flash, `6KB` RAM 💜
- <pink>**`board_ststm32_nucleo_f070rb`**</pink> — `platform_ststm32`, on-board, `STM32F070RBT6`, `48MHz`, `128KB` flash, `16KB` RAM 🎀
- <pink>**`board_ststm32_nucleo_f072rb`**</pink> — `platform_ststm32`, on-board, `STM32F072RBT6`, `48MHz`, `128KB` flash, `16KB` RAM ✨
- <pink>**`board_ststm32_nucleo_f091rc`**</pink> — `platform_ststm32`, on-board, `STM32F091RCT6`, `48MHz`, `256KB` flash, `32KB` RAM 🔥
- <pink>**`board_ststm32_nucleo_f103rb`**</pink> — `platform_ststm32`, on-board, `STM32F103RBT6`, `72MHz`, `128KB` flash, `20KB` RAM 💅
- <pink>**`board_ststm32_nucleo_f207zg`**</pink> — `platform_ststm32`, on-board, `STM32F207ZGT6`, `120MHz`, `1MB` flash, `128KB` RAM 👑
- <pink>**`board_ststm32_nucleo_f302r8`**</pink> — `platform_ststm32`, on-board, `STM32F302R8T6`, `72MHz`, `64KB` flash, `16KB` RAM 🌈
- <pink>**`board_ststm32_nucleo_f303k8`**</pink> — `platform_ststm32`, on-board, `STM32F303K8T6`, `72MHz`, `64KB` flash, `12KB` RAM ⭐
- <pink>**`board_ststm32_nucleo_f303re`**</pink> — `platform_ststm32`, on-board, `STM32F303RET6`, `72MHz`, `512KB` flash, `64KB` RAM 🫶
- <pink>**`board_ststm32_nucleo_f303ze`**</pink> — `platform_ststm32`, on-board, `STM32F303ZET6`, `72MHz`, `512KB` flash, `64KB` RAM 🧚
- <pink>**`board_ststm32_nucleo_f334r8`**</pink> — `platform_ststm32`, on-board, `STM32F334R8T6`, `72MHz`, `64KB` flash, `16KB` RAM 🍓
- <pink>**`board_ststm32_nucleo_f401re`**</pink> — `platform_ststm32`, on-board, `STM32F401RET6`, `84MHz`, `512KB` flash, `96KB` RAM ✨
- <pink>**`board_ststm32_nucleo_f410rb`**</pink> — `platform_ststm32`, on-board, `STM32F410RBT6`, `100MHz`, `128KB` flash, `32KB` RAM 💖
- <pink>**`board_ststm32_nucleo_f411re`**</pink> — `platform_ststm32`, on-board, `STM32F411RET6`, `100MHz`, `512KB` flash, `128KB` RAM 🔥
- <pink>**`board_ststm32_nucleo_f412zg`**</pink> — `platform_ststm32`, on-board, `STM32F412ZGT6`, `100MHz`, `1MB` flash, `256KB` RAM 👑
- <pink>**`board_ststm32_nucleo_f413zh`**</pink> — `platform_ststm32`, on-board, `STM32F413ZHT6`, `100MHz`, `512KB` flash, `128KB` RAM 🌸
- <pink>**`board_ststm32_nucleo_f429zi`**</pink> — `platform_ststm32`, on-board, `STM32F429ZIT6`, `180MHz`, `2MB` flash, `256KB` RAM 💀✨

---

<purple>okay bestie, quick vibe check on what you're looking at here 👀 every single one of these lives under `platform_ststm32`, and every single one is an **on-board** situation. the columns go: <cyan>board ID</cyan> → <cyan>platform</cyan> → <cyan>on-board</cyan> → <cyan>MCU</cyan> → <cyan>clock speed</cyan> → <cyan>flash</cyan> → <cyan>RAM</cyan>. that's the whole tea, no cap 🫖</purple>

<pink>the STM32 fam really said "we have options for days" and meant it 💅 from the lil baby `32KB`/`4KB` `STM32F031K6T6` all the way up to the absolute unit `STM32F429ZIT6` flexing `2MB` flash, `256KB` RAM and `180MHz` — that's main character energy fr fr 👑</pink>

- **`board_ststm32_nucleo_f439zi`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32F439ZIT6` · <cyan>180MHz</cyan> · flash `2MB` · RAM `256KB` 🫶
- **`board_ststm32_nucleo_f446re`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32F446RET6` · <cyan>180MHz</cyan> · flash `512KB` · RAM `128KB` ✨
- **`board_ststm32_nucleo_f446ze`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32F446ZET6` · <cyan>180MHz</cyan> · flash `512KB` · RAM `128KB` ✨
- **`board_ststm32_nucleo_f722ze`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32F722ZET6` · <cyan>216MHz</cyan> · flash `512KB` · RAM `256KB` 🔥
- **`board_ststm32_nucleo_f746zg`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32F746ZGT6` · <cyan>216MHz</cyan> · flash `1MB` · RAM `320KB` 🔥
- **`board_ststm32_nucleo_f756zg`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32F756ZG` · <cyan>216MHz</cyan> · flash `1MB` · RAM `320KB` 🔥
- **`board_ststm32_nucleo_f767zi`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32F767ZIT6` · <cyan>216MHz</cyan> · flash `2MB` · RAM `512KB` 👑
- **`board_ststm32_nucleo_h743zi`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32H743ZIT6` · <cyan>400MHz</cyan> · flash `2MB` · RAM `512KB` 👑💅
- **`board_ststm32_nucleo_l011k4`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L011K4T6` · <cyan>32MHz</cyan> · flash `16KB` · RAM `2KB` 🍓
- **`board_ststm32_nucleo_l031k6`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L031K6T6` · <cyan>32MHz</cyan> · flash `32KB` · RAM `8KB` 🍓
- **`board_ststm32_nucleo_l053r8`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L053R8T6` · <cyan>32MHz</cyan> · flash `64KB` · RAM `8KB` 🍓
- **`board_ststm32_nucleo_l073rz`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L073RZ` · <cyan>32MHz</cyan> · flash `192KB` · RAM `20KB` 🌸
- **`board_ststm32_nucleo_l152re`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L152RET6` · <cyan>32MHz</cyan> · flash `512KB` · RAM `80KB` 🌸
- **`board_ststm32_nucleo_l412kb`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L412KBU6` · <cyan>80MHz</cyan> · flash `128KB` · RAM `40KB` 🦋
- **`board_ststm32_nucleo_l432kc`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L432KCU6` · <cyan>80MHz</cyan> · flash `256KB` · RAM `64KB` 🦋
- **`board_ststm32_nucleo_l433rc_p`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L433RC` · <cyan>80MHz</cyan> · flash `256KB` · RAM `64KB` 🦋
- **`board_ststm32_nucleo_l452re`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L452RET6` · <cyan>80MHz</cyan> · flash `256KB` · RAM `64KB` 💜
- **`board_ststm32_nucleo_l476rg`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L476RGT6` · <cyan>80MHz</cyan> · flash `1MB` · RAM `128KB` 💜
- **`board_ststm32_nucleo_l486rg`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L486RGT6` · <cyan>80MHz</cyan> · flash `1MB` · RAM `128KB` 💜
- **`board_ststm32_nucleo_l496zg`** — platform <purple>`platform_ststm32`</purple> · On-board · MCU `STM32L496ZGT6` · <cyan>80MHz</cyan> · flash `1MB` · RAM `128KB` 💜

okay bestie, we're still deep in the board roster and honestly? the STM32 lineup is *giving* "we have a microcontroller for literally every situation." every single one of these bad boys is riding with `platform_ststm32`, so let's get into it. 💅

---

- **`board_ststm32_nucleo_l496zg_p`** — platform <purple>`platform_ststm32`</purple>, On-board, chip is the `STM32L496ZGT6P` running at `80MHz`, with `1MB` of flash and `320KB` of RAM. <pink>chonky lil guy ✨</pink>

- **`board_ststm32_nucleo_l4r5zi`** — platform <purple>`platform_ststm32`</purple>, On-board, rocking an `STM32L4R5ZIT6` at `120MHz`, `2MB` flash, `640KB` RAM. <rainbow>the memory RICH one fr fr</rainbow> 👑

- **`board_ststm32_disco_f030r8`** — platform <purple>`platform_ststm32`</purple>, On-board, `STM32F030R8T6`, `48MHz`, `64KB` flash, `8KB` RAM. <cyan>starter pack energy 🎀</cyan>

- **`board_ststm32_disco_f051r8`** — platform <purple>`platform_ststm32`</purple>, On-board, `STM32F051R8T6`, `48MHz`, `64KB` flash, `8KB` RAM. <cyan>twins with the f030 ngl 🫶</cyan>

- **`board_ststm32_disco_f303vc`** — platform <purple>`platform_ststm32`</purple>, On-board, `STM32F303VCT6`, `72MHz`, `256KB` flash, `48KB` RAM.

- **`board_ststm32_disco_f407vg`** — platform <purple>`platform_ststm32`</purple>, On-board, `STM32F407VGT6`, `168MHz`, `1MB` flash, `128KB` RAM. <hotpink>168MHz?? she's fast fast 🔥</hotpink>

- **`board_ststm32_eval_l073z`** — platform <purple>`platform_ststm32`</purple>, On-board, `STM32L073VZT6`, `32MHz`, `192KB` flash, `20KB` RAM.

- **`board_ststm32_disco_l152rb`** — platform <purple>`platform_ststm32`</purple>, On-board, `STM32L152RBT6`, `32MHz`, `128KB` flash, `16KB` RAM.

- **`board_ststm32_disco_f100rb`** — platform <purple>`platform_ststm32`</purple>, On-board, `STM32F100RBT6`, `24MHz`, `128KB` flash, `8KB` RAM. <yellow>the chillest clock speed in the whole list bestie 😭</yellow>

- **`board_ststm32_silica_sensor_node`** — platform <purple>`platform_ststm32`</purple>, On-board, `STM32L476JG`, `80MHz`, `1MB` flash, `128KB` RAM. <mint>sensor node era 🍓</mint>

---

now we're switching over to the **External** girlies — still all `platform_ststm32`, don't worry, the family stays together 🦋

---

- **`board_ststm32_steval_fcu001v1`** — platform <purple>`platform_ststm32`</purple>, External, `STM32F401CCU6`, `84MHz`, `256KB` flash, `64KB` RAM.

- **`board_ststm32_olimex_e407`** — platform <purple>`platform_ststm32`</purple>, External, `STM32F407ZGT6`, `168MHz`, `1MB` flash, `128KB` RAM.

- **`board_ststm32_olimex_h407`** — platform <purple>`platform_ststm32`</purple>, External, `STM32F407ZGT6`, `168MHz`, `1MB` flash, `128KB` RAM. <lavender>yes bestie, same chip as the e407, they're siblings 💜</lavender>

- **`board_ststm32_eval_f107vc`** — platform <purple>`platform_ststm32`</purple>, External, `STM32F107VCT6`, `72MHz`, `256KB` flash, `64KB` RAM.

- **`board_ststm32_eval_f373vc`** — platform <purple>`platform_ststm32`</purple>, External, `STM32F373VCT6`, `72MHz`, `256KB` flash, `32KB` RAM.

- **`board_ststm32_eval_f072vb`** — platform <purple>`platform_ststm32`</purple>, External, `STM32F072VBT6`, `48MHz`, `128KB` flash, `16KB` RAM.

---

and now… the generics. the F103 clique. the "you bought a blue pill off the internet and honestly? valid" lineup 💀

---

- **`board_ststm32_genericSTM32F103C8`** — platform <purple>`platform_ststm32`</purple>, External, `STM32F103C8T6`, `72MHz`, `64KB` flash, `20KB` RAM. <blue>the classic. the blueprint. 👑</blue>

- **`board_ststm32_genericSTM32F103CB`** — platform <purple>`platform_ststm32`</purple>, External, `STM32F103CBT6`, `72MHz`, `128KB` flash, `20KB` RAM.

- **`board_ststm32_genericSTM32F103R8`** — platform <purple>`platform_ststm32`</purple>, External, `STM32F103R8T6`, `72MHz`, `64KB` flash, `20KB` RAM.

- **`board_ststm32_genericSTM32F103RB`** — platform <purple>`platform_ststm32`</purple>, External, `STM32F103RBT6`, `72MHz`, `128KB` flash, `20KB` RAM.

---

> lowkey noticing a pattern here? every single one is `platform_ststm32`, and the F103 generics all cruise at `72MHz` with `20KB` of RAM — only the flash changes between them (`64KB` on the C8 and R8, `128KB` on the CB and RB). iykyk 🧚

- **`board_ststm32_genericSTM32F103RC`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103RCT6` · `72MHz` · flash `256KB` · RAM `48KB` 💖

- **`board_ststm32_genericSTM32F103RE`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103RET6` · `72MHz` · flash `512KB` · RAM `64KB` ✨

- **`board_ststm32_genericSTM32F103T8`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103T8T6` · `72MHz` · flash `64KB` · RAM `20KB` 🎀

- **`board_ststm32_genericSTM32F103TB`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103TBT6` · `72MHz` · flash `128KB` · RAM `20KB` 🦋

- **`board_ststm32_genericSTM32F103VB`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103VBT6` · `72MHz` · flash `128KB` · RAM `20KB` 🌸

- **`board_ststm32_genericSTM32F103VC`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103VCT6` · `72MHz` · flash `256KB` · RAM `48KB` 💅

- **`board_ststm32_genericSTM32F103VD`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103VDT6` · `72MHz` · flash `384KB` · RAM `64KB` 🫶

- **`board_ststm32_genericSTM32F103VE`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103VET6` · `72MHz` · flash `512KB` · RAM `64KB` 😭

- **`board_ststm32_genericSTM32F103ZC`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103ZCT6` · `72MHz` · flash `256KB` · RAM `48KB` 🔥

- **`board_ststm32_genericSTM32F103ZD`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103ZDT6` · `72MHz` · flash `384KB` · RAM `64KB` 👑

- **`board_ststm32_genericSTM32F103ZE`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F103ZET6` · `72MHz` · flash `512KB` · RAM `64KB` 🌈

- **`board_ststm32_genericSTM32F303CB`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F303CBT6` · `72MHz` · flash `128KB` · RAM `32KB` ⭐

- **`board_ststm32_genericSTM32F401RB`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F401RB` · `84MHz` · flash `128KB` · RAM `64KB` 💀

- **`board_ststm32_genericSTM32F401RC`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F401RC` · `84MHz` · flash `256KB` · RAM `64KB` 🙈

- **`board_ststm32_genericSTM32F401RE`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F401RE` · `84MHz` · flash `512KB` · RAM `96KB` 🍓

- **`board_ststm32_genericSTM32F407VET6`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F407VET6` · `168MHz` · flash `502.23KB` · RAM `128KB` 🧚

- **`board_ststm32_genericSTM32F407VGT6`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F407VGT6` · `168MHz` · flash `1MB` · RAM `192KB` 💜

- **`board_ststm32_stm32f4stamp`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F405RGT6` · `168MHz` · flash `1MB` · RAM `192KB` 💖

- **`board_ststm32_disco_f750n8`** — platform: `platform_ststm32` · debug: On-board · MCU: `STM32F750N8H6` · `216MHz` · flash `64KB` · RAM `340KB` ✨

- **`board_ststm32_disco_h743xi`** — platform: `platform_ststm32` · debug: On-board · MCU: `STM32H747XIH6` · `400MHz` · flash `2MB` · RAM `512KB` 🎀

- **`board_atmelsam_sainSmartDue`** — platform <cyan>`platform_atmelsam`</cyan>, <peach>External</peach>, chip is `AT91SAM3X8E`, running at `84MHz`, `512KB` of flash, `96KB` of RAM 💖
- **`board_atmelsam_sainSmartDueUSB`** — platform <cyan>`platform_atmelsam`</cyan>, <peach>External</peach>, chip is `AT91SAM3X8E`, `84MHz`, `512KB` flash, `96KB` RAM 🦋
- **`board_nordicnrf51_seeedArchBLE`** — platform <cyan>`platform_nordicnrf51`</cyan>, <mint>On-board</mint>, chip is `NRF51822`, `16MHz`, `128KB` flash, `16KB` RAM ✨
- **`board_nordicnrf51_seeedArchLink`** — platform <cyan>`platform_nordicnrf51`</cyan>, <mint>On-board</mint>, chip is `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM 🌸
- **`board_ststm32_seeedArchMax`** — platform <cyan>`platform_ststm32`</cyan>, <mint>On-board</mint>, chip is `STM32F407VET6`, `168MHz`, `512KB` flash, `192KB` RAM 💅
- **`board_nordicnrf51_seeedTinyBLE`** — platform <cyan>`platform_nordicnrf51`</cyan>, <mint>On-board</mint>, chip is `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM 🎀
- **`board_ststm32_wio_3g`** — platform <cyan>`platform_ststm32`</cyan>, <mint>On-board</mint>, chip is `STM32F439VI`, `180MHz`, `2MB` flash, `256KB` RAM 🔥
- **`board_atmelsam_seeeduino_lorawan`** — platform <cyan>`platform_atmelsam`</cyan>, <peach>External</peach>, chip is `SAMD21G18A`, `48MHz`, `256KB` flash, `32KB` RAM 🫶
- **`board_ststm32_steval_mksboxv1`** — platform <cyan>`platform_ststm32`</cyan>, <peach>External</peach>, chip is `STM32L4R9ZI`, `120MHz`, `2MB` flash, `640KB` RAM 😭
- **`board_espressif32_wesp32`** — platform <cyan>`platform_espressif32`</cyan>, <peach>External</peach>, chip is `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 👑
- **`board_nordicnrf51_Sinobit`** — platform <cyan>`platform_nordicnrf51`</cyan>, <peach>External</peach>, chip is `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM 🌈
- **`board_gd32v_sipeed-longan-nano`** — platform <cyan>`platform_gd32v`</cyan>, <peach>External</peach>, chip is `GD32VF103CBT6`, `108MHz`, `128KB` flash, `32KB` RAM ⭐
- **`board_gd32v_sipeed-longan-nano-lite`** — platform <cyan>`platform_gd32v`</cyan>, <peach>External</peach>, chip is `GD32VF103C8T6`, `108MHz`, `64KB` flash, `20KB` RAM 💀
- **`board_kendryte210_sipeed-maix-bit`** — platform <cyan>`platform_kendryte210`</cyan>, <peach>External</peach>, chip is `K210`, `400MHz`, `16MB` flash, `6MB` RAM 🙈
- **`board_kendryte210_sipeed-maix-bit-mic`** — platform <cyan>`platform_kendryte210`</cyan>, <peach>External</peach>, chip is `K210`, `400MHz`, `16MB` flash, `6MB` RAM 🍓
- **`board_kendryte210_sipeed-maix-go`** — platform <cyan>`platform_kendryte210`</cyan>, <peach>External</peach>, chip is `K210`, `400MHz`, `16MB` flash, `6MB` RAM 🧚
- **`board_kendryte210_sipeed-maix-one-dock`** — platform <cyan>`platform_kendryte210`</cyan>, <peach>External</peach>, chip is `K210`, `400MHz`, `16MB` flash, `6MB` RAM 💜
- **`board_kendryte210_sipeed-maixduino`** — platform <cyan>`platform_kendryte210`</cyan>, <peach>External</peach>, chip is `K210`, `400MHz`, `16MB` flash, `6MB` RAM 💖
- **`board_kendryte210_sipeed-MF1`** — platform <cyan>`platform_kendryte210`</cyan>, <peach>External</peach>, chip is `K210`, `400MHz`, `16MB` flash, `6MB` RAM ✨
- **`board_nxplpc_dipcortexm0`** — platform <cyan>`platform_nxplpc`</cyan>, <peach>External</peach>, chip is `LPC11U24`, `50MHz`, `32KB` flash, `8KB` RAM 🦋

okay bestie we are STILL in the board list and honestly it's giving infinite scroll 💀 but every single one of these is a real, buildable board, so no skimming, no skipping, we're doing all of them. ✨

Same deal as before: board ID first, then the platform it lives in, then whether it's `External` or `On-board`, then the chip, the clock, the flash and the RAM. 👑

- **`board_atmelsam_sparkfun_samd21_9dof`** — platform `platform_atmelsam`, `External`, chip `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`. it's the 9DOF so yes bestie, the motion sensing is literally in the name 🧚
- **`board_espressif32_esp32thing`** — platform `platform_espressif32`, `External`, chip `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`. the classic little Thing, wifi and all, obsessed 🦋
- **`board_espressif32_sparkfun_lora_gateway_1-channel`** — platform `platform_espressif32`, `External`, chip `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`. one LoRa channel, gateway duties, main character energy 💅
- **`board_atmelsam_sparkfun_qwiic_micro_samd21e`** — platform `platform_atmelsam`, `External`, chip `SAMD21E18A`, `48MHz`, flash `256KB`, RAM `32KB`. micro by name, qwiic by nature 🌸
- **`board_sifive_sparkfun_redboard_v`** — platform `platform_sifive`, `On-board`, chip `FE310`, `320MHz`, flash `16MB`, RAM `16KB`. risc-v girlies rise, `320MHz` is not a drill 🔥
- **`board_sifive_sparkfun_thing_plus_v`** — platform `platform_sifive`, `On-board`, chip `FE310`, `320MHz`, flash `16MB`, RAM `16KB`. same iconic risc-v situation, different board ✨
- **`board_atmelsam_sparkfun_redboard_turbo`** — platform `platform_atmelsam`, `External`, chip `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`. turbo in the name, `48MHz` in the specs, we love a confident queen 💖
- **`board_atmelsam_sparkfun_samd21_dev_usb`** — platform `platform_atmelsam`, `External`, chip `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`. dev board, usb, no notes 🎀
- **`board_atmelsam_sparkfun_samd21_mini_usb`** — platform `platform_atmelsam`, `External`, chip `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`. mini form factor, same big specs, it's giving tiny but mighty 🐝
- **`board_atmelsam_sparkfun_samd21_proRF`** — platform `platform_atmelsam`, `External`, chip `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`. the Pro RF one, radio vibes included 🦋
- **`board_ststm32_sparky_v1`** — platform `platform_ststm32`, `External`, chip `STM32F303CCT6`, `72MHz`, flash `256KB`, RAM `40KB`. version one, still slaying at `72MHz` 👑
- **`board_nxplpc_lpc1114fn28`** — platform `platform_nxplpc`, `On-board`, chip `LPC1114FN28`, `48MHz`, flash `32KB`, RAM `4KB`. okay the `4KB` of RAM is a vibe check and a half, budget accordingly 😭
- **`board_nxplpc_ssci824`** — platform `platform_nxplpc`, `On-board`, chip `LPC824`, `30MHz`, flash `32KB`, RAM `8KB`. `8KB` of RAM bestie, we are being SO efficient 💀
- **`board_espressif32_ttgo-lora32-v1`** — platform `platform_espressif32`, `External`, chip `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`. lilygo TTGO LoRa, version one, iconic 🌈
- **`board_espressif32_ttgo-lora32-v2`** — platform `platform_espressif32`, `External`, chip `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`. version two of the same beloved situation ⭐
- **`board_espressif32_ttgo-t-beam`** — platform `platform_espressif32`, `External`, chip `ESP32`, `240MHz`, flash `4MB`, RAM `1.25MB`. `1.25MB` RAM?? not like the others, highkey the rich one here 💅
- **`board_espressif32_ttgo-t1`** — platform `platform_espressif32`, `External`, chip `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`. the T1, back to `320KB`, still valid, still cute 💖
- **`board_nordicnrf52_stct_nrf52_minidev`** — platform `platform_nordicnrf52`, `External`, chip `NRF52832`, `64MHz`, flash `512KB`, RAM `64KB`. nordic bluetooth queen, we stan 🫶
- **`board_teensy_teensy31`** — platform `platform_teensy`, `External`, chip `MK20DX256`, `72MHz`, flash `256KB`, RAM `64KB`. teensy 3.1, a legend, no cap 🎀
- **`board_teensy_teensy35`** — platform `platform_teensy`, `External`, chip `MK64FX512`, `120MHz`, flash `512KB`, RAM `255.99KB`. that `255.99KB` RAM is so specific and so real, whoever typed it was being fr fr 😭

---

and bestie, that's not the whole list — not even close. keep scrolling, we're still going 🌸

- **`board_teensy_teensy36`** — <pink>platform_teensy</pink> babe, and she's **External**, rockin' an `MK66FX1M0` at `180MHz`, with `1MB` of flash and `256KB` of RAM 💖 solid mid-tier icon
- **`board_teensy_teensy40`** — <pink>platform_teensy</pink> again, **External** energy, `IMXRT1062` at a *whopping* `600MHz` 🔥, `1.94MB` flash, `512KB` RAM — she's fast fr fr
- **`board_teensy_teensy41`** — <pink>platform_teensy</pink>, **External**, same `IMXRT1062` and `600MHz` but `7.75MB` flash?? 😭 and `512KB` RAM — storage queen, no cap 👑
- **`board_teensy_teensylc`** — <pink>platform_teensy</pink>, **External**, `MKL26Z64` at `48MHz`, `62KB` flash, `8KB` RAM — the tiny baby of the family 🎀 still slaying tho
- **`board_ststm32_thunder_pack`** — <purple>platform_ststm32</purple>, **External**, `STM32L072KZ` at `32MHz`, `192KB` flash, `20KB` RAM ⚡ low-power vibes
- **`board_siliconlabsefm32_tb_sense_12`** — <mint>platform_siliconlabsefm32</mint>, and bestie she's **On-board** 🦋 `EFR32MG12P432F1024` at `40MHz`, `1MB` flash, `256KB` RAM
- **`board_ststm32_hy_tinystm103tb`** — <purple>platform_ststm32</purple>, **External**, `STM32F103TBU6` at `72MHz`, `128KB` flash, `20KB` RAM ✨ lil workhorse
- **`board_atmelsam_tuinozero96`** — <cyan>platform_atmelsam</cyan>, **External**, `SAMD21G18A` at `48MHz`, `256KB` flash, `32KB` RAM 💜
- **`board_ststm32_vake_v1`** — <purple>platform_ststm32</purple>, **External**, `STM32F446RET6` at `180MHz`, `512KB` flash, `128KB` RAM 🌈 respectable specs ngl
- **`board_nordicnrf52_vbluno52`** — <lavender>platform_nordicnrf52</lavender>, **On-board**, `NRF52832` at `64MHz`, `512KB` flash, `64KB` RAM 🧚 BLE girly
- **`board_espressif32_vintlabs-devkit-v1`** — <yellow>platform_espressif32</yellow>, **External**, `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🔥 wifi princess
- **`board_espressif32_lolin_d32`** — <yellow>platform_espressif32</yellow>, **External**, `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 💅
- **`board_espressif32_lolin_d32_pro`** — <yellow>platform_espressif32</yellow>, **External**, `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM ✨ the *pro* one, periodt
- **`board_espressif32_lolin32`** — <yellow>platform_espressif32</yellow>, **External**, `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🦋 og lolin
- **`board_wiznet7500_wizwiki_w7500`** — <blue>platform_wiznet7500</blue>, **On-board**, `WIZNET7500` at `48MHz`, `128KB` flash, `48KB` RAM 🌊 ethernet moment
- **`board_wiznet7500_wizwiki_w7500eco`** — <blue>platform_wiznet7500</blue>, **On-board**, `WIZNET7500ECO` at `48MHz`, `128KB` flash, `48KB` RAM 💚 eco-friendly bestie
- **`board_wiznet7500_wizwiki_w7500p`** — <blue>platform_wiznet7500</blue>, **On-board**, `WIZNET7500P` at `48MHz`, `128KB` flash, `48KB` RAM ⭐
- **`board_nordicnrf51_waveshare_ble400`** — <lavender>platform_nordicnrf51</lavender>, **External**, `NRF51822` at `32MHz`, `256KB` flash, `32KB` RAM 🎀 old-school BLE
- **`board_espressif32_wemos_d1_mini32`** — <yellow>platform_espressif32</yellow>, **External**, `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🔥 mini but mighty
- **`board_espressif32_wemosbat`** — <yellow>platform_espressif32</yellow>, **External**, `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🔋 *bat* as in battery, iykyk

---

<pink>okay so that's the board lineup besties</pink> — every single one of these is a real, loadable board target with its platform, whether it's **External** or **On-board**, its MCU, clock speed, flash and RAM laid out plain 💖 next part keeps the list rollin', don't go anywhere 🫶

- **`board_gd32v_wio_lite_risc-v`** — ok so this one lives on <pink>`platform_gd32v`</pink>, debug comes in **External**, chip is `GD32VF103CBT6` running at <cyan>108MHz</cyan>, with `128KB` of flash and `32KB` of RAM. a RISC-V moment fr 💅

- **`board_ststm32_wraith32_v1`** — riding with <pink>`platform_ststm32`</pink>, **External** debug, `STM32F051K6` at <cyan>48MHz</cyan>, `32KB` flash, `7.75KB` RAM. the way that RAM is literally so tiny 😭

- **`board_infineonxmc_xmc1100_boot_kit`** — <pink>`platform_infineonxmc`</pink>, debug is **On-board**, `XMC1100` at <cyan>32MHz</cyan>, `64KB` flash, `16KB` RAM ✨

- **`board_infineonxmc_xmc1100_h_bridge2go`** — same <pink>`platform_infineonxmc`</pink> energy, **On-board** debug, `XMC1100` at <cyan>32MHz</cyan>, `64KB` flash, `16KB` RAM 🦋

- **`board_infineonxmc_xmc1100_xmc2go`** — <pink>`platform_infineonxmc`</pink>, **On-board** debug, `XMC1100` at <cyan>32MHz</cyan>, `64KB` flash, `16KB` RAM 🌸

- **`board_infineonxmc_xmc1300_boot_kit`** — <pink>`platform_infineonxmc`</pink>, **On-board** debug, `XMC1300` at <cyan>32MHz</cyan>, `64KB` flash, `16KB` RAM 💖

- **`board_infineonxmc_xmc1300_sense2gol`** — <pink>`platform_infineonxmc`</pink>, **On-board** debug, `XMC1300` at <cyan>32MHz</cyan>, `32KB` flash, `16KB` RAM. less flash than its sibling, no cap 🎀

- **`board_infineonxmc_xmc1400_boot_kit`** — <pink>`platform_infineonxmc`</pink>, **On-board** debug, `XMC1400` at <cyan>48MHz</cyan>, `1.95MB` flash, `16KB` RAM 🔥

- **`board_infineonxmc_xmc4200_distance2go`** — <pink>`platform_infineonxmc`</pink>, **On-board** debug, `XMC4200` at <cyan>80MHz</cyan>, `256KB` flash, `40KB` RAM ✨

- **`board_infineonxmc_xmc4700_relax_kit`** — <pink>`platform_infineonxmc`</pink>, **On-board** debug, `XMC4700` at <cyan>144MHz</cyan>, `2.00MB` flash, `1.95MB` RAM. that RAM is giving main character energy 👑

- **`board_espressif32_xinabox_cw02`** — <pink>`platform_espressif32`</pink>, **External** debug, `ESP32` at <cyan>240MHz</cyan>, `4MB` flash, `320KB` RAM 🫶

- **`board_nordicnrf52_hackaBLE`** — <pink>`platform_nordicnrf52`</pink>, **External** debug, `NRF52832` at <cyan>64MHz</cyan>, `512KB` flash, `64KB` RAM 💜

- **`board_nordicnrf51_ng_beacon`** — <pink>`platform_nordicnrf51`</pink>, **External** debug, `NRF51822` at <cyan>16MHz</cyan>, `256KB` flash, `32KB` RAM 🧚

- **`board_espressif32_iotbusio`** — <pink>`platform_espressif32`</pink>, **External** debug, `ESP32` at <cyan>240MHz</cyan>, `4MB` flash, `320KB` RAM ⭐

- **`board_espressif32_iotbusproteus`** — <pink>`platform_espressif32`</pink>, **External** debug, `ESP32` at <cyan>240MHz</cyan>, `4MB` flash, `320KB` RAM 🌈

- **`board_ststm32_sakuraio_evb_01`** — <pink>`platform_ststm32`</pink>, **On-board** debug, `STM32F411RET6` at <cyan>100MHz</cyan>, `1MB` flash, `128KB` RAM 💖

- **`board_nxplpc_ubloxc027`** — <pink>`platform_nxplpc`</pink>, **On-board** debug, `LPC1768` at <cyan>96MHz</cyan>, `512KB` flash, `64KB` RAM 🌸

- **`board_ststm32_ublox_c030_n211`** — <pink>`platform_ststm32`</pink>, **External** debug, `STM32F437VG` at <cyan>180MHz</cyan>, `1MB` flash, `256KB` RAM 🔥

- **`board_ststm32_ublox_c030_r410m`** — <pink>`platform_ststm32`</pink>, **On-board** debug, `STM32F437VG` at <cyan>180MHz</cyan>, `1MB` flash, `256KB` RAM 💅

- **`board_ststm32_ublox_c030_u201`** — <pink>`platform_ststm32`</pink>, **External** debug, `STM32F437VG` at <cyan>180MHz</cyan>, `1MB` flash, `256KB` RAM 🦋

---

<lavender>not me listing every single one of these like a certified board sommelier 🍓 keep scrolling bestie, the roster does not stop here…</lavender>

- <pink>**`board_nordicnrf52_ublox_evk_nina_b1`**</pink> — platform <purple>`platform_nordicnrf52`</purple>, chip situation **On-board**, MCU <cyan>`NRF52832`</cyan>, running at `64MHz`, with `512KB` of flash and `64KB` of RAM 💖

---

- <pink>**`board_ststm32_ublox_evk_odin_w2`**</pink> — platform <purple>`platform_ststm32`</purple>, chip situation **External**, MCU <cyan>`STM32F439ZIY6`</cyan>, clocking `168MHz`, `2MB` flash, `256KB` RAM ✨

---

- <pink>**`board_ststm32_mtb_ublox_odin_w2`**</pink> — platform <purple>`platform_ststm32`</purple>, chip situation **External**, MCU <cyan>`STM32F439ZIY6`</cyan>, clocking `168MHz`, `2MB` flash, `256KB` RAM 🦋

---

- <pink>**`board_nxplpc_lpc11u35_y5_mbug`**</pink> — platform <purple>`platform_nxplpc`</purple>, chip situation **External**, MCU <cyan>`LPC11U35`</cyan>, `48MHz`, `64KB` flash, `10KB` RAM 🌸

---

- <pink>**`board_nordicnrf51_nrf51822_y5_mbug`**</pink> — platform <purple>`platform_nordicnrf51`</purple>, chip situation **On-board**, MCU <cyan>`NRF51822`</cyan>, `16MHz`, `256KB` flash, `16KB` RAM 👑

---

# ✨ Mini-Module FT2232H ✨

The <pink>FT2232H Mini Module</pink> is a USB to dual channel serial/MPSSE/FIFO interface converter module based on the `FT2232H` USB Hi-Speed IC. The `FT2232H` handles **all** the USB signalling and protocol handling, like it does the absolute most 💅. The module gives you access to device I/O interfaces via 2 double row `0.1"` pitch male connectors. It's ideal for development purposes — like, to quickly prove functionality of adding USB to a target design, no cap. Official reference can be found here (the link on this page, bestie 🫶).

---

## 🎀 Contents

- Configuration
- Drivers
- Wiring Connections
- Platforms
- Frameworks
- Boards

---

## 💅 Configuration

You can configure the debugging tool using the `projectconf_debug_tool` option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = minimodule


If you would like to use this tool for firmware uploading, please change the upload protocol:

[env:myenv] platform = ... board = ... debug_tool = minimodule upload_protocol = minimodule


More options:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

## 🌸 Drivers

### Windows

- Step-by-step guide: Drivers, Zadig, Wiring
- Video tutorial

### Mac

<cyan>macOS</cyan> contains the default `FTDIUSBSerialDriver` driver which **conflicts** with debug tools which are based on this chip 😭. FTDI Chip company recommends removing this default driver from a system. Everything should work after system rebooting. See the detailed instruction in the official application note (Page 16, Section 4: Uninstalling FTDI Drivers on OS X) AN134: FTDI Drivers Installation guide for MAC OS X.

### Linux

Please install "udev" rules `faq_udev_rules`. If you already installed them before, please check that your rules are up-to-date or repeat the steps, fr fr ⭐.

---

## 🌈 Wiring Connections

Okay so wiring is next and it's a whole thing — keep reading, bestie 💖

### 🎀 FT2232H Mini-Module → Board JTAG Pin vibe check

okay bestie, here's the wiring glow-up — FT2232H Mini-Module Pin on the left, Board JTAG Pin in the middle, and what it actually *does* on the right:

- **`GND`** → **`GND`** — digital ground. the humble queen of the whole operation 🫶
- **`AD0`** → **`TCK`** — JTAG Return Test Clock ⏰
- **`AD1`** → **`TDI`** — Test Data In 📥
- **`AD2`** → **`TDO`** — Test Data Out 📤
- **`AD3`** → **`TMS`** — Test Mode State ✨
- **`RESET#`** → **`RESET`** — connect this pin to the (active low) reset input of the target CPU (`EN` for ESP32) 🔌

---

> 💡 also you're gonna need to connect `Vbus [CN3-1]` to `Vcc [CN3-3]` of FT2232H Mini-Module to power the FTDI chip. no cap, it will not wake up without it. See FT2232H Mini-Module Datasheet for the deets 📄

---

## 🌈 Platforms

the literal main characters you can build for:

- **`platform_espressif32`** — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. it's giving everywhere-all-at-once energy 📶
- **`platform_kendryte210`** — Kendryte K210 is an AI capable RISCV64 dual core SoC. brainy and dual-core, obsessed 🧠
- **`platform_sifive`** — SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. open source ate and left no crumbs 💅

---

## ⭐ Frameworks

and here's the framework bestie lineup:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to

---

control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. ✨

- **`framework_espidf`** — Espressif IoT Development Framework. It's the official development framework for ESP32, bestie. 👑

- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform. 💜

- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK, and the whole vibe here is *no OS support*. Bare metal era. 💅

- **`framework_kendryte-freertos-sdk`** — Kendryte SDK but with FreeRTOS support. That's the upgrade, no cap. 🔥

- **`framework_simba`** — `Simba` is an RTOS and build framework. It aims to make embedded programming easy and portable. 🦋

- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Iconic behaviour fr fr. 🎀

---

## 🌈 Boards 🌈

> **NOTE:** for more detailed board information, please scroll the tables below by horizontal. Like, sideways, bestie. The columns go places. 👉👉

- **`board_espressif32_esp32cam`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: 240MHz · Flash: 4MB · RAM: 320KB 📸

- **`board_espressif32_alksesp32`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: 240MHz · Flash: 4MB · RAM: 320KB ✨

- **`board_espressif32_az-delivery-devkit-v4`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: 240MHz · Flash: 16MB · RAM: 520KB 💖

- **`board_espressif32_featheresp32`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: 240MHz · Flash: 4MB · RAM: 320KB 🪶

- **`board_sifive_e310-arty`** — Platform: `platform_sifive` · Debug: On-board · MCU: `FE310` · Frequency: 450MHz · Flash: 16MB · RAM: 256MB 🚀

---

<lavender>okay and that's the slice for this part — the boards table keeps going, so don't you dare close the tab 💅</lavender>

okay bestie we're still deep in the ESP32 section of the board table and there is <pink>so</pink> many of them, but every single one is here, no skipping, we're eating this whole list 🍓

same columns as the rows above, in the same order: board ID, platform, that `External`/`On-board` column, MCU, clock, flash, RAM. ✨

- **`board_espressif32_briki_abc_esp32`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `3.25MB` flash, `320KB` RAM 💅
- **`board_espressif32_briki_mbc-wb_esp32`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `3.25MB` flash, `320KB` RAM 💅
- **`board_espressif32_d-duino-32`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_esp32doit-devkit-v1`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_pocket_32`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_fm-devkit`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_esp32vn-iot-uno`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_espectro32`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_espino32`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_esp-wrover-kit`** — `platform_espressif32`, `On-board`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 👑
- **`board_espressif32_esp32dev`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🔥
- **`board_espressif32_firebeetle32`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🔥
- **`board_espressif32_frogboard`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🐸
- **`board_espressif32_heltec_wifi_lora_32`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 📡
- **`board_espressif32_heltec_wifi_lora_32_V2`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `8MB` flash, `320KB` RAM 📡
- **`board_espressif32_heltec_wireless_stick`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `8MB` flash, `320KB` RAM 📡
- **`board_espressif32_hornbill32dev`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🦋
- **`board_espressif32_hornbill32minima`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🦋
- **`board_espressif32_iotaap_magnolia`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_mhetesp32devkit`** — `platform_espressif32`, `External`, ESP32, `240MHz`, `4MB` flash, `320KB` RAM 🌸

---

not me clocking that literally every single one of these runs `240MHz` and carries `320KB` RAM like it's a uniform 😭 the only glow-up in this whole chunk is the flash — most of them sit at `4MB`, the two briki boards are on `3.25MB`, and the Heltec pair (`board_espressif32_heltec_wifi_lora_32_V2` and `board_espressif32_heltec_wireless_stick`) flex `8MB` 💖

and the one board here that isn't `External`? `board_espressif32_esp-wrover-kit`, repping `On-board`, main character energy fr fr 👑

- **`board_espressif32_mhetesp32minikit`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 🦋
- **`board_espressif32_node32s`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> ✨
- **`board_espressif32_nodemcu-32s`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 💅
- **`board_espressif32_esp32-devkitlipo`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 🎀
- **`board_espressif32_esp32-evb`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 🌸
- **`board_espressif32_esp32-gateway`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 🔥
- **`board_espressif32_lopy`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 🍓
- **`board_espressif32_lopy4`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>1.25MB</blue> 👀 (yes bestie, she gets the glow-up RAM, not the lil 320KB one)
- **`board_espressif32_sg-o_airMon`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 🌈
- **`board_espressif32_wesp32`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 💜
- **`board_kendryte210_sipeed-maix-bit`** — platform <cyan>`platform_kendryte210`</cyan>, <purple>External</purple>, MCU <mint>K210</mint>, <yellow>400MHz</yellow>, flash <green>16MB</green>, RAM <blue>6MB</blue> 🧚
- **`board_kendryte210_sipeed-maix-bit-mic`** — platform <cyan>`platform_kendryte210`</cyan>, <purple>External</purple>, MCU <mint>K210</mint>, <yellow>400MHz</yellow>, flash <green>16MB</green>, RAM <blue>6MB</blue> 🎤
- **`board_kendryte210_sipeed-maix-go`** — platform <cyan>`platform_kendryte210`</cyan>, <purple>External</purple>, MCU <mint>K210</mint>, <yellow>400MHz</yellow>, flash <green>16MB</green>, RAM <blue>6MB</blue> 🛹
- **`board_kendryte210_sipeed-maix-one-dock`** — platform <cyan>`platform_kendryte210`</cyan>, <purple>External</purple>, MCU <mint>K210</mint>, <yellow>400MHz</yellow>, flash <green>16MB</green>, RAM <blue>6MB</blue> ⚓
- **`board_kendryte210_sipeed-maixduino`** — platform <cyan>`platform_kendryte210`</cyan>, <purple>External</purple>, MCU <mint>K210</mint>, <yellow>400MHz</yellow>, flash <green>16MB</green>, RAM <blue>6MB</blue> 🎡
- **`board_kendryte210_sipeed-MF1`** — platform <cyan>`platform_kendryte210`</cyan>, <purple>External</purple>, MCU <mint>K210</mint>, <yellow>400MHz</yellow>, flash <green>16MB</green>, RAM <blue>6MB</blue> 🌟
- **`board_espressif32_esp32thing`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 💖
- **`board_espressif32_sparkfun_lora_gateway_1-channel`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 📡
- **`board_espressif32_ttgo-lora32-v1`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 🛰️
- **`board_espressif32_ttgo-lora32-v2`** — platform <cyan>`platform_espressif32`</cyan>, <purple>External</purple>, MCU <mint>ESP32</mint>, <yellow>240MHz</yellow>, flash <green>4MB</green>, RAM <blue>320KB</blue> 🛰️

---

okay so <hotpink>notice the pattern</hotpink> bestie 👑 — every `board_espressif32_*` row is literally the same girl different outfit: <mint>ESP32</mint>, <yellow>240MHz</yellow>, <green>4MB</green> flash, <blue>320KB</blue> RAM, no cap. The <hotpink>one and only</hotpink> exception in this whole chunk is `board_espressif32_lopy4` flexing <blue>1.25MB</blue> of RAM instead, and honestly? she ate 💅

and then the <purple>`platform_kendryte210`</purple> girlies all match each other too — <mint>K210</mint>, <yellow>400MHz</yellow>, <green>16MB</green> flash, <blue>6MB</blue> RAM, across the board, fr fr 🔥

> also bestie, quick vibe check: the `<purple>External</purple>` tag on every single row means these platforms are installed externally (that's the platform type column, not a vibe, iykyk) 🌸

---

not me being emotionally attached to `board_espressif32_lopy4`'s RAM tho 😭 the way she's out here with <blue>1.25MB</blue> while everyone else in her class has <blue>320KB</blue>… main character energy, periodt ✨

- **`board_espressif32_ttgo-t-beam`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, and the trailing number is `1.25MB` 💖
- **`board_espressif32_ttgo-t1`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, trailing value `320KB` ✨
- **`board_espressif32_vintlabs-devkit-v1`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, trailing value `320KB` 🎀
- **`board_espressif32_lolin_d32`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, trailing value `320KB` 🦋
- **`board_espressif32_lolin_d32_pro`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, trailing value `320KB` 🌸
- **`board_espressif32_lolin32`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, trailing value `320KB` 💅
- **`board_espressif32_wemos_d1_mini32`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, trailing value `320KB` 🫶
- **`board_espressif32_wemosbat`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, trailing value `320KB` 😭
- **`board_espressif32_xinabox_cw02`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, trailing value `320KB` 🔥
- **`board_espressif32_iotbusio`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, trailing value `320KB` 👑
- **`board_espressif32_iotbusproteus`** — platform <cyan>`platform_espressif32`</cyan>, type External, MCU ESP32, `240MHz`, flash `4MB`, trailing value `320KB` 🌈

---

## 🐛 MSP Debug 🐛

The MSP debug stack (MSPDS) for all MSP430™ microcontrollers (MCUs) and SimpleLink™ MSP432™ devices? Bestie, it's <pink>two things at once</pink> and it's iconic for it. There's a **static library on the host system side**, and then there's an **embedded firmware that runs on debug tools** — and by debug tools we mean the MSP-FET, MSP-FET430UIF, or on-board eZ debuggers. 🧚

It's literally the bridging element between all PC software and all MSP430 and SimpleLink MSP432 microcontroller derivatives, and it handles tasks like code download, stepping through code, or break points. Official reference can be found here. ⭐

### 📋 Contents

- Configuration
- Drivers
- Platforms
- Frameworks
- Boards

### ⚙️ Configuration

You can configure the debugging tool using the `projectconf_debug_tool` option in `projectconf`, like so:

[env:myenv] platform = ... board = ... debug_tool = mspdebug


> slay, that's genuinely the whole vibe right there 💜

So if you wanna use this tool for firmware uploading, bestie, you gotta swap up your upload protocol, no cap:

[env:myenv] platform = ... board = ... debug_tool = mspdebug upload_protocol = mspdebug


There's more where that came from:

- `projectconf_section_env_debug` 💅
- `projectconf_section_env_upload` 💅

---

## 🌈 Drivers 🌈

Okay so depending on your OS, the driver sitch is *very* different, so listen up:

### 🪟 Windows

Go read the *"USB Driver Installation"* guide for your board, periodt. That's the move. 🫶

### 🍎 Mac

Not required. That's it, that's the whole vibe. Iconic, honestly. ✨

### 🐧 Linux

Please install the *"udev"* rules → `faq_udev_rules`. And if you already installed them before? Double-check your rules are up-to-date, or just repeat the steps. Don't skip this, fr fr. 😭

---

## 🌸 Platforms 🌸

- **`platform_timsp430`** — MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications. 🦋

---

## 🎀 Frameworks 🎀

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. Main character energy tbh. 👑

---

## ⭐ Boards ⭐

> **NOTE:** for more detailed board information, please scroll the tables below horizontally. (Yes bestie, we're going sideways. It's giving wide.)

Every single one of these is on `platform_timsp430` with `On-board` debug, so here's the full rundown:

- **`board_timsp430_lpmsp430fr5739`** — Platform: `platform_timsp430`, Debug: `On-board`, MCU: `MSP430FR5739`, Frequency: `16MHz`, Flash: `15.37KB`, RAM: `1KB` 💖
- **`board_timsp430_lpmsp430f5529`** — Platform: `platform_timsp430`, Debug: `On-board`, MCU: `MSP430F5529`, Frequency: `25MHz`, Flash: `47KB`, RAM: `8KB` 💖
- **`board_timsp430_lpmsp430fr2311`** — Platform: `platform_timsp430`, Debug: `On-board`, MCU: `MSP430FR2311`, Frequency: `16MHz`, Flash: `3.75KB`, RAM: `1KB` 💖
- **`board_timsp430_lpmsp430fr2433`** — Platform: `platform_timsp430`, Debug: `On-board`, MCU: `MSP430FR2433`, Frequency: `8MHz`, Flash: `15KB`, RAM: `4KB` 💖
- **`board_timsp430_lpmsp430fr4133`** — Platform: `platform_timsp430`, Debug: `On-board`, MCU: `MSP430FR4133`, Frequency: `8MHz`, Flash: `15KB`, RAM: `2KB` 💖
- **`board_timsp430_lpmsp430fr5969`** — Platform: `platform_timsp430`, Debug: `On-board`, MCU: `MSP430FR5969`, Frequency: `8MHz`, Flash: `47KB`, RAM: `2KB` 💖
- **`board_timsp430_lpmsp430fr5994`** — Platform: `platform_timsp430`, Debug: `On-board`, MCU: `MSP430FR5994`, Frequency: `16MHz`, Flash: `256KB`, RAM: `4KB` 💖
- **`board_timsp430_lpmsp430fr6989`** — Platform: `platform_timsp430`, Debug: `On-board`, MCU: `MSP430FR6989`, Frequency: `8MHz`, Flash: `47KB`, RAM: `2KB` 💖
- **`board_timsp430_lpmsp430g2231`** — Platform: `platform_timsp430`, Debug: `On-board`, MCU: `MSP430G2231`, Frequency: `1MHz`, Flash: `2KB`, RAM: `256B` 💖
- **`board_timsp430_lpmsp430g2452`** — Platform: `platform_timsp430`, Debug: `On-board`, MCU: `MSP430G2452`, Frequency: `16MHz`, Flash: `8KB`, RAM: `256B` 💖

That `256KB` flash on the `lpmsp430fr5994`? Ate. 💅

│ board_timsp430_lpmsp430g2553 │ platform_timsp430 │ On-board │ MSP430G2553 │ 16MHz │ 16KB │ 512B │ └───────────────────────────────┴───────────────────┴──────────┴──────────────┴───────────┴─────────┴──────┘


---

## ✨ Olimex ARM-USB-OCD-H ✨

Okay bestie, meet the <hotpink>Olimex ARM-USB-OCD-H</hotpink> 🦋 — it's a <purple>High-speed 3-IN-1 fast USB ARM/ESP32 JTAG</purple>, plus a <purple>USB-to-RS232 virtual port</purple>, plus a <purple>power supply 5VDC device</purple>, all in one. The <cyan>Official reference</cyan> can be found here. That's the whole vibe. 💅

### 🎀 Contents 🎀

- Configuration
- Drivers
- Wiring Connections
- Platforms
- Frameworks
- Boards

### 🌸 Configuration 🌸

So you wanna set up your debug tool? You do that with the `projectconf_debug_tool` option in `projectconf`, like:

[env:myenv] platform = ... board = ... debug_tool = olimex-arm-usb-ocd-h


And if you'd rather use this tool for <pink>firmware uploading</pink> too, you just switch up the upload protocol:

[env:myenv] platform = ... board = ... debug_tool = olimex-arm-usb-ocd-h upload_protocol = olimex-arm-usb-ocd-h


More options, because there's always more:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

### 🧚 Drivers 🧚

**Windows**

- Step-by-step guide: Drivers, Zadig, Wiring
- Video tutorial

**Mac** — ngl, macOS comes with a default `FTDIUSBSerialDriver` driver and it <red>conflicts</red> with debug tools that are based on this chip. 😭 The FTDI Chip company literally recommends removing this default driver from your system. Everything should work after you reboot the system. For the full tea, see the detailed instruction in the official application note (<yellow>Page 16, Section 4: Uninstalling FTDI Drivers on OS X</yellow>) `AN134: FTDI Drivers Installation guide for MAC OS X`.

**Linux** — bestie please install the `"udev"` rules `faq_udev_rules`. 🙈 And if you already installed them before, double-check that your rules are up-to-date or just repeat the steps, no shame.

### 💜 Wiring Connections 💜

> [image]

So here's the pin tea, one row at a time — left side is the <hotpink>Olimex ARM-USB-OCD-H JTAG 20-Pin Connector</hotpink>:

- `1` → `VCC` — Positive Supply Voltage — Power supply for JTAG interface drivers
- `4` → `GND` — Digital ground
- `5` → `TDI` — Test Data In pin
- `7` → `TMS` — Test Mode State pin
- `9` → `TCK` — JTAG Return Test Clock
- `13` → `TDO` — Test Data Out pin
- `3` → `RESET` — Connect this pin to the (active low) reset input of the target CPU (EN for ESP32)

### ⭐ Platforms ⭐

- **`platform_espressif32`** — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.
- **`platform_kendryte210`** — Kendryte K210 is an AI capable RISCV64 dual core SoC.
- **`platform_sifive`** — SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before.

### Frameworks

okay bestie, here's the tea on all the frameworks you can vibe with 💅 these are the literal backbone vibes for your board projects, so pay attention:

- **`framework_arduino`** — Arduino Wiring-based Framework, and it lets you write cross-platform software to control devices attached to a wide range of Arduino boards. It's for creating all kinds of creative coding, interactive objects, spaces or physical experiences. Iconic behavior, honestly. 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. It's the official development framework for ESP32. Periodt.
- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform ✨
- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK, but make it *without* OS support.
- **`framework_kendryte-freertos-sdk`** — Kendryte SDK, this time *with* FreeRTOS support 🦋
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. We love a low-effort-high-reward king 👑
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. She's responsible AND versatile, main character energy fr fr 🔥

---

### Boards

> NOTE: For more detailed board information please scroll tables below by horizontal. 👀 (yes, the original table is WIDE, so you gotta scroll sideways, no cap)

okay so this next part is the board roster and it is *long*. Grab a snack 🍓. Each one lists its Name, Platform, Debug, MCU, Frequency, Flash and RAM — imma keep every single detail exactly as it is because we don't play with specs around here:

- **`board_espressif32_esp32cam`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
- **`board_espressif32_alksesp32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
- **`board_espressif32_az-delivery-devkit-v4`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 16MB · RAM: 520KB
- **`board_espressif32_featheresp32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
- **`board_sifive_e310-arty`** — Platform: `platform_sifive` · Debug: On-board · MCU: FE310 · Frequency: 450MHz · Flash: 16MB · RAM: 256MB ✨ (look at that RAM, she's thriving)
- **`board_espressif32_briki_abc_esp32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 3.25MB · RAM: 320KB
- **`board_espressif32_briki_mbc-wb_esp32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 3.25MB · RAM: 320KB
- **`board_espressif32_d-duino-32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
- **`board_espressif32_esp32doit-devkit-v1`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
- **`board_espressif32_pocket_32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
- **`board_espressif32_fm-devkit`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
- **`board_espressif32_esp32vn-iot-uno`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB

- **`board_espressif32_espectro32`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 💖

- **`board_espressif32_espino32`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` ✨

- **`board_espressif32_esp-wrover-kit`** — platform `platform_espressif32`, debug: <pink>On-board</pink> (yes bestie, this one ships with its own debugger, main character energy fr), MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 👑

- **`board_espressif32_esp32dev`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🔥

- **`board_espressif32_firebeetle32`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🐞

- **`board_espressif32_frogboard`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🐸

- **`board_espressif32_heltec_wifi_lora_32`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🌈

- **`board_espressif32_heltec_wifi_lora_32_V2`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash <green>`8MB`</green>, RAM `320KB` 💚

- **`board_espressif32_heltec_wireless_stick`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash <green>`8MB`</green>, RAM `320KB` 🦋

- **`board_espressif32_hornbill32dev`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🐦

- **`board_espressif32_hornbill32minima`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🐦‍⬛

- **`board_espressif32_iotaap_magnolia`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🌸

- **`board_espressif32_mhetesp32devkit`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🎀

- **`board_espressif32_mhetesp32minikit`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🎀

- **`board_espressif32_node32s`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` ⭐

- **`board_espressif32_nodemcu-32s`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🫶

- **`board_espressif32_esp32-devkitlipo`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🔋

- **`board_espressif32_esp32-evb`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 💅

- **`board_espressif32_esp32-gateway`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🚪

- **`board_espressif32_lopy`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🐍

- **`board_espressif32_lopy4`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM <purple>`1.25MB`</purple> — okay so THIS one is the RAM girlie of the group, everybody else is sitting at `320KB` and she showed up with `1.25MB`, we love a generous queen 💜

- **`board_espressif32_sg-o_airMon`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🌬️

- **`board_espressif32_wesp32`** — platform `platform_espressif32`, debug: External, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` ⚡

---

okay and if you're side-eyeing that one lonely <pink>On-board</pink> up there — `board_espressif32_esp-wrover-kit` — that's not a typo bestie, that's just her having a debugger built in while literally every other board on this stretch of the list says External and expects you to bring your own. not me being jealous of a dev board 😭 no cap.

and the flash column is doing its own little storyline too: mostly `4MB`, with the two Heltec friends (`board_espressif32_heltec_wifi_lora_32_V2` and `board_espressif32_heltec_wireless_stick`) stepping up to `8MB`. meanwhile the MCU and clock columns are giving absolutely zero drama — every single row is `ESP32` at `240MHz`, consistent queens, periodt. ✨

- `board_kendryte210_sipeed-maix-bit` — platform <purple>`platform_kendryte210`</purple>, External, MCU `K210`, 400MHz, RAM 16MB, flash 6MB
- `board_kendryte210_sipeed-maix-bit-mic` — platform <purple>`platform_kendryte210`</purple>, External, MCU `K210`, 400MHz, RAM 16MB, flash 6MB
- `board_kendryte210_sipeed-maix-go` — platform <purple>`platform_kendryte210`</purple>, External, MCU `K210`, 400MHz, RAM 16MB, flash 6MB
- `board_kendryte210_sipeed-maix-one-dock` — platform <purple>`platform_kendryte210`</purple>, External, MCU `K210`, 400MHz, RAM 16MB, flash 6MB
- `board_kendryte210_sipeed-maixduino` — platform <purple>`platform_kendryte210`</purple>, External, MCU `K210`, 400MHz, RAM 16MB, flash 6MB
- `board_kendryte210_sipeed-MF1` — platform <purple>`platform_kendryte210`</purple>, External, MCU `K210`, 400MHz, RAM 16MB, flash 6MB
- `board_espressif32_esp32thing` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_sparkfun_lora_gateway_1-channel` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_ttgo-lora32-v1` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_ttgo-lora32-v2` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_ttgo-t-beam` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 1.25MB
- `board_espressif32_ttgo-t1` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_vintlabs-devkit-v1` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_lolin_d32` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_lolin_d32_pro` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_lolin32` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_wemos_d1_mini32` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_wemosbat` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_xinabox_cw02` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_iotbusio` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB
- `board_espressif32_iotbusproteus` — platform <purple>`platform_espressif32`</purple>, External, MCU `ESP32`, 240MHz, RAM 4MB, flash 320KB

---

# 🌈 Olimex ARM-USB-OCD 🌈

okay bestie, meet the <hotpink>Olimex ARM-USB-OCD</hotpink> 💅

It's a <yellow>3-IN-1</yellow> fast USB ARM/ESP32 JTAG, USB-to-RS232 virtual port and power supply <cyan>5-9-12VDC</cyan> device (supported by <purple>OpenOCD</purple> ARM debugger software) ✨. Official reference can be found here 🔗.

---

## 🎀 Contents 🎀

- Configuration
- Drivers
- Wiring Connections
- Platforms
- Frameworks
- Boards

---

## 💖 Configuration 💖

You can configure debugging tool using <hotpink>`projectconf_debug_tool`</hotpink> option in <hotpink>`projectconf`</hotpink>:

[env:myenv] platform = ... board = ... debug_tool = olimex-arm-usb-ocd


If you would like to use this tool for firmware uploading, please change upload protocol:

[env:myenv] platform = ... board = ... debug_tool = olimex-arm-usb-ocd upload_protocol = olimex-arm-usb-ocd


<pink>More options, bestie:</pink>

- <purple>`projectconf_section_env_debug`</purple>
- <purple>`projectconf_section_env_upload`</purple>

---

## ✨ Drivers ✨

### 💻 Windows

- <cyan>Step-by-step guide: Drivers, Zadig, Wiring</cyan>
- <cyan>Video tutorial</cyan>

### 🍎 Mac

<pink>Okay so macOS ships with a default `FTDIUSBSerialDriver` driver, and it *lowkey beefs* with debug tools built on this chip. FTDI Chip company themselves recommend yeeting that default driver off your system. After you reboot everything should just work. Full tea is in the official application note (Page 16, Section 4: Uninstalling FTDI Drivers on OS X) AN134: FTDI Drivers Installation guide for MAC OS X.</pink>

### 🐧 Linux

<pink>Please install the `"udev"` rules, see `faq_udev_rules`. If you already did that before, pls double-check your rules are up-to-date or just redo the steps. No cap. 💅</pink>

---

## 🔌 Wiring Connections 🔌

<purple>[image]</purple>

<pink>The vibe check on pins, from the `Olimex ARM-USB-OCD JTAG 20-Pin Connector` to your board's `JTAG Pin`:</pink>

- <cyan>Pin `1` → `VCC`</cyan> — Positive Supply Voltage — Power supply for JTAG interface drivers
- <cyan>Pin `4` → `GND`</cyan> — Digital ground
- <cyan>Pin `5` → `TDI`</cyan> — Test Data In pin
- <cyan>Pin `7` → `TMS`</cyan> — Test Mode State pin
- <cyan>Pin `9` → `TCK`</cyan> — JTAG Return Test Clock
- <cyan>Pin `13` → `TDO`</cyan> — Test Data Out pin
- <cyan>Pin `3` → `RESET`</cyan> — Connect this pin to the (active low) reset input of the target CPU (`EN` for ESP32)

---

## 🌈 Platforms 🌈

- <hotpink>`platform_espressif32`</hotpink> — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.
- <hotpink>`platform_kendryte210`</hotpink> — Kendryte K210 is an AI capable RISCV64 dual core SoC.
- <hotpink>`platform_sifive`</hotpink> — SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before.

---

## 🎀 Frameworks 🎀

- <lavender>`framework_arduino`</lavender> — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- <lavender>`framework_espidf`</lavender> — Espressif IoT Development Framework. Official development framework for ESP32.
- <lavender>`framework_freedom-e-sdk`</lavender> — Open Source Software for Developing on the SiFive Freedom E Platform
- <lavender>`framework_kendryte-standalone-sdk`</lavender> — Kendryte Standalone SDK without OS support
- <lavender>`framework_kendryte-freertos-sdk`</lavender> — Kendryte SDK with FreeRTOS support
- <lavender>`framework_simba`</lavender> — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable.
- <lavender>`framework_zephyr`</lavender> — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind.

---

## 👑 Boards 👑

> <yellow>**NOTE:**</yellow>
> For more detailed board information please scroll tables below by horizontal.

Okay so we're deep in board-list territory now and this stretch is lowkey an ESP32 takeover 🦋 — plus one absolutely iconic RISC-V bestie who wandered into the wrong friend group and is *thriving* 👑.

Quick reminder of the columns, bestie, because the table is giving **Name** / **Platform** / **Debug** / **MCU** / **Frequency** / **Flash** / **RAM** energy ✨

---

- **`board_espressif32_esp32cam`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 💖
- **`board_espressif32_alksesp32`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` ✨
- **`board_espressif32_az-delivery-devkit-v4`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `16MB`, RAM `520KB` 🌸 (look at that RAM, she's *fed*)
- **`board_espressif32_featheresp32`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🎀
- **`board_sifive_e310-arty`** — platform `platform_sifive`, debug `On-board`, MCU `FE310`, `450MHz`, flash `16MB`, RAM `256MB` 🔥 <rainbow>the main character of this whole chunk, no cap</rainbow> — different platform, different MCU, on-board debug, and `256MB` of RAM like it's nothing 💅
- **`board_espressif32_briki_abc_esp32`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `3.25MB`, RAM `320KB` 🦋
- **`board_espressif32_briki_mbc-wb_esp32`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `3.25MB`, RAM `320KB` 🦋 (her twin sister, same `3.25MB`, obsessed)
- **`board_espressif32_d-duino-32`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 💜
- **`board_espressif32_esp32doit-devkit-v1`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` ⭐
- **`board_espressif32_pocket_32`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🍓
- **`board_espressif32_fm-devkit`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🌈
- **`board_espressif32_esp32vn-iot-uno`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🧚
- **`board_espressif32_espectro32`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 👑
- **`board_espressif32_espino32`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 💖
- **`board_espressif32_esp-wrover-kit`** — platform `platform_espressif32`, debug `On-board`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` ✨ (not me clocking the `On-board` debug here, she brought her own debugger to the function 💅)
- **`board_espressif32_esp32dev`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🎀
- **`board_espressif32_firebeetle32`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🔥
- **`board_espressif32_frogboard`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🐸 (iykyk)
- **`board_espressif32_heltec_wifi_lora_32`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 📡
- **`board_espressif32_heltec_wifi_lora_32_V2`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `8MB`, RAM `320KB` 🌸 (the `V2` glow-up doubled the flash to `8MB`, periodt)
- **`board_espressif32_heltec_wireless_stick`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `8MB`, RAM `320KB` 🦋
- **`board_espressif32_hornbill32dev`** — platform `platform_espressif32`, debug `External`, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 💜

---

Not the `External` debug vibe check hitting literally every single ESP32 in this batch while `board_sifive_e310-arty` and `board_espressif32_esp-wrover-kit` are the only two serving `On-board` 😭 — and the flash sizes are out here doing their own thing too: `3.25MB`, `4MB`, `8MB`, `16MB`, every girl a different era 💀. Anyway bestie, the list keeps going, so keep scrolling, we're not done yet 🫶

okay continuing the board glow-up list 💅 every single one of these is <pink>External</pink>, so jot that down:

- **`board_espressif32_hornbill32minima`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` ✨
- **`board_espressif32_iotaap_magnolia`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 🌸
- **`board_espressif32_mhetesp32devkit`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 💖
- **`board_espressif32_mhetesp32minikit`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 🦋
- **`board_espressif32_node32s`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` ⭐
- **`board_espressif32_nodemcu-32s`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 👑
- **`board_espressif32_esp32-devkitlipo`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 🔥
- **`board_espressif32_esp32-evb`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 💜
- **`board_espressif32_esp32-gateway`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 🌈
- **`board_espressif32_lopy`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 🎀
- **`board_espressif32_lopy4`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `1.25MB` 😭 (not me getting jealous of the extra RAM)
- **`board_espressif32_sg-o_airMon`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 🌸
- **`board_espressif32_wesp32`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` ✨

and now the whole K210 era enters the chat, they're all <cyan>External</cyan>, MCU <purple>K210</purple>, running at `400MHz`, flash `16MB`, RAM `6MB` 🧚:

- **`board_kendryte210_sipeed-maix-bit`** — platform `platform_kendryte210`, External, MCU K210, `400MHz`, flash `16MB`, RAM `6MB` 💖
- **`board_kendryte210_sipeed-maix-bit-mic`** — platform `platform_kendryte210`, External, MCU K210, `400MHz`, flash `16MB`, RAM `6MB` 🦋
- **`board_kendryte210_sipeed-maix-go`** — platform `platform_kendryte210`, External, MCU K210, `400MHz`, flash `16MB`, RAM `6MB` ⭐
- **`board_kendryte210_sipeed-maix-one-dock`** — platform `platform_kendryte210`, External, MCU K210, `400MHz`, flash `16MB`, RAM `6MB` 👑
- **`board_kendryte210_sipeed-maixduino`** — platform `platform_kendryte210`, External, MCU K210, `400MHz`, flash `16MB`, RAM `6MB` 🔥
- **`board_kendryte210_sipeed-MF1`** — platform `platform_kendryte210`, External, MCU K210, `400MHz`, flash `16MB`, RAM `6MB` 💜

and we're back to the ESP32 girlies 💅 all of these are <pink>External</pink>, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB`:

- **`board_espressif32_esp32thing`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 🌈
- **`board_espressif32_sparkfun_lora_gateway_1-channel`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 🎀
- **`board_espressif32_ttgo-lora32-v1`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` ✨
- **`board_espressif32_ttgo-lora32-v2`** — platform `platform_espressif32`, External, MCU ESP32, `240MHz`, flash `4MB`, RAM `320KB` 🌸

- `board_espressif32_ttgo-t-beam` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 1.25MB
- `board_espressif32_ttgo-t1` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 320KB
- `board_espressif32_vintlabs-devkit-v1` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 320KB
- `board_espressif32_lolin_d32` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 320KB
- `board_espressif32_lolin_d32_pro` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 320KB
- `board_espressif32_lolin32` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 320KB
- `board_espressif32_wemos_d1_mini32` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 320KB
- `board_espressif32_wemosbat` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 320KB
- `board_espressif32_xinabox_cw02` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 320KB
- `board_espressif32_iotbusio` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 320KB
- `board_espressif32_iotbusproteus` — `platform_espressif32`, External, ESP32, 240MHz, 4MB, 320KB

---

## 💅 Olimex ARM-USB-TINY-H

okay bestie, this one is <hotpink>low-cost</hotpink> AND <hotpink>high-speed</hotpink> ARM/ESP32 USB JTAG, like it really said budget queen but make it fast. The official reference can be found <cyan>here</cyan>. 💖

### 📋 Contents

- Configuration
- Drivers
- Wiring Connections
- Platforms
- Frameworks
- Boards

### ⚙️ Configuration

You can configure debugging tool using `projectconf_debug_tool` option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = olimex-arm-usb-tiny-h


If you would like to use this tool for firmware uploading, please change upload protocol:

[env:myenv] platform = ... board = ... debug_tool = olimex-arm-usb-tiny-h upload_protocol = olimex-arm-usb-tiny-h


More options:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

### 🚗 Drivers

**Windows** 🌸

- Step-by-step guide: Drivers, Zadig, Wiring
- Video tutorial

**Mac** 🍓

- macOS contains default `FTDIUSBSerialDriver` driver which conflicts with debug tools which are based on this chip. FTDI Chip company recommends removing this default driver from a system. Everything should work after system rebooting. See detailed instruction in official application note (Page 16, Section 4: Uninstalling FTDI Drivers on OS X) *AN134: FTDI Drivers Installation guide for MAC OS X*

**Linux** 🐧

- Please install "udev" rules `faq_udev_rules`. If you already installed them before, please check that your rules are up-to-date or repeat steps.

### 🔌 Wiring Connections

`[image]`

okay so this is the <purple>Olimex ARM-USB-TINY-H JTAG 20-Pin Connector</purple> mapping, and ngl the way each pin lines up with a <mint>Board JTAG Pin</mint> and a <peach>Description</peach> is giving very much organized:

- **`1`** → Board JTAG Pin **`VCC`** — Positive Supply Voltage — Power supply for JTAG interface drivers
- **`4`** → Board JTAG Pin **`GND`** — Digital ground
- **`5`** → Board JTAG Pin **`TDI`** — Test Data In pin
- **`7`** → Board JTAG Pin **`TMS`** — Test Mode State pin
- **`9`** → Board JTAG Pin **`TCK`** — JTAG Return Test Clock
- **`13`** → Board JTAG Pin **`TDO`** — Test Data Out pin
- **`3`** → Board JTAG Pin **`RESET`** — Connect this pin to the (active low) reset input of the target CPU (EN for ESP32)

## 🧚 Platforms

okay bestie, here's the platform lineup, and every single one of these slays in its own way 💖

- **`platform_espressif32`** — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. ✨
- **`platform_kendryte210`** — Kendryte K210 is an AI capable RISCV64 dual core SoC. 🔥
- **`platform_sifive`** — SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. 👑

---

## 🌈 Frameworks

the framework roster, no cap, every one of these is iconic in its own lane 🎀

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 💅
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 🦋
- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform
- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK without OS support
- **`framework_kendryte-freertos-sdk`** — Kendryte SDK with FreeRTOS support
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. ⭐
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 🌸

---

## 👑 Boards

> **NOTE:**
> For more detailed board information please scroll tables below by horizontal. 🙈

lowkey this next part is a whole vibe check of every board, so buckle up bestie, we're going down the list one by one 💜

- **`board_espressif32_esp32cam`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: `240MHz` · Flash: `4MB` · RAM: `320KB`
- **`board_espressif32_alksesp32`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: `240MHz` · Flash: `4MB` · RAM: `320KB`
- **`board_espressif32_az-delivery-devkit-v4`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: `240MHz` · Flash: `16MB` · RAM: `520KB`
- **`board_espressif32_featheresp32`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: `240MHz` · Flash: `4MB` · RAM: `320KB`
- **`board_sifive_e310-arty`** — Platform: `platform_sifive` · Debug: On-board · MCU: `FE310` · Frequency: `450MHz` · Flash: `16MB` · RAM: `256MB`
- **`board_espressif32_briki_abc_esp32`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: `240MHz` · Flash: `3.25MB` · RAM: `320KB`
- **`board_espressif32_briki_mbc-wb_esp32`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: `240MHz` · Flash: `3.25MB` · RAM: `320KB`
- **`board_espressif32_d-duino-32`** — Platform: `platform_espressif32` · Debug: External · MCU: `ESP32` · Frequency: `240MHz` · Flash: `4MB` · RAM: `320KB`

- **`board_espressif32_esp32doit-devkit-v1`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_pocket_32`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_fm-devkit`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_esp32vn-iot-uno`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_espectro32`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_espino32`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_esp-wrover-kit`** — platform `platform_espressif32`, <cyan>On-board</cyan>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 👑

- **`board_espressif32_esp32dev`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_firebeetle32`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_frogboard`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_heltec_wifi_lora_32`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_heltec_wifi_lora_32_V2`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash <rainbow>`8MB`</rainbow>, RAM `320KB` ✨

- **`board_espressif32_heltec_wireless_stick`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash <rainbow>`8MB`</rainbow>, RAM `320KB` ✨

- **`board_espressif32_hornbill32dev`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_hornbill32minima`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_iotaap_magnolia`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_mhetesp32devkit`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_mhetesp32minikit`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_node32s`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_nodemcu-32s`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_esp32-devkitlipo`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_esp32-evb`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_esp32-gateway`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

- **`board_espressif32_lopy`** — platform `platform_espressif32`, <pink>External</pink>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋

---

okay bestie real talk, that was a whole *wall* of ESP32 boards and they're all giving the same energy: `platform_espressif32`, `ESP32`, `240MHz`, `320KB` of RAM, and the only two things that ever switch up are the flash size and whether the connection type says <pink>External</pink> or <cyan>On-board</cyan> 💅

so like, the ✨lore✨ in this chunk:

- literally every single board here runs `240MHz` with `320KB` of RAM, no cap, zero exceptions, they are all matching outfits 🎀
- flash is `4MB` for almost everybody — the *only* two glow-ups are **`board_espressif32_heltec_wifi_lora_32_V2`** and **`board_espressif32_heltec_wireless_stick`**, both rocking `8MB` and honestly? ate 🍓
- connection type is <pink>External</pink> across the board except **`board_espressif32_esp-wrover-kit`**, the one and only <cyan>On-board</cyan> queen in this whole lineup 👑
- and yeah, they're all under `platform_espressif32` — same platform, different board names, iykyk 🌈

> heads up bestie: the board name in the first column is the literal string you'd drop into your config, so copy it character for character — the dashes and underscores are *not* interchangeable, and guessing here is giving "undefined behavior" energy 😭

also not me noticing **`board_espressif32_esp-wrover-kit`** is the only one that isn't <pink>External</pink>… main character behavior fr fr 🧚

the pattern is so clean it's almost boring, but that's the point — same MCU, same clock, same RAM, and you only care about which one you actually have on your desk 💜

- **`board_espressif32_lopy4`** — it's giving `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB flash, and 1.25MB of RAM 💖 the roomy one, we love to see it
- **`board_espressif32_sg-o_airMon`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 🦋 lil air-quality icon
- **`board_espressif32_wesp32`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB ✨
- **`board_kendryte210_sipeed-maix-bit`** — switchin it UP, bestie: `platform_kendryte210`, External, <hotpink>K210</hotpink>, <cyan>400MHz</cyan>, 16MB flash, 6MB RAM 👑 different silicon, same slay
- **`board_kendryte210_sipeed-maix-bit-mic`** — `platform_kendryte210`, External, K210, <cyan>400MHz</cyan>, 16MB, 6MB 🎤 (yes the mic variant, iconic)
- **`board_kendryte210_sipeed-maix-go`** — `platform_kendryte210`, External, K210, <cyan>400MHz</cyan>, 16MB, 6MB 🌈
- **`board_kendryte210_sipeed-maix-one-dock`** — `platform_kendryte210`, External, K210, <cyan>400MHz</cyan>, 16MB, 6MB 🫶
- **`board_kendryte210_sipeed-maixduino`** — `platform_kendryte210`, External, K210, <cyan>400MHz</cyan>, 16MB, 6MB 🍓
- **`board_kendryte210_sipeed-MF1`** — `platform_kendryte210`, External, K210, <cyan>400MHz</cyan>, 16MB, 6MB ⭐

---

- **`board_espressif32_esp32thing`** — back to `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 💜
- **`board_espressif32_sparkfun_lora_gateway_1-channel`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 📡 one channel, all vibes
- **`board_espressif32_ttgo-lora32-v1`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 🌸
- **`board_espressif32_ttgo-lora32-v2`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 🎀 (v2, the glow-up)
- **`board_espressif32_ttgo-t-beam`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, <yellow>1.25MB</yellow> 🔥 ooh she got the bigger RAM, main character energy
- **`board_espressif32_ttgo-t1`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB ✨
- **`board_espressif32_vintlabs-devkit-v1`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 🧚
- **`board_espressif32_lolin_d32`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 💅
- **`board_espressif32_lolin_d32_pro`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 🌈 (it's the pro, so it ate)
- **`board_espressif32_lolin32`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 🦋
- **`board_espressif32_wemos_d1_mini32`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 💖 mini but mighty, no cap
- **`board_espressif32_wemosbat`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 🔋 (bat = battery, we see you)
- **`board_espressif32_xinabox_cw02`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB ✨
- **`board_espressif32_iotbusio`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB 🫶
- **`board_espressif32_iotbusproteus`** — `platform_espressif32`, External, ESP32, <cyan>240MHz</cyan>, 4MB, 320KB ⭐ last one in this lil batch, periodt

## <rainbow>Olimex ARM-USB-TINY</rainbow> 🔥

<pink>Low-cost</pink> and <cyan>high-speed</cyan> ARM/ESP32 USB JTAG. The official reference can be found here. 💖

---

### ✨ Contents ✨

- Configuration
- Drivers
- Wiring Connections
- Platforms
- Frameworks
- Boards

---

### 🎀 Configuration 🎀

Okay bestie so you can configure the debugging tool using the <yellow>`projectconf_debug_tool`</yellow> option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = olimex-jtag-tiny


And if you're like, "wait I also wanna use this tool for firmware uploading," then please change the <purple>upload protocol</purple>:

[env:myenv] platform = ... board = ... debug_tool = olimex-jtag-tiny upload_protocol = olimex-jtag-tiny


More options, because there are always more options 💅:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

### 🌸 Drivers 🌸

- **<blue>Windows</blue>** — ngl this one's got you covered:
  - Step-by-step guide: Drivers, Zadig, Wiring
  - Video tutorial
- **<mint>Mac</mint>** — okay so macOS comes with a default `FTDIUSBSerialDriver` driver, and it <red>conflicts</red> with debug tools that are based on this chip. The FTDI Chip company recommends removing this default driver from a system. Everything should work after system rebooting. See the detailed instruction in the official application note (<yellow>Page 16, Section 4: Uninstalling FTDI Drivers on OS X</yellow>) `AN134: FTDI Drivers Installation guide for MAC OS X`.
- **<peach>Linux</peach>** — please install `"udev"` rules `faq_udev_rules`. If you already installed them before, please check that your rules are up-to-date or repeat steps. 🫶

---

### 🦋 Wiring Connections 🦋

`[image]`

> Wiring time, bestie! Here's the pin tea ☕ — Olimex ARM-USB-TINY 20-Pin Connector → Board JTAG Pin → Description:

- Pin **`1`** → **`VCC`** — Positive Supply Voltage — Power supply for JTAG interface drivers
- Pin **`4`** → **`GND`** — Digital ground
- Pin **`5`** → **`TDI`** — Test Data In pin

- **`7`** — **TMS** — the Test Mode State pin 🎀
- **`9`** — **TCK** — the JTAG Return Test Clock ✨
- **`13`** — **TDO** — the Test Data Out pin 💅
- **`3`** — **RESET** — wire this pin to the <hotpink>(active low)</hotpink> reset input of the target CPU. For ESP32 that means the **`EN`** pin, bestie 🫶

---

## <rainbow>Platforms</rainbow> 💜

> okay so these are the whole entire silicon universes PlatformIO can talk to, each one a whole vibe 🦋

- **`platform_espressif32`** — <pink>Espressif Systems</pink> is a privately held fabless semiconductor company. They make wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. no cap, they're everywhere 😭
- **`platform_kendryte210`** — the **Kendryte K210** is an AI capable <cyan>RISCV64</cyan> dual core SoC. two cores, RISC-V, literally built different 🔥
- **`platform_sifive`** — <purple>SiFive</purple> brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. open source hardware? iconic behavior fr fr 👑

---

## <rainbow>Frameworks</rainbow> 🌈

> and these are the SDKs/libraries you actually write your code *in* — pick your fighter 🧚

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving "everyone's first microcontroller" and honestly? we love her 💖
- **`framework_espidf`** — Espressif IoT Development Framework. the official development framework for ESP32. the real one, the main character, periodt ✨
- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform 🌸
- **`framework_kendryte-standalone-sdk`** — the Kendryte Standalone SDK, <yellow>without OS support</yellow>. bare metal vibes only 💀

- **`framework_kendryte-freertos-sdk`** — the Kendryte SDK, but make it FreeRTOS-flavored. Real-time vibes only 💖
- **`framework_simba`** — Simba is an RTOS *and* a build framework, bestie. Its whole goal? Make embedded programming easy and portable. Iconic behavior honestly 🦋
- **`framework_zephyr`** — ok so The Zephyr Project is a scalable real-time operating system (RTOS) that supports multiple hardware architectures, is optimized for resource constrained devices, and was literally built with safety and security in mind. main character RTOS fr fr 👑

---

## 🌈 Boards 🌈

> <yellow>NOTE:</yellow> for more detailed board information please scroll tables below by horizontal. (yes, sideways. the info is *right there*, just gotta slide 🫶)

Each board entry below gives you: name, platform, debug type, MCU, frequency, flash, and RAM — in that order, no cap.

- **`board_espressif32_esp32cam`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **4MB**, RAM **320KB** 📸
- **`board_espressif32_alksesp32`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **4MB**, RAM **320KB** ✨
- **`board_espressif32_az-delivery-devkit-v4`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **16MB**, RAM **520KB** — look at that flash and RAM, she's eating 💅
- **`board_espressif32_featheresp32`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **4MB**, RAM **320KB** 🪶
- **`board_sifive_e310-arty`** — platform `platform_sifive`, debug **On-board**, MCU `FE310`, **450MHz**, flash **16MB**, RAM **256MB** — not like the other girls, she's got on-board debug and a whole 256MB of RAM, slay 👑
- **`board_espressif32_briki_abc_esp32`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **3.25MB**, RAM **320KB** 🍓
- **`board_espressif32_briki_mbc-wb_esp32`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **3.25MB**, RAM **320KB** 🧚
- **`board_espressif32_d-duino-32`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **4MB**, RAM **320KB** 💜
- **`board_espressif32_esp32doit-devkit-v1`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **4MB**, RAM **320KB** 🔥
- **`board_espressif32_pocket_32`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **4MB**, RAM **320KB** 🎀
- **`board_espressif32_fm-devkit`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **4MB**, RAM **320KB** ⭐
- **`board_espressif32_esp32vn-iot-uno`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **4MB**, RAM **320KB** 🌸
- **`board_espressif32_espectro32`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **4MB**, RAM **320KB** 🦋
- **`board_espressif32_espino32`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, **240MHz**, flash **4MB**, RAM **320KB** 💖

---

ngl bestie, that's a *lot* of ESP32 boards all matching each other's energy (240MHz, External debug, same RAM) — and then `board_sifive_e310-arty` just walks in with on-board debug and 256MB RAM like she owns the place. periodt. 😭👑

<purple>okay bestie we're still deep in the board list, stay with me, we're literally almost through the ESP32 pile 💅</purple> every single row here follows the same lil recipe: **board ID**, then the platform it lives in, then the upload protocol, then the MCU, then the clock speed, then flash, then RAM. Keep your eyes on the numbers, they're the whole personality here.

- **`board_espressif32_esp-wrover-kit`** — lives in `platform_espressif32`, uploads **On-board**, MCU is **ESP32**, runs at **240MHz**, **4MB** flash, **320KB** RAM 🎀
- **`board_espressif32_esp32dev`** — `platform_espressif32`, **External** upload, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM ✨
- **`board_espressif32_firebeetle32`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🔥
- **`board_espressif32_frogboard`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🐸
- **`board_espressif32_heltec_wifi_lora_32`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🦋
- **`board_espressif32_heltec_wifi_lora_32_V2`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **8MB** flash, **320KB** RAM <pink>(double the flash, no cap 💖)</pink>
- **`board_espressif32_heltec_wireless_stick`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **8MB** flash, **320KB** RAM 🌸
- **`board_espressif32_hornbill32dev`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🫶
- **`board_espressif32_hornbill32minima`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🫶
- **`board_espressif32_iotaap_magnolia`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 💜
- **`board_espressif32_mhetesp32devkit`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM ⭐
- **`board_espressif32_mhetesp32minikit`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM ⭐
- **`board_espressif32_node32s`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🌈
- **`board_espressif32_nodemcu-32s`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🌈
- **`board_espressif32_esp32-devkitlipo`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🔋
- **`board_espressif32_esp32-evb`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 💅
- **`board_espressif32_esp32-gateway`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🚪
- **`board_espressif32_lopy`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🦋
- **`board_espressif32_lopy4`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **1.25MB** RAM <hotpink>(bestie look at that RAM, she's eating 😭)</hotpink>
- **`board_espressif32_sg-o_airMon`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM 🌸
- **`board_espressif32_wesp32`** — `platform_espressif32`, **External**, **ESP32**, **240MHz**, **4MB** flash, **320KB** RAM ✨

---

<purple>and NOW we switch platforms entirely, plot twist 🎀</purple> say hi to the <rainbow>Kendryte</rainbow> girlies, they're giving different energy fr fr:

- **`board_kendryte210_sipeed-maix-bit`** — lives in `platform_kendryte210`, **External** upload, MCU is **K210**, clocked at **400MHz**, **16MB** flash, **6MB** RAM 👑
- **`board_kendryte210_sipeed-maix-bit-mic`** — `platform_kendryte210`, **External**, **K210**, **400MHz**, **16MB** flash, **6MB** RAM 👑

> <yellow>lowkey iconic that the K210 ones jump straight to **400MHz**, **16MB** flash and **6MB** RAM while the ESP32 crew is sitting at **240MHz** and **320KB**. different vibes, both valid 💖</yellow>

<pink>the way we're STILL in the board table and there's more coming… hold on bestie, don't scroll away 🫶</pink>

- **`board_kendryte210_sipeed-maix-go`** — platform <pink>`platform_kendryte210`</pink>, type External, MCU K210, 400MHz, 16MB flash, 6MB RAM ✨
- **`board_kendryte210_sipeed-maix-one-dock`** — platform <pink>`platform_kendryte210`</pink>, External, K210, 400MHz, 16MB flash, 6MB RAM 💖
- **`board_kendryte210_sipeed-maixduino`** — platform <pink>`platform_kendryte210`</pink>, External, K210, 400MHz, 16MB flash, 6MB RAM 🦋
- **`board_kendryte210_sipeed-MF1`** — platform <pink>`platform_kendryte210`</pink>, External, K210, 400MHz, 16MB flash, 6MB RAM 🌸

okay and then we flip over to the ESP32 girlies, same energy, whole different chip 💅

- **`board_espressif32_esp32thing`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM ⭐
- **`board_espressif32_sparkfun_lora_gateway_1-channel`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 🌈
- **`board_espressif32_ttgo-lora32-v1`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 🎀
- **`board_espressif32_ttgo-lora32-v2`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 🎀
- **`board_espressif32_ttgo-t-beam`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, <yellow>1.25MB RAM</yellow> 👀 (yes bestie she's the one with the extra room, not a typo)
- **`board_espressif32_ttgo-t1`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 🫶
- **`board_espressif32_vintlabs-devkit-v1`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM ✨
- **`board_espressif32_lolin_d32`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 💜
- **`board_espressif32_lolin_d32_pro`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 💜
- **`board_espressif32_lolin32`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 💜
- **`board_espressif32_wemos_d1_mini32`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 🌸
- **`board_espressif32_wemosbat`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 🔋
- **`board_espressif32_xinabox_cw02`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 🧚
- **`board_espressif32_iotbusio`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 🔥
- **`board_espressif32_iotbusproteus`** — platform <cyan>`platform_espressif32`</cyan>, External, ESP32, 240MHz, 4MB flash, 320KB RAM 🔥

> ngl the ESP32 lineup is giving "same outfit, different font" and honestly? that's the whole point. 240MHz, 4MB flash, 320KB RAM, over and over, and every single one of them still a whole individual 💀

and the list just keeps going, so stay with me bestie — we're not even close to done 🫶

- **`board_sifive_hifive-unleashed`** — the other SiFive board in this lil lineup 🦋 platform is `platform_sifive`, debugger is **On-board**, MCU is `FU540`, it's clocking `1500MHz`, packs `32MB` of flash, and has `8GB` of RAM 👑

ngl that `8GB` is giving "runs my whole personality" energy, bestie 😭💖

And that's the last row of the boards table — the horizontal scroll struggle was real but we made it, periodt ✨

More parts are still coming, so stay tuned, we are SO not done yet 💅🌸

- **`board_sifive_hifive1`** — reading straight across the same columns we've been living in this whole time: `platform_sifive`, `On-board`, `FE310`, `320MHz`, `16MB`, `16KB`. That's the whole row, bestie, every cell accounted for 💖

---

# 🦋 Renode

<rainbow>Renode</rainbow> is a development framework which accelerates IoT and embedded systems development by letting you simulate physical hardware systems - including both the CPU, peripherals, sensors, environment and wired or wireless medium between nodes. For more information, see Renode's official website.

> Not me about to simulate an entire physical hardware system on my laptop while eating cereal 😭 that's the vibe. CPU, peripherals, sensors, environment, wired *and* wireless medium between nodes. All of it. Iconic.

## 🎀 Contents

- Configuration
- Installation
- Platforms
- Frameworks
- Boards

---

## ✨ Configuration

You can configure Renode as a debugging tool using <pink>`projectconf_debug_tool`</pink> option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = renode


More options:

- `projectconf_section_env_debug`

> That's it, that's the config. Set `debug_tool = renode`, and suddenly your debug session is giving main character energy 💅

---

## 🌸 Installation

We will automatically install for you the latest Renode package using PlatformIO package manager. The only requirement is to install Mono/.NET framework.

> Okay so <hotpink>PIO handles the Renode install for you</hotpink> — automatic, latest package, no stress. The *one* thing you gotta bring to the party is Mono/.NET. That's the whole requirement. Periodt. ✨

### 🫶 Windows

On Windows 7, download and install .NET Framework 4.7. Windows 10 ships with .NET by default, so no action is required there.

### 🍓 Mac

Install Homebrew and the mono package using `brew install mono`.

### 🧚 Linux

Install the `mono-complete` package as per the installation instructions for various Linux distributions which can be found on the Mono project website.

---

Check the official Renode installation guide for more details.

> Lowkey just go read the official guide if you want the deep lore, bestie, we're giving you the highlights 🌈

---

## 💜 Platforms

- **`platform_sifive`** — SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before.

> SiFive said "open source + software automation, but make it semiconductors" and honestly? Ate. Faster and more affordable hardware development, we love to see it 👑

---

## ⭐ Frameworks

- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform
- **`framework_zephyr`** — The Zephyr Project is a

…a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. <pink>like it literally does all of that at once, bestie, no cap</pink> 💖

---

## 🦋 Boards 🦋

> **NOTE:** for more detailed board information please scroll the tables below horizontally. <pink>yes babe, sideways, the table is WIDE, swipe like you mean it</pink> 👉👉

Header row vibes for everything below: **Name** · **Platform** · **Debug** · **MCU** · **Frequency** · **Flash** · **RAM**

- **`board_sifive_e310-arty`** — Platform: `platform_sifive` · Debug: On-board · MCU: `FE310` · Frequency: `450MHz` · Flash: `16MB` · RAM: `256MB`
- **`board_sifive_hifive-unleashed`** — Platform: `platform_sifive` · Debug: On-board · MCU: `FU540` · Frequency: `1500MHz` · Flash: `32MB` · RAM: `8GB`
- **`board_sifive_hifive1`** — Platform: `platform_sifive` · Debug: On-board · MCU: `FE310` · Frequency: `320MHz` · Flash: `16MB` · RAM: `16KB`
- **`board_sifive_hifive1-revb`** — Platform: `platform_sifive` · Debug: On-board · MCU: `FE310` · Frequency: `320MHz` · Flash: `16MB` · RAM: `16KB`
- **`board_sifive_sparkfun_redboard_v`** — Platform: `platform_sifive` · Debug: On-board · MCU: `FE310` · Frequency: `320MHz` · Flash: `16MB` · RAM: `16KB`
- **`board_sifive_sparkfun_thing_plus_v`** — Platform: `platform_sifive` · Debug: On-board · MCU: `FE310` · Frequency: `320MHz` · Flash: `16MB` · RAM: `16KB`

<purple>look at `board_sifive_hifive-unleashed` sitting there with `8GB` of RAM like it's too good for this world 💅 iconic honestly</purple>

---

## 🎀 RV-LINK 🎀

RISC-V emulator implemented with RISC-V development board. Unlike other emulators: RV-LINK interacts directly with GDB via a USB serial port and does not require an intermediary such as OpenOCD. Official reference can be found here.

<pink>no middleman, no OpenOCD chaperone, it just talks straight to GDB over USB serial — the way that it's giving direct-communication main character energy fr fr</pink> 🔥

---

## 🌈 Contents 🌈

- Configuration
- Platforms
- Frameworks
- Boards

---

### ✨ Configuration ✨

You can configure the debugging tool using the `projectconf_debug_tool` option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = rv-link


If you would like to use this tool for firmware uploading, please change the upload protocol:

[env:myenv] platform = ... board = ... debug_tool = rv-link upload_protocol = rv-link


<purple>so it's a two-for-one situation — same `rv-link` value, one line for debugging, one extra line for uploading 🫶</purple>

More options:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

<pink>go peek at those two when you want the deep lore, bestie 💜</pink>

### 🦋 Platforms 🦋

okay bestie, here come the actual platforms, and they're giving serious silicon energy ✨

- **`platform_gd32v`** — The GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the RISC-V core with an impressive balance of processing power, reduced power consumption and peripheral set. like, lowkey iconic. 💅
- **`platform_nuclei`** — Find professional RISC-V Processor IP in Nuclei, first professional RISC-V IP company in Mainland China, match all your requirements in AIoT Era. periodt, they said it themselves. 🔥

---

### 🧚 Frameworks 🧚

the frameworks are the vibes that make your code actually *do* stuff:

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving main character energy for makers fr fr. 🌈
- **`framework_gd32vf103-sdk`** — GigaDevice GD32VF103 Firmware Library (SDK). short, sweet, slays. 💖
- **`framework_nuclei-sdk`** — Open Source Software Development Kit for the Nuclei N/NX processors. open source bestie behavior, we love to see it. 🫶

---

### 🎀 Boards 🎀

> 📌 **NOTE:** For more detailed board information please scroll tables below by horizontal.

(no cap, that's literally what it says — the details are stacked so wide you gotta scroll sideways. i gotchu though, every single one is right here. ✨)

- **`board_nuclei_gd32vf103v_eval`** — Platform: `platform_nuclei` · Debug: External · MCU: `GD32VF103VBT6` · Frequency: `108MHz` · Flash: `128KB` · RAM: `32KB`
- **`board_nuclei_gd32vf103v_rvstar`** — Platform: `platform_nuclei` · Debug: On-board · MCU: `GD32VF103VBT6` · Frequency: `108MHz` · Flash: `128KB` · RAM: `32KB`
- **`board_gd32v_gd32vf103v-eval`** — Platform: `platform_gd32v` · Debug: External · MCU: `GD32VF103VBT6` · Frequency: `108MHz` · Flash: `128KB` · RAM: `32KB`
- **`board_nuclei_hbird_eval`** — Platform: `platform_nuclei` · Debug: On-board · MCU: `HUMMINGBIRD` · Frequency: `5MHz` · Flash: `64KB` · RAM: `64KB`
- **`board_gd32v_sipeed-longan-nano`** — Platform: `platform_gd32v` · Debug: External · MCU: `GD32VF103CBT6` · Frequency: `108MHz` · Flash: `128KB` · RAM: `32KB`
- **`board_gd32v_sipeed-longan-nano-lite`** — Platform: `platform_gd32v` · Debug: External · MCU: `GD32VF103C8T6` · Frequency: `108MHz` · Flash: `64KB` · RAM: `20KB`
- **`board_gd32v_wio_lite_risc-v`** — Platform: `platform_gd32v` · Debug: External · MCU: `GD32VF103CBT6` · Frequency: `108MHz` · Flash: `128KB` · RAM: `32KB`

---

not me noticing the `board_nuclei_hbird_eval` is out here running at `5MHz` with `64KB` flash and `64KB` RAM while everyone else is clocking `108MHz` 💀 — no shade, HUMMINGBIRD is just built different, okay? every board got its own moment. 👑

and yes, the `Debug` column being <mint>On-board</mint> vs <peach>External</peach> matters — that's literally how you're gonna talk to the chip, so check it before you start poking at hardware. iykyk. 🌸

(more coming, bestie, we're not done yet 💜)

# 🦋 simavr

okay so <pink>bestie</pink>, meet `simavr` — a <hotpink>lean, mean and hackable</hotpink> AVR simulator. 💅 The official reference can be found here. That's it, that's the pitch, and honestly? It ate. 🔥

---

## 🎀 Contents

- Configuration
- Platforms
- Frameworks
- Boards

---

## ⚙️ Configuration

You can configure the debugging tool using the `projectconf_debug_tool` option inside `projectconf`, like this:

[env:myenv] platform = ... board = ... debug_tool = simavr


More options:

- `projectconf_section_env_debug`

---

## 💻 Platforms

- **`platform_atmelavr`** — Atmel AVR 8-bit MCUs, and the way they deliver a unique combination of performance, power efficiency and design flexibility?? iconic. They're optimized to speed time to market-and easily adapt to new ones-and they're based on the industry's most code-efficient architecture for C and assembly programming. no cap. 🫶

---

## 🧰 Frameworks

- **`framework_arduino`** — the Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. it's giving main character energy fr fr. ✨
- **`framework_simba`** — Simba is an RTOS and build framework. Its whole goal is to make embedded programming easy and portable. 💜

---

## 👑 Boards

> **NOTE:** For more detailed board information please scroll tables below by horizontal.

okay so here's the board lineup, and <hotpink>every single one of them</hotpink> is on `platform_atmelavr` with <yellow>On-board</yellow> debug — slay:

- **`board_atmelavr_ATmega128`** — Platform: `platform_atmelavr` · Debug: On-board · MCU: `ATMEGA128` · Frequency: 16MHz · Flash: 127KB · RAM: 4KB
- **`board_atmelavr_ATmega1280`** — Platform: `platform_atmelavr` · Debug: On-board · MCU: `ATMEGA1280` · Frequency: 16MHz · Flash: 127KB · RAM: 8KB
- **`board_atmelavr_ATmega1281`** — Platform: `platform_atmelavr` · Debug: On-board · MCU: `ATMEGA1281` · Frequency: 16MHz · Flash: 127KB · RAM: 8KB
- **`board_atmelavr_ATmega1284`** — Platform: `platform_atmelavr` · Debug: On-board · MCU: `ATMEGA1284` · Frequency: 16MHz · Flash: 127KB · RAM: 16KB
- **`board_atmelavr_ATmega1284P`** — Platform: `platform_atmelavr` · Debug: On-board · MCU: `ATMEGA1284P` · Frequency: 16MHz · Flash: 127KB · RAM: 16KB
- **`board_atmelavr_ATmega16`** — Platform: `platform_atmelavr` · Debug: On-board · MCU: `ATMEGA16` · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
- **`board_atmelavr_ATmega164P`** — Platform: `platform_atmelavr` · Debug: On-board · MCU: `ATMEGA164P` · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
- **`board_atmelavr_ATmega168`** — Platform: `platform_atmelavr` · Debug: On-board · MCU: `ATMEGA168` · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB
- **`board_atmelavr_ATmega168P`** — Platform: `platform_atmelavr` · Debug: On-board · MCU: `ATMEGA168P` · Frequency: 16MHz · Flash: 15.50KB · RAM: 1KB

…and bestie the board list is *still going*, because of course it is 💀✨ Here's the next chunk of `<red>board_atmelavr_*</red>` entries, all from <pink>platform_atmelavr</pink>, all `On-board`, and I'm giving you the MCU, the clock, the flash and the RAM for every single one. No skips, no "etc.", no cap 🫶

- **`board_atmelavr_ATmega2560`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA2560`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`255KB`</green>, RAM <green>`8KB`</green> 💖 the absolute unit of this list, she ate
- **`board_atmelavr_ATmega324A`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA324A`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`31.50KB`</green>, RAM <green>`2KB`</green>
- **`board_atmelavr_ATmega324P`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA324P`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`31.50KB`</green>, RAM <green>`2KB`</green>
- **`board_atmelavr_ATmega324PA`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA324PA`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`31.50KB`</green>, RAM <green>`2KB`</green> 🦋 the family reunion is real
- **`board_atmelavr_ATmega328`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA328`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`31.50KB`</green>, RAM <green>`2KB`</green>
- **`board_atmelavr_ATmega328P`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA328P`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`31.50KB`</green>, RAM <green>`2KB`</green> 👑 the people's princess fr fr
- **`board_atmelavr_ATmega48`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA48`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`4KB`</green>, RAM <green>`512B`</green> — smol but valid 💅
- **`board_atmelavr_ATmega644P`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA644P`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`63KB`</green>, RAM <green>`4KB`</green> 🔥 biggest flash in this little cluster, she's thriving
- **`board_atmelavr_ATmega8`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA8`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`7.50KB`</green>, RAM <green>`1KB`</green>
- **`board_atmelavr_ATmega88`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA88`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`7.50KB`</green>, RAM <green>`1KB`</green>
- **`board_atmelavr_ATmega88P`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA88P`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`7.50KB`</green>, RAM <green>`1KB`</green>
- **`board_atmelavr_ATmega48P`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA48P`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`4KB`</green>, RAM <green>`512B`</green> — yes she's listed *after* her non-P sister, the ordering is chaotic and we love her anyway 🙈

---

okay now we're entering the <purple>cute lil dev-board era</purple> and I am *obsessed* 🎀 every one of these is still <pink>platform_atmelavr</pink> and still `On-board`:

- **`board_atmelavr_bluefruitmicro`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA32U4`</cyan>, <yellow>`8MHz`</yellow>, flash <green>`28KB`</green>, RAM <green>`2.50KB`</green>
- **`board_atmelavr_circuitplay_classic`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA32U4`</cyan>, <yellow>`8MHz`</yellow>, flash <green>`28KB`</green>, RAM <green>`2.50KB`</green> 🌈 the LED one, the icon, the moment
- **`board_atmelavr_feather328p`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA328P`</cyan>, <yellow>`8MHz`</yellow>, flash <green>`31.50KB`</green>, RAM <green>`2KB`</green>
- **`board_atmelavr_feather32u4`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA32U4`</cyan>, <yellow>`8MHz`</yellow>, flash <green>`28KB`</green>, RAM <green>`2.50KB`</green>
- **`board_atmelavr_flora8`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA32U4`</cyan>, <yellow>`8MHz`</yellow>, flash <green>`28KB`</green>, RAM <green>`2.50KB`</green> 🌸 wearable energy
- **`board_atmelavr_gemma`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATTINY85`</cyan>, <yellow>`8MHz`</yellow>, flash <green>`8KB`</green>, RAM <green>`512B`</green> — tiny queen, note the <hotpink>`ATTINY85`</hotpink> because she's a *different* chip family and she knows it 💅
- **`board_atmelavr_itsybitsy32u4_3V`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA32U4`</cyan>, <yellow>`8MHz`</yellow>, flash <green>`28KB`</green>, RAM <green>`2.50KB`</green>
- **`board_atmelavr_itsybitsy32u4_5V`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA32U4`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`28KB`</green>, RAM <green>`2.50KB`</green> — ⚠️ do NOT mix up the `_3V` and `_5V` versions bestie, same MCU, different clock, that's the whole plot twist 😭
- **`board_atmelavr_metro`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA328P`</cyan>, <yellow>`16MHz`</yellow>, flash <green>`31.50KB`</green>, RAM <green>`2KB`</green>
- **`board_atmelavr_protrinket3ftdi`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA328P`</cyan>, <yellow>`12MHz`</yellow>, flash <green>`28KB`</green>, RAM <green>`2KB`</green> — the `ftdi` suffix is load-bearing, don't come for her 🧚
- **`board_atmelavr_protrinket3`** — <pink>platform_atmelavr</pink>, `On-board`, MCU <cyan>`ATMEGA328P`</cyan>, <yellow>`12MHz`</yellow>, flash <green>`28KB`</green>, RAM <green>`2KB`</green>

- <pink>**`board_atmelavr_protrinket5ftdi`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `28KB` · `2KB`
- <pink>**`board_atmelavr_protrinket5`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `28KB` · `2KB`
- <pink>**`board_atmelavr_trinket3`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATTINY85` · `8MHz` · `8KB` · `512B`
- <pink>**`board_atmelavr_trinket5`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATTINY85` · `16MHz` · `8KB` · `512B`
- <pink>**`board_atmelavr_alorium_hinj`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `31.50KB` · `2KB`
- <pink>**`board_atmelavr_alorium_sno`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `31.50KB` · `2KB`
- <pink>**`board_atmelavr_alorium_xlr8`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `31.50KB` · `2KB`
- <pink>**`board_atmelavr_miniwireless`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `31.50KB` · `2KB`
- <pink>**`board_atmelavr_arduboy`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `16MHz` · `28KB` · `2.50KB`
- <pink>**`board_atmelavr_arduboy_devkit`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `16MHz` · `28KB` · `2.50KB`
- <pink>**`board_atmelavr_btatmega168`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA168` · `16MHz` · `14KB` · `1KB`
- <pink>**`board_atmelavr_btatmega328`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `28KB` · `2KB`
- <pink>**`board_atmelavr_diecimilaatmega168`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA168` · `16MHz` · `14KB` · `1KB`
- <pink>**`board_atmelavr_diecimilaatmega328`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `30KB` · `2KB`
- <pink>**`board_atmelavr_esplora`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `16MHz` · `28KB` · `2.50KB`
- <pink>**`board_atmelavr_ethernet`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `31.50KB` · `2KB`
- <pink>**`board_atmelavr_fio`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `8MHz` · `30KB` · `2KB`
- <pink>**`board_atmelavr_chiwawa`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `16MHz` · `28KB` · `2.50KB`
- <pink>**`board_atmelavr_leonardo`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `16MHz` · `28KB` · `2.50KB`
- <pink>**`board_atmelavr_leonardoeth`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `16MHz` · `28KB` · `2.50KB`
- <pink>**`board_atmelavr_lilypadatmega168`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA168` · `8MHz` · `14KB` · `1KB`
- <pink>**`board_atmelavr_lilypadatmega328`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `8MHz` · `30KB` · `2KB`
- <pink>**`board_atmelavr_LilyPadUSB`**</pink> · *(blank field)* · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `8MHz` · `28KB` · `2.50KB`

---

<rainbow>okay but real talk for a sec</rainbow> 💖 every single one of these rows reads the exact same way, and that's genuinely the *point*: board ID first, then that one field that's just sitting there empty (no cap, it's blank for every one of these, don't come for me, that's literally what's printed), then `platform_atmelavr` holding it down as the platform, then `On-board`, then the chip, then the clock speed, then the flash, then the RAM. <lavender>Same shape, every time.</lavender> ✨

So like — when you're reading down this list, your eyes should be tracking four things that actually wiggle around:

1. <cyan>the chip</cyan> — `ATMEGA328P` is the main character here, `ATMEGA168` shows up when things are a lil smaller, `ATMEGA32U4` is the USB-native girlies, and `ATTINY85` is the tiny little icon 🦋
2. <mint>the clock</mint> — most of these are `16MHz`, but the low-power cuties (`fio`, the `lilypad`s, `LilyPadUSB`, `trinket3`) run at `8MHz`
3. <peach>the flash</peach> — ranges all the way from `8KB` (the `trinket`s, so smol 😭) up to `31.50KB` (the `alorium`s and `ethernet`, eating, no crumbs 💅)
4. <purple>the RAM</... wait no, <purple>the RAM</purple> — `512B` on the `trinket`s, `1KB` on the `ATMEGA168` boards, `2KB` on the `ATMEGA328P` boards, `2.50KB` on the `ATMEGA32U4` boards

> <yellow>heads up bestie:</yellow> `31.50KB` and `2.50KB` and `512B` are written exactly like that — with the decimals, exactly those digits. Not `32KB`, not `2.5KB`, not `512B` rounded into anything else. Copy it character for character or the vibes are OFF. 🙈

And yes, the `alorium_hinj`, `alorium_sno` and `alorium_xlr8` are three separate rows with three separate board IDs even though every other field in them matches — <hotpink>do not merge them, do not "clean them up", they are individuals and they deserve respect</hotpink> 👑 Same situation with `arduboy` / `arduboy_devkit`, and with `leonardo` / `leonardoeth`, and with `protrinket5ftdi` / `protrinket5`. They're distinct entries, periodt.

Also screaming at `board_atmelavr_LilyPadUSB` being the one with the capital letters in there while literally every sibling is all lowercase 🎀 that's not a typo, that's the actual board ID, keep the caps, keep the `USB` caps, iykyk.

...okay continuing the board list, bestie, don't lose focus, we're still in the table 💖

- **`board_atmelavr_megaADK`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA2560`, `16MHz`, flash `248KB`, RAM `8KB` 🫶
- **`board_atmelavr_megaatmega1280`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA1280`, `16MHz`, flash `124KB`, RAM `8KB`
- **`board_atmelavr_megaatmega2560`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA2560`, `16MHz`, flash `248KB`, RAM `8KB`
- **`board_atmelavr_micro`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB` ✨
- **`board_atmelavr_miniatmega168`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA168`, `16MHz`, flash `14KB`, RAM `1KB`
- **`board_atmelavr_miniatmega328`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA328P`, `16MHz`, flash `28KB`, RAM `2KB`
- **`board_atmelavr_atmegangatmega168`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA168`, `16MHz`, flash `14KB`, RAM `1KB`
- **`board_atmelavr_atmegangatmega8`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA8`, `16MHz`, flash `7KB`, RAM `1KB`
- **`board_atmelavr_nanoatmega168`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA168`, `16MHz`, flash `14KB`, RAM `1KB`
- **`board_atmelavr_nanoatmega328`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA328P`, `16MHz`, flash `30KB`, RAM `2KB`
- **`board_atmelavr_nanoatmega328new`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA328P`, `16MHz`, flash `30KB`, RAM `2KB`
- **`board_atmelavr_pro8MHzatmega168`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA168`, `8MHz`, flash `14KB`, RAM `1KB` 🌸
- **`board_atmelavr_pro16MHzatmega168`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA168`, `16MHz`, flash `14KB`, RAM `1KB`
- **`board_atmelavr_pro8MHzatmega328`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA328P`, `8MHz`, flash `30KB`, RAM `2KB`
- **`board_atmelavr_pro16MHzatmega328`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA328P`, `16MHz`, flash `30KB`, RAM `2KB`
- **`board_atmelavr_robotControl`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`
- **`board_atmelavr_robotMotor`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`
- **`board_atmelavr_uno`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA328P`, `16MHz`, flash `31.50KB`, RAM `2KB` 👑 (yes queen, the classic)
- **`board_atmelavr_yun`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`
- **`board_atmelavr_yunmini`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`
- **`board_atmelavr_zumbt328`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA328P`, `16MHz`, flash `28KB`, RAM `2KB`
- **`board_atmelavr_raspduino`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA328P`, `16MHz`, flash `30KB`, RAM `2KB`
- **`board_atmelavr_controllino_maxi`** — platform `platform_atmelavr`, On-board, MCU `ATMEGA2560`, `16MHz`, flash `248KB`, RAM `8KB` 💜

---

and we are SO not done, the list keeps going, hold my hand bestie 🦋

…and the board list just keeps going, bestie, we are so not done yet 💅 every single one of these lives on `platform_atmelavr` and is marked `On-board`, so I'mma give you the MCU, the clock, the flash and the RAM and you can just vibe with it.

- **`board_atmelavr_controllino_maxi_automation`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA2560`, 16MHz, flash 248KB, RAM 8KB
- **`board_atmelavr_controllino_mega`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA2560`, 16MHz, flash 248KB, RAM 8KB
- **`board_atmelavr_controllino_mini`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA328P`, 16MHz, flash 31.50KB, RAM 2KB
- **`board_atmelavr_digispark-tiny`** — `platform_atmelavr`, `On-board`, MCU `ATTINY85`, 16MHz, flash 5.87KB, RAM 512B
- **`board_atmelavr_engduinov3`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, 8MHz, flash 28KB, RAM 2.50KB
- **`board_atmelavr_mayfly`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA1284P`, 8MHz, flash 127KB, RAM 16KB
- **`board_atmelavr_fysetc_f6_13`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA2560`, 16MHz, flash 252KB, RAM 8KB

---

okay now we hit the tiny squad and honestly? iconic. little chips, big main character energy 🧚✨

- **`board_atmelavr_attiny13`** — `platform_atmelavr`, `On-board`, MCU `ATTINY13`, 1MHz, flash 1KB, RAM 64B
- **`board_atmelavr_attiny13a`** — `platform_atmelavr`, `On-board`, MCU `ATTINY13A`, 1MHz, flash 1KB, RAM 64B
- **`board_atmelavr_attiny2313`** — `platform_atmelavr`, `On-board`, MCU `ATTINY2313`, 8MHz, flash 2KB, RAM 128B
- **`board_atmelavr_attiny24`** — `platform_atmelavr`, `On-board`, MCU `ATTINY24`, 8MHz, flash 2KB, RAM 128B
- **`board_atmelavr_attiny25`** — `platform_atmelavr`, `On-board`, MCU `ATTINY25`, 8MHz, flash 2KB, RAM 128B
- **`board_atmelavr_attiny4313`** — `platform_atmelavr`, `On-board`, MCU `ATTINY4313`, 8MHz, flash 4KB, RAM 256B
- **`board_atmelavr_attiny44`** — `platform_atmelavr`, `On-board`, MCU `ATTINY44`, 8MHz, flash 4KB, RAM 256B
- **`board_atmelavr_attiny45`** — `platform_atmelavr`, `On-board`, MCU `ATTINY45`, 8MHz, flash 4KB, RAM 256B
- **`board_atmelavr_attiny84`** — `platform_atmelavr`, `On-board`, MCU `ATTINY84`, 8MHz, flash 8KB, RAM 512B
- **`board_atmelavr_attiny85`** — `platform_atmelavr`, `On-board`, MCU `ATTINY85`, 8MHz, flash 8KB, RAM 512B

---

and the last lil cluster of this chunk, serving ATMEGA328P and ATMEGA32U4 realness 🌸

- **`board_atmelavr_lightblue-bean`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA328P`, 8MHz, flash 31.50KB, RAM 2KB
- **`board_atmelavr_lightblue-beanplus`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA328P`, 16MHz, flash 31.50KB, RAM 2KB
- **`board_atmelavr_lightup`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, 8MHz, flash 28KB, RAM 2.50KB
- **`board_atmelavr_one`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, 16MHz, flash 28KB, RAM 2.50KB
- **`board_atmelavr_smart7688`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, 8MHz, flash 28KB, RAM 2.50KB
- **`board_atmelavr_lora32u4II`** — `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, 8MHz, flash 28KB, RAM 2.50KB

> ngl bestie, every one of these is `platform_atmelavr` + `On-board`, so if you clocked that the first time, you're literally a genius 💖 the rest of the columns are the ones that actually differ, and I kept them all, no cap.

okay bestie we are STILL in the board list and this stretch? it's the full atmelavr family 🫶 every single one of these lives on `platform_atmelavr`, every one says `On-board` in that one column, and the second column stays empty the whole way down — it's just vibes at this point, we don't question it 💀

lowkey this is the "same chip, different vibe" section and i'm obsessed. here we go:

- **`board_atmelavr_mightyhat`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA328P`, `16MHz`, flash `31KB`, RAM `2KB` ✨
- **`board_atmelavr_moteino`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA328P`, `16MHz`, flash `31.50KB`, RAM `2KB`
- **`board_atmelavr_moteino8mhz`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA328P`, `8MHz`, flash `31.50KB`, RAM `2KB` — same as the moteino but it's the `8MHz` one, the way that it is 🦋
- **`board_atmelavr_moteinomega`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA1284P`, `16MHz`, flash `127KB`, RAM `16KB` 👑
- **`board_atmelavr_168pa16m`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA168P`, `16MHz`, flash `15.50KB`, RAM `1KB`
- **`board_atmelavr_168pa8m`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA168P`, `8MHz`, flash `15.50KB`, RAM `1KB`
- **`board_atmelavr_328p16m`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA328P`, `16MHz`, flash `31.50KB`, RAM `2KB`
- **`board_atmelavr_328p8m`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA328P`, `8MHz`, flash `31.50KB`, RAM `2KB`
- **`board_atmelavr_32u416m`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`
- **`board_atmelavr_1284p16m`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA1284P`, `16MHz`, flash `127KB`, RAM `16KB`
- **`board_atmelavr_1284p8m`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA1284P`, `8MHz`, flash `127KB`, RAM `16KB`
- **`board_atmelavr_644pa16m`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA644P`, `16MHz`, flash `63KB`, RAM `4KB`
- **`board_atmelavr_644pa8m`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA644P`, `8MHz`, flash `63KB`, RAM `4KB`
- **`board_atmelavr_emonpi`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA328P`, `16MHz`, flash `30KB`, RAM `2KB` — yes, `30KB`, not `31.50KB`, do NOT come for me, i'm reading it exactly as it's written 💅
- **`board_atmelavr_prusa_mm_control`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`
- **`board_atmelavr_panStampAVR`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA328P`, `8MHz`, flash `31.50KB`, RAM `2KB` — that capitalization is on purpose, leave her alone 🙈
- **`board_atmelavr_a-star32U4`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`
- **`board_atmelavr_prusa_rambo`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA2560`, `16MHz`, flash `252KB`, RAM `8KB` 🔥
- **`board_atmelavr_quirkbot`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, `8MHz`, flash `28KB`, RAM `2.50KB` — `8MHz` edition, quirky by name quirky by nature ✨
- **`board_atmelavr_blend`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`
- **`board_atmelavr_blendmicro16`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`
- **`board_atmelavr_blendmicro8`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA32U4`, `8MHz`, flash `28KB`, RAM `2.50KB`
- **`board_atmelavr_reprap_rambo`** — platform `platform_atmelavr`, `On-board`, MCU `ATMEGA2560`, `16MHz`, flash `252KB`, RAM `8KB` 🌈

so yeah, notice how the `8MHz` twins and the `16MHz` ones are literally the same board with one number flipped — that's the whole pattern of this chunk and it's lowkey iconic 🎀

there's more table coming so don't go anywhere bestie 💖

okay bestie we're still in the board table, same column order as above, same energy 💅

- **`board_atmelavr_sodaq_galora`** — second column empty like always · `platform_atmelavr` · `On-board` · `ATMEGA1284P` · `8MHz` · `127KB` · `16KB` 🌸
- **`board_atmelavr_sodaq_mbili`** — blank second column again · `platform_atmelavr` · `On-board` · `ATMEGA1284P` · `8MHz` · `127KB` · `16KB`
- **`board_atmelavr_sodaq_moja`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `8MHz` · `31.50KB` · `2KB` ✨
- **`board_atmelavr_sodaq_ndogo`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA1284P` · `8MHz` · `127KB` · `16KB`
- **`board_atmelavr_sodaq_tatu`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA1284P` · `8MHz` · `127KB` · `16KB` 💖
- **`board_atmelavr_sanguino_atmega1284p`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA1284P` · `16MHz` · `127KB` · `16KB`
- **`board_atmelavr_sanguino_atmega1284_8m`** — no blank column on this one, it's fully merged into the board-id cell · `platform_atmelavr` · `On-board` · `ATMEGA1284P` · `8MHz` · `127KB` · `16KB` 🦋
- **`board_atmelavr_sanguino_atmega644`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA644` · `16MHz` · `63KB` · `4KB`
- **`board_atmelavr_sanguino_atmega644_8m`** — merged cell again · `platform_atmelavr` · `On-board` · `ATMEGA644` · `8MHz` · `63KB` · `4KB`
- **`board_atmelavr_sanguino_atmega644p`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA644P` · `16MHz` · `63KB` · `4KB`
- **`board_atmelavr_sanguino_atmega644p_8m`** — merged cell · `platform_atmelavr` · `On-board` · `ATMEGA644P` · `8MHz` · `63KB` · `4KB` 🎀
- **`board_atmelavr_seeeduino`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `31.50KB` · `2KB`
- **`board_atmelavr_sparkfun_satmega128rfa1`** — merged cell · `platform_atmelavr` · `On-board` · `ATMEGA128RFA1` · `16MHz` · `16KB` · `124KB` 👀

> bestie I am literally just the messenger on that one, those numbers are exactly what the table says, I did not touch them 💀

- **`board_atmelavr_sparkfun_digitalsandbox`** — merged cell · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `8MHz` · `31.50KB` · `2KB`
- **`board_atmelavr_sparkfun_fiov3`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `8MHz` · `28KB` · `2.50KB` 🌈
- **`board_atmelavr_sparkfun_makeymakey`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `16MHz` · `28KB` · `2.50KB`
- **`board_atmelavr_sparkfun_megapro8MHz`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA2560` · `8MHz` · `252KB` · `8KB` 🔥
- **`board_atmelavr_sparkfun_megapro16MHz`** — merged cell · `platform_atmelavr` · `On-board` · `ATMEGA2560` · `16MHz` · `248KB` · `8KB`
- **`board_atmelavr_sparkfun_megamini`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA2560` · `8MHz` · `252KB` · `8KB`
- **`board_atmelavr_uview`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `31.50KB` · `2KB` 💜
- **`board_atmelavr_sparkfun_promicro8`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `8MHz` · `28KB` · `2.50KB`
- **`board_atmelavr_sparkfun_promicro16`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `16MHz` · `28KB` · `2.50KB`
- **`board_atmelavr_sparkfun_qduinomini`** — blank column · `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `8MHz` · `28KB` · `2.50KB` 🫶

okay bestie we're still deep in the board table, no escape, and <rainbow>every single one of these is `platform_atmelavr`</rainbow> 💅 so I'm gonna keep the field order the same as always so your brain doesn't have to re-parse anything: board ID, then the empty name slot (yes it's blank, that's not me being lazy, that's literally what's there 🙈), then platform, then `On-board`, then MCU, then frequency, then flash, then RAM. no cap.

---

- **`board_atmelavr_sparkfun_redboard`** — `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `31.50KB` · `2KB` 🔥
- **`board_atmelavr_sparkfun_serial7seg`** — `platform_atmelavr` · `On-board` · `ATMEGA328P` · `8MHz` · `31.50KB` · `2KB` ✨
- **`board_atmelavr_sleepypi`** — `platform_atmelavr` · `On-board` · `ATMEGA328P` · `8MHz` · `30KB` · `2KB` 😴 (the name is giving nap era and honestly, relatable)
- **`board_atmelavr_whispernode`** — `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `31.50KB` · `2KB` 🤫
- **`board_atmelavr_the_things_uno`** — `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `16MHz` · `28KB` · `2.50KB` 👑
- **`board_atmelavr_tinyduino`** — `platform_atmelavr` · `On-board` · `ATMEGA328P` · `8MHz` · `30KB` · `2KB` 🐜
- **`board_atmelavr_tinylily`** — `platform_atmelavr` · `On-board` · `ATMEGA328P` · `8MHz` · `30KB` · `2KB` 🌸
- **`board_atmelavr_usbasp`** — `platform_atmelavr` · `On-board` · `ATMEGA8` · `12MHz` · `8KB` · `1KB` 🦋
- **`board_atmelavr_wildfirev2`** — `platform_atmelavr` · `On-board` · `ATMEGA1284P` · `16MHz` · `120.00KB` · `16KB` 🔥
- **`board_atmelavr_wildfirev3`** — `platform_atmelavr` · `On-board` · `ATMEGA1284P` · `16MHz` · `127KB` · `16KB` 🔥
- **`board_atmelavr_ftduino`** — `platform_atmelavr` · `On-board` · `ATMEGA32U4` · `16MHz` · `28KB` · `2.50KB` ⭐
- **`board_atmelavr_bob3`** — `platform_atmelavr` · `On-board` · `ATMEGA88` · `8MHz` · `8KB` · `1KB` 💜
- **`board_atmelavr_nibo2`** — `platform_atmelavr` · `On-board` · `ATMEGA128` · `16MHz` · `128KB` · `4KB` 🎀
- **`board_atmelavr_niboburger`** — `platform_atmelavr` · `On-board` · `ATMEGA16` · `15MHz` · `16KB` · `1KB` 🍔 (not me getting hungry mid-manpage)
- **`board_atmelavr_niboburger_1284`** — `platform_atmelavr` · `On-board` · `ATMEGA1284P` · `20MHz` · `128KB` · `16KB` 🍔
- **`board_atmelavr_nibobee`** — `platform_atmelavr` · `On-board` · `ATMEGA16` · `15MHz` · `16KB` · `1KB` 🐝
- **`board_atmelavr_nibobee_1284`** — `platform_atmelavr` · `On-board` · `ATMEGA1284P` · `20MHz` · `128KB` · `16KB` 🐝
- **`board_atmelavr_ardhat`** — `platform_atmelavr` · `On-board` · `ATMEGA328P` · `16MHz` · `31.50KB` · `2KB` 🎩

---

and yes, that second column is <hotpink>empty for literally every one of them</hotpink> — I'm not hiding anything from you, that's just the table as it comes, bestie 🫶

### 🎀 Sipeed RV Debugger

Bestie, meet the <pink>**Sipeed RV Debugger**</pink> — it's giving high-speed 3-IN-1 fast USB ARM/ESP32 JTAG, USB-to-RS232 virtual port *and* power supply for your 5VDC device. A whole trio in one lil stick. 😭💖

The official reference can be found <cyan>here</cyan>.

---

## ✨ Contents ✨

- Configuration
- Drivers
- Wiring Connections
- Platforms
- Frameworks
- Boards

---

## 🌸 Configuration 🌸

Okay so you can configure this debugging tool using the `projectconf_debug_tool` option in `projectconf`, like:

[env:myenv] platform = ... board = ... debug_tool = sipeed-rv-debugger


And if you would like to use this tool for firmware uploading, please change the upload protocol, no cap:

[env:myenv] platform = ... board = ... debug_tool = sipeed-rv-debugger upload_protocol = sipeed-rv-debugger


More options, because there's *always* more:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

## 💅 Drivers 💅

### Windows

- Step-by-step guide: Drivers, Zadig, Wiring
- Video tutorial

### Mac

macOS contains the default `FTDIUSBSerialDriver` driver which conflicts with debug tools which are based on this chip. FTDI Chip company recommends removing this default driver from a system. Everything should work after system rebooting. See detailed instruction in official application note (Page 16, Section 4: Uninstalling FTDI Drivers on OS X) `AN134`: FTDI Drivers Installation guide for MAC OS X.

### Linux

Please install `udev` rules — faq_udev_rules. If you already installed them before, please check that your rules are up-to-date or repeat steps. ⭐

---

## 🦋 Wiring Connections 🦋

Here's the plug-in-the-things cheat sheet, pin by pin:

- **`1`** → `GND` — Digital ground
- **`2`** → `TDI` — Test Data In pin
- **`6`** → `TMS` — Test Mode State pin
- **`10`** → `TCK` — JTAG Return Test Clock
- **`8`** → `TDO` — Test Data Out pin
- **`4`** → `RST` — Connect this pin to the (active low) reset input of the target CPU

---

## 💜 Platforms 💜

- **`platform_gd32v`** — The GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the RISC-V core with an impressive balance of processing power, reduced power consumption and peripheral set.
- **`platform_kendryte210`** — Kendryte K210 is an AI capable RISCV64 dual core SoC.

---

## 🌈 Frameworks 🌈

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_gd32vf103-sdk`** — GigaDevice GD32VF103 Firmware Library (SDK)
- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK without OS support

- **`framework_kendryte-freertos-sdk`** — the Kendryte SDK, but make it FreeRTOS-flavoured 💖 it comes with FreeRTOS support baked in, bestie.

---

## 🌈 Boards 🌈

> **NOTE:** the original page says, and I quote: "For more detailed board information please scroll tables below by horizontal." So yeah — horizontally, bestie. Scroll sideways, the tea is all the way over there. 👀

The columns you're reading across are: **Name**, **Platform**, **Debug**, **MCU**, **Frequency**, **Flash**, **RAM**. Here's every single row, no skips, no cap:

- **`board_gd32v_gd32vf103v-eval`** — platform: `platform_gd32v` · debug: External · MCU: `GD32VF103VBT6` · 108MHz · Flash 128KB · RAM 32KB ✨
- **`board_gd32v_sipeed-longan-nano`** — platform: `platform_gd32v` · debug: External · MCU: `GD32VF103CBT6` · 108MHz · Flash 128KB · RAM 32KB 🦋
- **`board_gd32v_sipeed-longan-nano-lite`** — platform: `platform_gd32v` · debug: External · MCU: `GD32VF103C8T6` · 108MHz · Flash 64KB · RAM 20KB 🎀
- **`board_kendryte210_sipeed-maix-bit`** — platform: `platform_kendryte210` · debug: External · MCU: `K210` · 400MHz · Flash 16MB · RAM 6MB 🔥
- **`board_kendryte210_sipeed-maix-bit-mic`** — platform: `platform_kendryte210` · debug: External · MCU: `K210` · 400MHz · Flash 16MB · RAM 6MB 🔥
- **`board_kendryte210_sipeed-maix-go`** — platform: `platform_kendryte210` · debug: External · MCU: `K210` · 400MHz · Flash 16MB · RAM 6MB 💜
- **`board_kendryte210_sipeed-maix-one-dock`** — platform: `platform_kendryte210` · debug: External · MCU: `K210` · 400MHz · Flash 16MB · RAM 6MB 🌸
- **`board_kendryte210_sipeed-maixduino`** — platform: `platform_kendryte210` · debug: External · MCU: `K210` · 400MHz · Flash 16MB · RAM 6MB ⭐
- **`board_kendryte210_sipeed-MF1`** — platform: `platform_kendryte210` · debug: External · MCU: `K210` · 400MHz · Flash 16MB · RAM 6MB 🌈
- **`board_gd32v_wio_lite_risc-v`** — platform: `platform_gd32v` · debug: External · MCU: `GD32VF103CBT6` · 108MHz · Flash 128KB · RAM 32KB 💅

Not me noticing that literally every single one of these is **External** debug — the consistency is lowkey iconic. 👑 And the `K210` squad all ate with the exact same **400MHz / 16MB / 6MB** spec sheet, periodt. 🫶

# 💅 ST-LINK 💅

okay bestie, gather round, because the <hotpink>ST-LINK</hotpink> is *that girl* 💖

The ST-LINK is an in-circuit debugger and programmer for the STM8 and STM32 microcontroller families. The single wire interface module (`SWIM`) and JTAG/serial wire debugging (`SWD`) interfaces are used to communicate with any STM8 or STM32 microcontroller located on an application board. Official reference can be found here.

---

## 🌸 Contents 🌸

- Configuration
- Drivers
- Wiring Connections
  - JTAG Interface
  - Serial Wire Mode Interface (SWD)
- Platforms
- Frameworks
- Boards

---

## ⚙️ Configuration ⚙️

You can configure debugging tool using <purple>`projectconf_debug_tool`</purple> option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = stlink


If you would like to use this tool for firmware uploading, please change upload protocol:

[env:myenv] platform = ... board = ... debug_tool = stlink upload_protocol = stlink


More options:

- <cyan>`projectconf_section_env_debug`</cyan>
- <cyan>`projectconf_section_env_upload`</cyan>

---

## 🚗 Drivers 🚗

<yellow>Windows</yellow> — Please install official ST-LINK USB driver. no cap, you gotta do it 💅

<peach>Mac</peach> — Not required. iconic, she's low maintenance ✨

<mint>Linux</mint> — Please install `"udev"` rules faq_udev_rules. If you already installed them before, please check that your rules are up-to-date or repeat steps. 🫶

---

## 🔌 Wiring Connections 🔌

[image]

---

## 🧚 JTAG Interface 🧚

okay so here's the pin tea, bestie — one bullet per row of the chart 💜

- **ST-Link JTAG 20-Pin Connector** `1` — Board JTAG Pin `VCC` — Positive Supply Voltage — Power supply for JTAG interface drivers
- **ST-Link JTAG 20-Pin Connector** `4` — Board JTAG Pin `GND` — Digital ground
- **ST-Link JTAG 20-Pin Connector** `5` — Board JTAG Pin `TDI` — Test Data In pin
- **ST-Link JTAG 20-Pin Connector** `7` — Board JTAG Pin `TMS` — Test Mode State pin

- **`9`** — `TCK` — JTAG Return Test Clock 🕐
- **`13`** — `TDO` — Test Data Out pin ✨
- **`15`** — `RESET` — Connect this pin to the (active low) reset input of the target CPU 🔄

---

## ✨ Serial Wire Mode Interface (SWD) ✨

okay so if you're on the 2-wire grind instead of full JTAG, here's your ST-Link SWD 20-pin connector lineup, matched to the board's SWD pin 🦋

- **`1`** — `VCC` — Positive Supply Voltage — Power supply for JTAG interface drivers ⚡
- **`4`** — `GND` — Digital ground 🫶
- **`7`** — `SWDIO` — Data I/O 💅
- **`9`** — `SWCLK` — Clock 🕐
- **`15`** — `RESET` — Connect this pin to the (active low) reset input of the target CPU 🔄

---

## 🌈 Platforms 🌈

bestie these are the platforms, each one a whole vibe, no cap 👑

- **`platform_aceinna_imu`** — Open-source, embedded development platform for Aceinna IMU hardware. Run custom algorithms and navigation code on Aceinna IMU/INS hardware. 🧭

- **`platform_atmelsam`** — Atmel | SMART offers Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB to 2MB of Flash including a rich peripheral and feature mix. 🔥

- **`platform_nordicnrf51`** — The Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell. 🦋

- **`platform_nordicnrf52`** — The nRF52 Series are built for speed to carry out increasingly complex tasks in the shortest possible time and return to sleep, 💤

...conserving precious battery power. They have a `Cortex-M4F` processor and are <rainbow>the most capable</rainbow> Bluetooth Smart SoCs on the market. like, literally the moment 💅

---

## 🎀 Frameworks 🎀

okay besties this is the framework list and it's giving *choices* ✨ every single one, no skips:

- **`framework_arduino`** — Arduino Wiring-based Framework lets you write <purple>cross-platform</purple> software to control devices attached to a *wide* range of Arduino boards, so you can build all kinds of creative coding, interactive objects, spaces, or physical experiences. it's giving maker-girlie main character energy 🦋

- **`framework_cmsis`** — The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a <cyan>vendor-independent</cyan> hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices. obsessed with the efficiency honestly 😌

- **`framework_libopencm3`** — The libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM `Cortex-M0(+)`/`M3`/`M4` microcontrollers, including ST STM32, Ti

---

- **`framework_mbed`** — the mbed framework. The mbed SDK was literally designed to give you enough hardware abstraction to be intuitive and concise, yet still powerful enough to build complex projects 💅. It's built on the low-level ARM CMSIS APIs, so you can code down to the metal if you need to, bestie. And on top of RTOS, USB and Networking libraries, the mbed Developer Community has built a whole cookbook of hundreds of reusable peripheral and module libraries on top of the SDK. It's giving ecosystem 🦋

- **`framework_simba`** — Simba is an RTOS and build framework. Its whole goal? Making embedded programming easy and portable. Periodt ✨

- **`framework_spl`** — the ST Standard Peripheral Library hands you a set of functions for handling the peripherals on the STM32 Cortex-M3 family. The idea is to save you — the new user especially 🙈 — from having to deal directly with the registers. Iconic, honestly.

- **`framework_stm32cube`** — STM32Cube embedded software libraries, including: the HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; and the Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 🔥

- **`framework_zephyr`** — the Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind 👑

---

## 🌈 Boards 🌈

> **NOTE:** for more detailed board information, please scroll the tables below by horizontal. Yes, horizontally. She's wide, bestie, it's not a vibe — just scroll 🫶

Each board comes with its Name, Platform, Debug, MCU, Frequency, Flash and RAM. Let's go:

- **`board_ststm32_1bitsy_stm32f415rgt`**
  - Platform: `platform_ststm32`
  - Debug: External
  - MCU: `STM32F415RGT`
  - Frequency: `168MHz`
  - Flash: `1MB`
  - RAM: `128KB`

- **`board_ststm32_disco_f412zg`**
  - Platform: `platform_ststm32`
  - Debug: On-board
  - MCU: `STM32F412ZGT6`
  - Frequency: `100MHz`
  - Flash: `1MB`
  - RAM: `256KB`

okay bestie the board list keeps going, hydrate and stretch, we're still in it 💖

- **`board_ststm32_disco_f723ie`** — platform <pink>`platform_ststm32`</pink>, On-board, MCU `STM32F723IEK6`, clocked at `216MHz`, rocking `512KB` of flash and `192KB` of RAM ✨

- **`board_ststm32_armed_v1`** — platform <pink>`platform_ststm32`</pink>, External, MCU `STM32F407VET6`, `168MHz`, `512KB` flash, `192KB` RAM 🦋

- **`board_ststm32_rumba32_f446ve`** — platform <pink>`platform_ststm32`</pink>, External, MCU `STM32F446RET6`, `180MHz`, `512KB` flash, `128KB` RAM 💅

- **`board_ststm32_remram_v1`** — platform <pink>`platform_ststm32`</pink>, On-board, MCU `STM32F765VIT6`, `216MHz`, `2MB` flash, `512KB` RAM 🔥 (yes bestie, *two whole megabytes*)

- **`board_ststm32_st3dp001_eval`** — platform <pink>`platform_ststm32`</pink>, On-board, MCU `STM32F401VGT6`, `84MHz`, `512KB` flash, `96KB` RAM 🌸

- **`board_ststm32_b96b_argonkey`** — platform <pink>`platform_ststm32`</pink>, External, MCU `STM32F412CG`, `100MHz`, `1MB` flash, `256KB` RAM 💜

- **`board_ststm32_b96b_f446ve`** — platform <pink>`platform_ststm32`</pink>, On-board, MCU `STM32F446VET6`, `168MHz`, `512KB` flash, `128KB` RAM 🎀

- **`board_ststm32_b96b_neonkey`** — platform <pink>`platform_ststm32`</pink>, External, MCU `STM32F411CE`, `100MHz`, `512KB` flash, `128KB` RAM ✨

- **`board_nordicnrf52_96b_nitrogen`** — platform <cyan>`platform_nordicnrf52`</cyan>, External, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 🦋

- **`board_aceinna_imu_LowCostRTK`** — platform <mint>`platform_aceinna_imu`</mint>, On-board, MCU `STM32F469NIH6`, `180MHz`, `1MB` flash, `384KB` RAM 🫶

- **`board_aceinna_imu_OpenIMU300`** — platform <mint>`platform_aceinna_imu`</mint>, External, MCU `STM32F405RG`, `120MHz`, `1MB` flash, `128KB` RAM 🌈

- **`board_aceinna_imu_OpenIMU300ZA`** — platform <mint>`platform_aceinna_imu`</mint>, External, MCU `STM32F405RG`, `120MHz`, `1MB` flash, `128KB` RAM 🌈 (yeah it's the same specs as the one above, they're siblings, we don't question it 💀)

- **`board_aceinna_imu_OpenIMU330`** — platform <mint>`platform_aceinna_imu`</mint>, External, MCU `STM32L431CB`, `80MHz`, `128KB` flash, `64KB` RAM 🍓

- **`board_aceinna_imu_OpenRTK`** — platform <mint>`platform_aceinna_imu`</mint>, External, MCU `STM32F469IG`, `180MHz`, `1MB` flash, `384KB` RAM ⭐

- **`board_aceinna_imu_OpenRTK330L`** — platform <mint>`platform_aceinna_imu`</mint>, External, MCU `STM32F469IG`, `180MHz`, `1MB` flash, `384KB` RAM ⭐

- **`board_nordicnrf52_adafruit_feather_nrf52832`** — platform <cyan>`platform_nordicnrf52`</cyan>, External, MCU `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 🪶

- **`board_nordicnrf52_adafruit_feather_nrf52840_sense`** — platform <cyan>`platform_nordicnrf52`</cyan>, External, MCU `NRF52840`, `64MHz`, `796KB` flash, `243KB` RAM 🪶✨

- **`board_ststm32_adafruit_feather_f405`** — platform <pink>`platform_ststm32`</pink>, External, MCU `STM32F405RGT6`, `168MHz`, `1MB` flash, `128KB` RAM 💅

- **`board_nordicnrf52_adafruit_feather_nrf52840`** — platform <cyan>`platform_nordicnrf52`</cyan>, External, MCU `NRF52840`, `64MHz`, `796KB` flash, `243KB` RAM 🪶 (the non-sense sibling, same energy)

- **`board_ststm32_afroflight_f103cb`** — platform <pink>`platform_ststm32`</pink>, External, MCU `STM32F103CBT6`, `72MHz`, `128KB` flash, `20KB` RAM 🌸

- **`board_atmelsam_due`** — platform <peach>`platform_atmelsam`</peach>, External, MCU `AT91SAM3X8E`, `84MHz`, `512KB` flash, `96KB` RAM 👑

---

and the list just *keeps on going*, bestie, so stay with me 💖

okay so the board parade just keeps going and honestly? iconic lineup 💅 every row is the same shape: board id, the platform it lives in, whether the chip is On-board or External, the actual MCU, then clock speed, flash and RAM. reading left to right, no cap:

- **`board_atmelsam_dueUSB`** — <pink>`platform_atmelsam`</pink> · External · `AT91SAM3X8E` · `84MHz` · `512KB` flash · `96KB` RAM
- **`board_ststm32_armstrap_eagle1024`** — <pink>`platform_ststm32`</pink> · On-board · `STM32F417VGT6` · `168MHz` · `1MB` flash · `192KB` RAM
- **`board_ststm32_armstrap_eagle2048`** — <pink>`platform_ststm32`</pink> · On-board · `STM32F427VIT6` · `168MHz` · `1.99MB` flash · `256KB` RAM
- **`board_ststm32_armstrap_eagle512`** — <pink>`platform_ststm32`</pink> · On-board · `STM32F407VET6` · `168MHz` · `512KB` flash · `192KB` RAM
- **`board_nordicnrf52_laird_bl652_dvk`** — <purple>`platform_nordicnrf52`</purple> · On-board · `NRF52832` · `64MHz` · `512KB` flash · `64KB` RAM
- **`board_nordicnrf52_laird_bl654_dvk`** — <purple>`platform_nordicnrf52`</purple> · On-board · `NRF52840` · `64MHz` · `1MB` flash · `256KB` RAM
- **`board_ststm32_black_f407ve`** — <pink>`platform_ststm32`</pink> · External · `STM32F407VET6` · `168MHz` · `512KB` flash · `128KB` RAM
- **`board_ststm32_black_f407vg`** — <pink>`platform_ststm32`</pink> · External · `STM32F407VGT6` · `168MHz` · `512KB` flash · `128KB` RAM
- **`board_ststm32_black_f407ze`** — <pink>`platform_ststm32`</pink> · External · `STM32F407ZET6` · `168MHz` · `512KB` flash · `128KB` RAM
- **`board_ststm32_black_f407zg`** — <pink>`platform_ststm32`</pink> · External · `STM32F407ZGT6` · `168MHz` · `1MB` flash · `128KB` RAM
- **`board_ststm32_blackpill_f103c8`** — <pink>`platform_ststm32`</pink> · External · `STM32F103C8T6` · `72MHz` · `64KB` flash · `20KB` RAM
- **`board_ststm32_blackpill_f103c8_128`** — <pink>`platform_ststm32`</pink> · External · `STM32F103C8T6` · `72MHz` · `128KB` flash · `20KB` RAM
- **`board_ststm32_robotdyn_blackpill_f303cc`** — <pink>`platform_ststm32`</pink> · External · `STM32F303CCT6` · `72MHz` · `256KB` flash · `40KB` RAM
- **`board_ststm32_blackpill_f401cc`** — <pink>`platform_ststm32`</pink> · External · `STM32F401CCT6` · `84MHz` · `256KB` flash · `64KB` RAM
- **`board_ststm32_blue_f407ve_mini`** — <pink>`platform_ststm32`</pink> · External · `STM32F407VET6` · `168MHz` · `512KB` flash · `128KB` RAM
- **`board_ststm32_bluepill_f103c6`** — <pink>`platform_ststm32`</pink> · External · `STM32F103C6T6` · `72MHz` · `32KB` flash · `10KB` RAM
- **`board_ststm32_bluepill_f103c8`** — <pink>`platform_ststm32`</pink> · External · `STM32F103C8T6` · `72MHz` · `64KB` flash · `20KB` RAM
- **`board_ststm32_bluepill_f103c8_128k`** — <pink>`platform_ststm32`</pink> · External · `STM32F103C8T6` · `72MHz` · `128KB` flash · `20KB` RAM
- **`board_nordicnrf52_bluey`** — <purple>`platform_nordicnrf52`</purple> · External · `NRF52832` · `64MHz` · `512KB` flash · `64KB` RAM
- **`board_nordicnrf51_bluz_dk`** — <purple>`platform_nordicnrf51`</purple> · External · `NRF51822` · `32MHz` · `256KB` flash · `32KB` RAM
- **`board_nordicnrf52_adafruit_cplaynrf52840`** — <purple>`platform_nordicnrf52`</purple> · External · `NRF52840` · `64MHz` · `796KB` flash · `243KB` RAM

> heads up bestie, that last row is written exactly the way the page gives it — <hotpink>`board_nordicnrf52_adafruit_cplaynrf52840`</hotpink> followed straight by `platform_nordicnrf52` with no column divider. no, it's not me being messy, that's just how it's typeset here 🙈 keep it character-for-character if you're copying.

and yeah, the flash numbers are *not* a typo vibe: `512KB` versus `1MB` versus `1.99MB` versus `796KB` are all literally what each board reports, and RAM swings from `10KB` on the little `bluepill_f103c6` all the way up to `256KB` on the `nrf52840` twins. the `72MHz` crew ate, the `168MHz` crew ate harder, and the `32MHz` `nrf51822` is out here doing its best and we love her for it 🫶

---

- **`board_ststm32_coreboard_f401rc`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F401RCT6` ✨ `84MHz` ✨ flash `256KB` ✨ RAM `64KB`
- **`board_nordicnrf52_delta_dfbm_nq620`** — platform: `platform_nordicnrf52` ✨ `On-board` ✨ `NRF52832` ✨ `64MHz` ✨ flash `512KB` ✨ RAM `64KB`
- **`board_ststm32_demo_f030f4`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F030F4P6` ✨ `48MHz` ✨ flash `16KB` ✨ RAM `4KB`

okay the `demo_f030f4` is giving *starter kit energy* fr, `16KB` of flash is literally one (1) vibe and a half 💀 tiny but iconic, she's doing her best 🎀

- **`board_atmelsam_digix`** — platform: `platform_atmelsam` ✨ `External` ✨ `AT91SAM3X8E` ✨ `84MHz` ✨ flash `512KB` ✨ RAM `96KB`
- **`board_nordicnrf52_electronut_blip`** — platform: `platform_nordicnrf52` ✨ `On-board` ✨ `NRF52840` ✨ `64MHz` ✨ flash `1MB` ✨ RAM `256KB`
- **`board_nordicnrf52_electronut_papyr`** — platform: `platform_nordicnrf52` ✨ `On-board` ✨ `NRF52840` ✨ `64MHz` ✨ flash `1MB` ✨ RAM `256KB`

blip and papyr are twins no cap, same `NRF52840`, same `64MHz`, same `1MB` flash, same `256KB` RAM — sisters not siblings 💅

- **`board_ststm32_elmo_f411re`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F411RET6` ✨ `100MHz` ✨ flash `512KB` ✨ RAM `128KB`
- **`board_ststm32_diymore_f407vgt`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F407VGT6` ✨ `168MHz` ✨ flash `512KB` ✨ RAM `128KB`
- **`board_ststm32_fk407m1`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F407VET6` ✨ `168MHz` ✨ flash `512KB` ✨ RAM `128KB`

<cyan>`168MHz`?!</cyan> the F407 girlies are *fast* omg, main character energy for real 🔥

- **`board_nordicnrf52_holyiot_yj16019`** — platform: `platform_nordicnrf52` ✨ `External` ✨ `NRF52832` ✨ `64MHz` ✨ flash `512KB` ✨ RAM `64KB`
- **`board_nordicnrf52_adafruit_itsybitsy_nrf52840`** — platform: `platform_nordicnrf52` ✨ `On-board` ✨ `NRF52840` ✨ `64MHz` ✨ flash `796KB` ✨ RAM `243KB`

> okay bestie real talk, that `itsybitsy` row is missing its little `│` separator before `platform_nordicnrf52` — that's just how the table came out, don't come for me, I'm reporting it exactly as I found it 🙈

also `796KB` flash and `243KB` RAM?? not the round numbers, she's quirky and we respect it 🌸

- **`board_ststm32_rhombio_l476dmw1k`** — platform: `platform_ststm32` ✨ `On-board` ✨ `STM32L476VGT6` ✨ `80MHz` ✨ flash `1MB` ✨ RAM `128KB`
- **`board_ststm32_malyanm200_f070cb`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F070CBT6` ✨ `48MHz` ✨ flash `120KB` ✨ RAM `14.81KB`
- **`board_ststm32_malyanm300_f070cb`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F070CBT6` ✨ `48MHz` ✨ flash `120KB` ✨ RAM `14.81KB`

<peach>`14.81KB`</peach> of RAM… bestie she is *thriving* on crumbs and honestly? relatable 🍓 the m200 and m300 are the same board brain in different little outfits, periodt

- **`board_ststm32_mts_dragonfly_f411re`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F411RET6` ✨ `100MHz` ✨ flash `512KB` ✨ RAM `128KB`
- **`board_nordicnrf52_nrf52832_mdk`** — platform: `platform_nordicnrf52` ✨ `On-board` ✨ `NRF52832` ✨ `64MHz` ✨ flash `512KB` ✨ RAM `64KB`
- **`board_nordicnrf52_nrf52840_mdk`** — platform: `platform_nordicnrf52` ✨ `On-board` ✨ `NRF52840` ✨ `64MHz` ✨ flash `1MB` ✨ RAM `256KB`

MDK the sequel — `52832` gave `512KB`/`64KB`, `52840` came back with `1MB`/`256KB` and said *glow up* ✨👑

- **`board_ststm32_malyanm200_f103cb`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F103CBT6` ✨ `72MHz` ✨ flash `120KB` ✨ RAM `20KB`
- **`board_ststm32_maple`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F103RBT6` ✨ `72MHz` ✨ flash `108KB` ✨ RAM `17KB`

> not me clocking that `maple` has *less* flash and RAM than the `malyanm200_f103cb` — `108KB`/`17KB` vs `120KB`/`20KB` 😭 no shade, just facts, the numbers said what they said

- **`board_ststm32_maple_ret6`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F103RET6` ✨ `72MHz` ✨ flash `256KB` ✨ RAM `48KB`

and then `maple_ret6` showed up with `256KB` flash and `48KB` RAM like the rich cousin at the family reunion 💅 slay

- **`board_ststm32_maple_mini_b20`** — platform: `platform_ststm32` ✨ `External` ✨ `STM32F103CBT6` ✨ `72MHz` ✨ flash `120KB` ✨ RAM `20KB`

mini in name only bestie, she's out here matching `malyanm200_f103cb` spec for spec — `STM32F103CBT6`, `72MHz`, `120KB`, `20KB`, no cap 🫶

<pink>okay bestie we're still in the board table</pink> and it just. keeps. going. 💅 every line here is another board, and every single one is written exactly like it was in the original — the platform it lives in, whether the chip is <lavender>On-board</lavender> or <peach>External</peach>, the MCU, the clock speed, the flash and the RAM. no skipping, no summarising, we're doing all of them 💖

- **`board_ststm32_maple_mini_origin`** — platform: `platform_ststm32` · External · MCU: `STM32F103CBT6` · `72MHz` · flash `108KB` · RAM `17KB`
- **`board_ststm32_mbed_connect_odin`** — platform: `platform_ststm32` · On-board · MCU: `STM32F439ZIY6` · `168MHz` · flash `2MB` · RAM `256KB`
- **`board_nordicnrf52_adafruit_metro_nrf52840`** — platform: `platform_nordicnrf52` · External · MCU: `NRF52840` · `64MHz` · flash `796KB` · RAM `243KB`
- **`board_ststm32_microduino32_flash`** — platform: `platform_ststm32` · External · MCU: `STM32F103CBT6` · `72MHz` · flash `105.47KB` · RAM `16.60KB`
- **`board_ststm32_mxchip_az3166`** — platform: `platform_ststm32` · On-board · MCU: `STM32F412ZGT6` · `100MHz` · flash `1MB` · RAM `256KB`
- **`board_ststm32_mts_mdot_f405rg`** — platform: `platform_ststm32` · External · MCU: `STM32F411RET6` · `100MHz` · flash `512KB` · RAM `128KB`
- **`board_ststm32_mts_mdot_f411re`** — platform: `platform_ststm32` · External · MCU: `STM32F411RET6` · `100MHz` · flash `512KB` · RAM `128KB`
- **`board_ststm32_xdot_l151cc`** — platform: `platform_ststm32` · External · MCU: `STM32L151CCU6` · `32MHz` · flash `256KB` · RAM `32KB`
- **`board_ststm32_netduino2plus`** — platform: `platform_ststm32` · External · MCU: `STM32F405RGT6` · `168MHz` · flash `1MB` · RAM `192KB`
- **`board_ststm32_mote_l152rc`** — platform: `platform_ststm32` · External · MCU: `STM32L152RC` · `32MHz` · flash `256KB` · RAM `32KB`
- **`board_nordicnrf51_nrf51_beacon`** — platform: `platform_nordicnrf51` · On-board · MCU: `NRF51822` · `32MHz` · flash `256KB` · RAM `32KB`
- **`board_nordicnrf52_thingy_52`** — platform: `platform_nordicnrf52` · External · MCU: `NRF52832` · `64MHz` · flash `512KB` · RAM `64KB`
- **`board_nordicnrf51_nrf51_dk`** — platform: `platform_nordicnrf51` · On-board · MCU: `NRF51822` · `32MHz` · flash `256KB` · RAM `32KB`
- **`board_nordicnrf52_nrf52_dk`** — platform: `platform_nordicnrf52` · On-board · MCU: `NRF52832` · `64MHz` · flash `512KB` · RAM `64KB`
- **`board_nordicnrf52_nrf52840_dk`** — platform: `platform_nordicnrf52` · On-board · MCU: `NRF52840` · `64MHz` · flash `1MB` · RAM `256KB`
- **`board_nordicnrf52_nrf52840_dk_adafruit`** — platform: `platform_nordicnrf52` · On-board · MCU: `NRF52840` · `64MHz` · flash `796KB` · RAM `243KB`
- **`board_ststm32_olimexino`** — platform: `platform_ststm32` · External · MCU: `STM32F103RBT6` · `72MHz` · flash `128KB` · RAM `20KB`
- **`board_nordicnrf51_oshchip`** — platform: `platform_nordicnrf51` · External · MCU: `NRF51822` · `32MHz` · flash `256KB` · RAM `32KB`
- **`board_ststm32_olimex_p405`** — platform: `platform_ststm32` · External · MCU: `STM32F405RGT6` · `168MHz` · flash `1MB` · RAM `192KB`
- **`board_ststm32_nucleo_wb55rg_p`** — platform: `platform_ststm32` · On-board · MCU: `STM32WB55RG` · `64MHz` · flash `512KB` · RAM `192.00KB`
- **`board_nordicnrf52_particle_xenon`** — platform: `platform_nordicnrf52` · External · MCU: `NRF52840` · `64MHz` · flash `796KB` · RAM `243KB`

---

<cyan>a lil vibe check on what you just scrolled through</cyan> ✨ — the <hotpink>STM32</hotpink> crew is out here flexing everything from a lil `72MHz` classic up to a `168MHz` baddie, and the flash sizes range from the very precise `105.47KB` / `16.60KB` situation on `board_ststm32_microduino32_flash` all the way up to a whole `2MB` on `board_ststm32_mbed_connect_odin` 👑. the `platform_nordicnrf51` girlies are keeping it cozy at `32MHz` with `256KB` flash and `32KB` RAM, and the `platform_nordicnrf52` squad is serving `64MHz` with either `512KB`/`64KB` or `796KB`/`243KB` or `1MB`/`256KB` depending on the board 💅

and yes bestie, <rainbow>every single number up there is copied exactly as-is</rainbow> 🫶 don't come for me about `board_ststm32_mts_mdot_f405rg` being listed with `STM32F411RET6` — that's literally what the page says and I do not make the rules 💀

- <pink>**`board_ststm32_piconomix_px_her0`**</pink> — platform is `platform_ststm32`, External, chip is `STM32L072RB`, clocking `32MHz`, with `128KB` of flash and `20KB` of RAM 🦋
- <pink>**`board_ststm32_prntr_v2`**</pink> — platform is `platform_ststm32`, External, chip is `STM32F407RE`, clocking `168MHz`, with `512KB` of flash and `192KB` of RAM ✨
- <pink>**`board_ststm32_rak811_tracker`**</pink> — platform is `platform_ststm32`, External, chip is `STM32L151RBT6`, clocking `32MHz`, with `128KB` of flash and `16KB` of RAM 💖
- <pink>**`board_ststm32_rak811_tracker_32`**</pink> — platform is `platform_ststm32`, External, chip is `STM32L151RBT6`, clocking `32MHz`, with `128KB` of flash and `32KB` of RAM 💖
- <pink>**`board_ststm32_rhf76_052`**</pink> — platform is `platform_ststm32`, External, chip is `STM32L051C8T6`, clocking `32MHz`, with `64KB` of flash and `8KB` of RAM 🌸
- <pink>**`board_nordicnrf51_redBearLabBLENano`**</pink> — platform is `platform_nordicnrf51`, On-board, chip is `NRF51822`, clocking `16MHz`, with `256KB` of flash and `32KB` of RAM 🎀
- <pink>**`board_nordicnrf52_redbear_blenano2`**</pink> — platform is `platform_nordicnrf52`, On-board, chip is `NRF52832`, clocking `64MHz`, with `512KB` of flash and `64KB` of RAM 🎀
- <pink>**`board_nordicnrf52_redbear_blend2`**</pink> — platform is `platform_nordicnrf52`, On-board, chip is `NRF52832`, clocking `64MHz`, with `512KB` of flash and `64KB` of RAM 🎀
- <pink>**`board_nordicnrf51_redBearLab`**</pink> — platform is `platform_nordicnrf51`, On-board, chip is `NRF51822`, clocking `16MHz`, with `256KB` of flash and `16KB` of RAM 🎀
- <pink>**`board_ststm32_cloud_jam`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32F401RET6`, clocking `84MHz`, with `512KB` of flash and `96KB` of RAM ☁️
- <pink>**`board_ststm32_cloud_jam_l4`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32L476RGT6`, clocking `80MHz`, with `1MB` of flash and `128KB` of RAM ☁️
- <pink>**`board_nordicnrf52_sdt52832b`**</pink> — platform is `platform_nordicnrf52`, External, chip is `NRF52832`, clocking `64MHz`, with `512KB` of flash and `64KB` of RAM 🦋
- <pink>**`board_ststm32_disco_f334c8`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32F334C8T6`, clocking `72MHz`, with `64KB` of flash and `12KB` of RAM 🔥
- <pink>**`board_ststm32_disco_f401vc`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32F401VCT6`, clocking `84MHz`, with `256KB` of flash and `64KB` of RAM 🔥
- <pink>**`board_ststm32_disco_f411ve`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32F411VET6`, clocking `100MHz`, with `512KB` of flash and `128KB` of RAM 🔥
- <pink>**`board_ststm32_disco_f413zh`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32F413ZHT6`, clocking `100MHz`, with `512KB` of flash and `128KB` of RAM 🔥
- <pink>**`board_ststm32_disco_f429zi`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32F429ZIT6`, clocking `180MHz`, with `2MB` of flash and `256KB` of RAM 👑
- <pink>**`board_ststm32_disco_f469ni`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32F469NIH6`, clocking `180MHz`, with `1MB` of flash and `384KB` of RAM 👑
- <pink>**`board_ststm32_disco_f746ng`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32F746NGH6`, clocking `216MHz`, with `1MB` of flash and `320KB` of RAM 👑
- <pink>**`board_ststm32_disco_f769ni`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32F769NIH6`, clocking `216MHz`, with `1MB` of flash and `512KB` of RAM 👑
- <pink>**`board_ststm32_disco_l053c8`**</pink> — platform is `platform_ststm32`, On-board, chip is `STM32L053C8T6`, clocking `32MHz`, with `64KB` of flash and `8KB` of RAM 🌸

- **`board_ststm32_disco_l100rc`** — lives in <cyan>`platform_ststm32`</cyan>, rocking the on-board `STM32L100RCT6` 🦋 at `32MHz`, with `256KB` of flash and `16KB` of RAM. cute little starter energy fr.
- **`board_ststm32_disco_l476vg`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32L476VGT6` 💅 clocked at `80MHz`, `1MB` flash, `128KB` RAM. she's got ROOM bestie.
- **`board_ststm32_disco_l496ag`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32L496AGI6` ✨ at `80MHz`, `1MB` flash, `320KB` RAM. that RAM number?? iconic.
- **`board_ststm32_disco_l475vg_iot01a`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32L475VGT6` 🛰️ at `80MHz`, `1MB` flash, `128KB` RAM. the `iot01a` suffix is giving connected-device main character energy.
- **`board_ststm32_disco_l072cz_lrwan1`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32L072CZ` 📡 at `32MHz`, `192KB` flash, `20KB` RAM. `lrwan1` in the name = long-range vibes, no cap.
- **`board_ststm32_disco_f072rb`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F072RBT6` 🍓 at `48MHz`, `128KB` flash, `16KB` RAM.
- **`board_ststm32_nucleo_f030r8`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F030R8T6` 🌸 at `48MHz`, `64KB` flash, `8KB` RAM.
- **`board_ststm32_nucleo_f031k6`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F031K6T6` 🧚 at `48MHz`, `32KB` flash, `4KB` RAM. tiny but she's doing her best, okay 😭
- **`board_ststm32_nucleo_f042k6`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F042K6T6` 💜 at `48MHz`, `32KB` flash, `6KB` RAM. two more KB of RAM than her f031 sister, we love a glow-up.
- **`board_ststm32_nucleo_f070rb`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F070RBT6` 🌈 at `48MHz`, `128KB` flash, `16KB` RAM.
- **`board_ststm32_nucleo_f072rb`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F072RBT6` 🎀 at `48MHz`, `128KB` flash, `16KB` RAM. same silicon as the disco f072rb up there, just in a nucleo fit. obsessed.
- **`board_ststm32_nucleo_f091rc`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F091RCT6` ⭐ at `48MHz`, `256KB` flash, `32KB` RAM.
- **`board_ststm32_nucleo_f103rb`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F103RBT6` 🔥 at `72MHz`, `128KB` flash, `20KB` RAM. the classic. the legend. iykyk.
- **`board_ststm32_nucleo_f207zg`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F207ZGT6` 👑 at `120MHz`, `1MB` flash, `128KB` RAM. `120MHz`?? she ATE.
- **`board_ststm32_nucleo_f302r8`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F302R8T6` 💖 at `72MHz`, `64KB` flash, `16KB` RAM.
- **`board_ststm32_nucleo_f303k8`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F303K8T6` 🦋 at `72MHz`, `64KB` flash, `12KB` RAM.
- **`board_ststm32_nucleo_f303re`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F303RET6` ✨ at `72MHz`, `512KB` flash, `64KB` RAM.
- **`board_ststm32_nucleo_f303ze`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F303ZET6` 💅 at `72MHz`, `512KB` flash, `64KB` RAM. same specs as the `f303re`, different package letter, both serving.
- **`board_ststm32_nucleo_f334r8`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F334R8T6` 🌸 at `72MHz`, `64KB` flash, `16KB` RAM.
- **`board_ststm32_nucleo_f401re`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F401RET6` 🫶 at `84MHz`, `512KB` flash, `96KB` RAM. `84MHz` is such a specific number and honestly? respect.
- **`board_ststm32_nucleo_f410rb`** — <cyan>`platform_ststm32`</cyan>, on-board `STM32F410RBT6` 🌟 at `100MHz`, `128KB` flash, `32KB` RAM. that clock speed on a `f4`?? main character behaviour fr fr.

---

and bestie the list literally does not stop, we are still in the nucleo trenches 💀 keep scrolling.

- **`board_ststm32_nucleo_f411re`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F411RET6`, `100MHz`, `512KB` flash, `128KB` RAM 🦋
- **`board_ststm32_nucleo_f412zg`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F412ZGT6`, `100MHz`, `1MB` flash, `256KB` RAM 💖
- **`board_ststm32_nucleo_f413zh`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F413ZHT6`, `100MHz`, `512KB` flash, `128KB` RAM ✨
- **`board_ststm32_nucleo_f429zi`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F429ZIT6`, `180MHz`, `2MB` flash, `256KB` RAM 🔥
- **`board_ststm32_nucleo_f439zi`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F439ZIT6`, `180MHz`, `2MB` flash, `256KB` RAM 🔥
- **`board_ststm32_nucleo_f446re`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F446RET6`, `180MHz`, `512KB` flash, `128KB` RAM 💅
- **`board_ststm32_nucleo_f446ze`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F446ZET6`, `180MHz`, `512KB` flash, `128KB` RAM 💅
- **`board_ststm32_nucleo_f722ze`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F722ZET6`, `216MHz`, `512KB` flash, `256KB` RAM 🌸
- **`board_ststm32_nucleo_f746zg`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F746ZGT6`, `216MHz`, `1MB` flash, `320KB` RAM 🌈

---

okay bestie the table formatting switches up here, no cap — the next ones come in that wide full-width layout instead of the boxed columns. same info tho, every single time: board, platform, on-board chip, clock, flash, RAM. obsessed 💖

- **`board_ststm32_nucleo_f756zg`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F756ZG`, `216MHz`, `1MB` flash, `320KB` RAM ✨
- **`board_ststm32_nucleo_f767zi`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32F767ZIT6`, `216MHz`, `2MB` flash, `512KB` RAM 👑
- **`board_ststm32_nucleo_h743zi`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32H743ZIT6`, `400MHz`, `2MB` flash, `512KB` RAM 🔥🔥
- **`board_ststm32_nucleo_l011k4`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32L011K4T6`, `32MHz`, `16KB` flash, `2KB` RAM 🍓
- **`board_ststm32_nucleo_l031k6`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32L031K6T6`, `32MHz`, `32KB` flash, `8KB` RAM 🍓
- **`board_ststm32_nucleo_l053r8`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32L053R8T6`, `32MHz`, `64KB` flash, `8KB` RAM 🌸
- **`board_ststm32_nucleo_l073rz`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32L073RZ`, `32MHz`, `192KB` flash, `20KB` RAM 🌸
- **`board_ststm32_nucleo_l152re`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32L152RET6`, `32MHz`, `512KB` flash, `80KB` RAM 💜
- **`board_ststm32_nucleo_l412kb`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32L412KBU6`, `80MHz`, `128KB` flash, `40KB` RAM 💜
- **`board_ststm32_nucleo_l432kc`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32L432KCU6`, `80MHz`, `256KB` flash, `64KB` RAM 🦋
- **`board_ststm32_nucleo_l433rc_p`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32L433RC`, `80MHz`, `256KB` flash, `64KB` RAM 🦋
- **`board_ststm32_nucleo_l452re`** — platform <pink>`platform_ststm32`</pink>, On-board `STM32L452RET6`, `80MHz`, `256KB` flash, `64KB` RAM 🧚

okay bestie we're still deep in the board buffet and it is <pink>NOT</pink> slowing down — here's the next batch, every single one, no skips, no cap 🫶

- **`board_ststm32_nucleo_l476rg`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32L476RGT6`, `80MHz`, `1MB` flash, `128KB` RAM 💖
- **`board_ststm32_nucleo_l486rg`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32L486RGT6`, `80MHz`, `1MB` flash, `128KB` RAM ✨
- **`board_ststm32_nucleo_l496zg`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32L496ZGT6`, `80MHz`, `1MB` flash, `128KB` RAM 🌸
- **`board_ststm32_nucleo_l496zg_p`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32L496ZGT6P`, `80MHz`, `1MB` flash, `320KB` RAM 👀 (okay the `_p` sibling said "more RAM, thank you")
- **`board_ststm32_nucleo_l4r5zi`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32L4R5ZIT6`, `120MHz`, `2MB` flash, `640KB` RAM 🔥 the way this one is just *bigger* in every way, we love an overachiever
- **`board_ststm32_disco_f030r8`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32F030R8T6`, `48MHz`, `64KB` flash, `8KB` RAM 🎀
- **`board_ststm32_disco_f051r8`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32F051R8T6`, `48MHz`, `64KB` flash, `8KB` RAM 🎀 twins fr fr
- **`board_ststm32_disco_f303vc`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32F303VCT6`, `72MHz`, `256KB` flash, `48KB` RAM 💅
- **`board_ststm32_disco_f407vg`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32F407VGT6`, `168MHz`, `1MB` flash, `128KB` RAM ⚡
- **`board_ststm32_eval_l073z`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32L073VZT6`, `32MHz`, `192KB` flash, `20KB` RAM 🌈
- **`board_ststm32_disco_l152rb`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32L152RBT6`, `32MHz`, `128KB` flash, `16KB` RAM 🦋
- **`board_ststm32_disco_f100rb`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32F100RBT6`, `24MHz`, `128KB` flash, `8KB` RAM 🍓
- **`board_ststm8_stm8sdisco`** — platform `platform_ststm8`, type <cyan>On-board</cyan>, MCU `STM8S105C6T6`, `16MHz`, `32KB` flash, `2KB` RAM — yes bestie the family switched to STM8 for this one, it's giving underdog icon 🧚
- **`board_ststm32_silica_sensor_node`** — platform `platform_ststm32`, type <cyan>On-board</cyan>, MCU `STM32L476JG`, `80MHz`, `1MB` flash, `128KB` RAM 💜
- **`board_ststm32_steval_fcu001v1`** — platform `platform_ststm32`, type <yellow>External</yellow>, MCU `STM32F401CCU6`, `84MHz`, `256KB` flash, `64KB` RAM ✨ and we've crossed into the External zone now, keep up
- **`board_ststm32_olimex_e407`** — platform `platform_ststm32`, type <yellow>External</yellow>, MCU `STM32F407ZGT6`, `168MHz`, `1MB` flash, `128KB` RAM 💖
- **`board_ststm32_olimex_h407`** — platform `platform_ststm32`, type <yellow>External</yellow>, MCU `STM32F407ZGT6`, `168MHz`, `1MB` flash, `128KB` RAM — same MCU and same numbers as the `_e407` right above it, the way they're lowkey identical 💀
- **`board_ststm32_eval_f107vc`** — platform `platform_ststm32`, type <yellow>External</yellow>, MCU `STM32F107VCT6`, `72MHz`, `256KB` flash, `64KB` RAM 🌸
- **`board_ststm32_eval_f373vc`** — platform `platform_ststm32`, type <yellow>External</yellow>, MCU `STM32F373VCT6`, `72MHz`, `256KB` flash, `32KB` RAM 🎀
- **`board_ststm32_eval_f072vb`** — platform `platform_ststm32`, type <yellow>External</yellow>, MCU `STM32F072VBT6`, `48MHz`, `128KB` flash, `16KB` RAM 🦋
- **`board_ststm32_genericSTM32F103C8`** — platform `platform_ststm32`, type <yellow>External</yellow>, MCU `STM32F103C8T6`, `72MHz`, `64KB` flash, `20KB` RAM ⭐ the classic, the blueprint, the one everybody knows — main character energy fr

---

<purple>quick vibe check bestie:</purple> the columns you're reading are **board ID**, then its **platform**, then **On-board** vs **External**, then the **MCU**, then **clock speed**, then **flash**, then **RAM**. Every single line above keeps all of those exactly as written 💅

and we are <rainbow>so not done</rainbow> — the boards keep coming, so stay with me 🫶

- **`board_ststm32_genericSTM32F103CB`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103CBT6`, `72MHz`, `128KB` flash, `20KB` RAM 💖
- **`board_ststm32_genericSTM32F103R8`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103R8T6`, `72MHz`, `64KB` flash, `20KB` RAM 💖
- **`board_ststm32_genericSTM32F103RB`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103RBT6`, `72MHz`, `128KB` flash, `20KB` RAM 💖
- **`board_ststm32_genericSTM32F103RC`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103RCT6`, `72MHz`, `256KB` flash, `48KB` RAM 💖
- **`board_ststm32_genericSTM32F103RE`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103RET6`, `72MHz`, `512KB` flash, `64KB` RAM 💖
- **`board_ststm32_genericSTM32F103T8`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103T8T6`, `72MHz`, `64KB` flash, `20KB` RAM 💖
- **`board_ststm32_genericSTM32F103TB`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103TBT6`, `72MHz`, `128KB` flash, `20KB` RAM 💖
- **`board_ststm32_genericSTM32F103VB`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103VBT6`, `72MHz`, `128KB` flash, `20KB` RAM 💖
- **`board_ststm32_genericSTM32F103VC`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103VCT6`, `72MHz`, `256KB` flash, `48KB` RAM 💖
- **`board_ststm32_genericSTM32F103VD`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103VDT6`, `72MHz`, `384KB` flash, `64KB` RAM 💖
- **`board_ststm32_genericSTM32F103VE`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103VET6`, `72MHz`, `512KB` flash, `64KB` RAM 💖
- **`board_ststm32_genericSTM32F103ZC`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103ZCT6`, `72MHz`, `256KB` flash, `48KB` RAM 💖
- **`board_ststm32_genericSTM32F103ZD`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103ZDT6`, `72MHz`, `384KB` flash, `64KB` RAM 💖
- **`board_ststm32_genericSTM32F103ZE`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F103ZET6`, `72MHz`, `512KB` flash, `64KB` RAM 💖
- **`board_ststm32_genericSTM32F303CB`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F303CBT6`, `72MHz`, `128KB` flash, `32KB` RAM 💖
- **`board_ststm32_genericSTM32F401RB`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F401RB`, `84MHz`, `128KB` flash, `64KB` RAM 💖
- **`board_ststm32_genericSTM32F401RC`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F401RC`, `84MHz`, `256KB` flash, `64KB` RAM 💖
- **`board_ststm32_genericSTM32F401RE`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F401RE`, `84MHz`, `512KB` flash, `96KB` RAM 💖
- **`board_ststm32_genericSTM32F407VET6`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F407VET6`, `168MHz`, `502.23KB` flash, `128KB` RAM 💖
- **`board_ststm32_genericSTM32F407VGT6`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F407VGT6`, `168MHz`, `1MB` flash, `192KB` RAM 💖
- **`board_ststm32_stm32f4stamp`** — platform <purple>`platform_ststm32`</purple>, External, MCU `STM32F405RGT6`, `168MHz`, `1MB` flash, `192KB` RAM 💖

---

okay bestie, that's the whole run of `genericSTM32F103` variants plus the `F303`, `F401`, `F407`, and that one `stm32f4stamp` board 🌸 notice how every single one of them is <cyan>External</cyan>? yeah, that column is doing a lot of heavy lifting and saying the exact same thing every time 🙈 and yes, the `STM32F407VET6` really does list `502.23KB` of flash, not a rounded `512KB` — that's literally what's printed, no cap 👑

more coming, don't go anywhere 🫶

---

- **`board_ststm32_disco_f750n8`** — <pink>platform_ststm32</pink> · On-board · chip is `STM32F750N8H6`, `216MHz`, `64KB` flash, `340KB` RAM 🦋

---

- **`board_ststm32_disco_h743xi`** — <pink>platform_ststm32</pink> · On-board · chip is `STM32H747XIH6`, `400MHz`, `2MB` flash, `512KB` RAM 🔥 (that `400MHz` is giving main character energy ngl)

---

- **`board_atmelsam_sainSmartDue`** — <purple>platform_atmelsam</purple> · External · chip is `AT91SAM3X8E`, `84MHz`, `512KB` flash, `96KB` RAM

---

- **`board_atmelsam_sainSmartDueUSB`** — <purple>platform_atmelsam</purple> · External · chip is `AT91SAM3X8E`, `84MHz`, `512KB` flash, `96KB` RAM (yes bestie it's the same stats as the one above, it's the USB twin, slay)

---

- **`board_nordicnrf51_seeedArchBLE`** — <cyan>platform_nordicnrf51</cyan> · On-board · chip is `NRF51822`, `16MHz`, `128KB` flash, `16KB` RAM

---

- **`board_nordicnrf51_seeedArchLink`** — <cyan>platform_nordicnrf51</cyan> · On-board · chip is `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM

---

- **`board_ststm32_seeedArchMax`** — <pink>platform_ststm32</pink> · On-board · chip is `STM32F407VET6`, `168MHz`, `512KB` flash, `192KB` RAM

---

- **`board_nordicnrf51_seeedTinyBLE`** — <cyan>platform_nordicnrf51</cyan> · On-board · chip is `NRF51822`, `16MHz`, `256KB` flash, `16KB` RAM 🎀

---

- **`board_ststm32_wio_3g`** — <pink>platform_ststm32</pink> · On-board · chip is `STM32F439VI`, `180MHz`, `2MB` flash, `256KB` RAM

---

- **`board_ststm32_steval_mksboxv1`** — <pink>platform_ststm32</pink> · External · chip is `STM32L4R9ZI`, `120MHz`, `2MB` flash, `640KB` RAM (look at that RAM, she ate 💅)

---

- **`board_nordicnrf51_Sinobit`** — <cyan>platform_nordicnrf51</cyan> · External · chip is `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM

---

- **`board_ststm32_sparky_v1`** — <pink>platform_ststm32</pink> · External · chip is `STM32F303CCT6`, `72MHz`, `256KB` flash, `40KB` RAM ✨

---

- **`board_nordicnrf52_stct_nrf52_minidev`** — <mint>platform_nordicnrf52</mint> · External · chip is `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM

---

- **`board_ststm32_thunder_pack`** — <pink>platform_ststm32</pink> · External · chip is `STM32L072KZ`, `32MHz`, `192KB` flash, `20KB` RAM (thunder pack?? iconic name fr fr)

---

- **`board_ststm32_hy_tinystm103tb`** — <pink>platform_ststm32</pink> · External · chip is `STM32F103TBU6`, `72MHz`, `128KB` flash, `20KB` RAM

---

- **`board_ststm32_vake_v1`** — <pink>platform_ststm32</pink> · External · chip is `STM32F446RET6`, `180MHz`, `512KB` flash, `128KB` RAM

---

- **`board_nordicnrf52_vbluno52`** — <mint>platform_nordicnrf52</mint> · On-board · chip is `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM 🫶

---

- **`board_nordicnrf51_waveshare_ble400`** — <cyan>platform_nordicnrf51</cyan> · External · chip is `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM

---

- **`board_ststm32_wraith32_v1`** — <pink>platform_ststm32</pink> · External · chip is `STM32F051K6`, `48MHz`, `32KB` flash, `7.75KB` RAM 😭 (`7.75KB` bestie. SEVEN POINT SEVEN FIVE. be so careful with your variables, there is *no* room)

---

- **`board_nordicnrf52_hackaBLE`** — <mint>platform_nordicnrf52</mint> · External · chip is `NRF52832`, `64MHz`, `512KB` flash, `64KB` RAM

---

- **`board_nordicnrf51_ng_beacon`** — <cyan>platform_nordicnrf51</cyan> · External · chip is `NRF51822`, `16MHz`, `256KB` flash, `32KB` RAM 🌸

---

> okay reminder bc I love you: those `On-board` / `External` labels are about where the debug tool lives, and the four numbers are always <yellow>frequency</yellow>, <yellow>flash</yellow>, <yellow>RAM</yellow> in that order. don't mix em up 💖

<purple>**`board_ststm32_sakuraio_evb_01`**</purple> — platform <cyan>`platform_ststm32`</cyan>, <mint>On-board</mint>, rocking an <yellow>`STM32F411RET6`</yellow> at <yellow>`100MHz`</yellow> with <yellow>`1MB`</yellow> and <yellow>`128KB`</yellow> 💖

---

<purple>**`board_ststm32_ublox_c030_n211`**</purple> — platform <cyan>`platform_ststm32`</cyan>, <peach>External</peach>, chip is <yellow>`STM32F437VG`</yellow> at <yellow>`180MHz`</yellow>, <yellow>`1MB`</yellow> + <yellow>`256KB`</yellow> ✨

---

<purple>**`board_ststm32_ublox_c030_r410m`**</purple> — platform <cyan>`platform_ststm32`</cyan>, <mint>On-board</mint>, <yellow>`STM32F437VG`</yellow> doing <yellow>`180MHz`</yellow>, <yellow>`1MB`</yellow> + <yellow>`256KB`</yellow> 🎀

---

<purple>**`board_ststm32_ublox_c030_u201`**</purple> — platform <cyan>`platform_ststm32`</cyan>, <peach>External</peach>, same <yellow>`STM32F437VG`</yellow> energy at <yellow>`180MHz`</yellow>, <yellow>`1MB`</yellow> + <yellow>`256KB`</yellow> 🦋

---

<purple>**`board_nordicnrf52_ublox_evk_nina_b1`**</purple> — platform <cyan>`platform_nordicnrf52`</cyan>, <mint>On-board</mint>, <yellow>`NRF52832`</yellow> at <yellow>`64MHz`</yellow>, <yellow>`512KB`</yellow> + <yellow>`64KB`</yellow> 🌸

---

<purple>**`board_ststm32_ublox_evk_odin_w2`**</purple> — platform <cyan>`platform_ststm32`</cyan>, <peach>External</peach>, <yellow>`STM32F439ZIY6`</yellow> at <yellow>`168MHz`</yellow>, <yellow>`2MB`</yellow> + <yellow>`256KB`</yellow> 👑

---

<purple>**`board_ststm32_mtb_ublox_odin_w2`**</purple> — platform <cyan>`platform_ststm32`</cyan>, <peach>External</peach>, <yellow>`STM32F439ZIY6`</yellow> at <yellow>`168MHz`</yellow>, <yellow>`2MB`</yellow> + <yellow>`256KB`</yellow> 🔥

---

<purple>**`board_nordicnrf51_nrf51822_y5_mbug`**</purple> — platform <cyan>`platform_nordicnrf51`</cyan>, <mint>On-board</mint>, tiny but mighty <yellow>`NRF51822`</yellow> at <yellow>`16MHz`</yellow>, <yellow>`256KB`</yellow> + <yellow>`16KB`</yellow> 🙈

---

ngl bestie, that <rainbow>wall of U-blox and ST boards</rainbow> is a whole mood 💅 the way the `ststm32` ones keep flexing <yellow>`180MHz`</yellow> and <yellow>`2MB`</yellow> like it's nothing… and then `nrf51822_y5_mbug` pulls up with <yellow>`16MHz`</yellow> and <yellow>`16KB`</yellow> — iconic in a completely different font fr fr 🫶

> heads up: if a board says <peach>External</peach> next to it, the chip isn't soldered onto the dev board itself — that's the vibe, no cap, and it's not a typo or a glitch 💀

## 💅 <rainbow>TI-ICDI</rainbow> 💅

okay bestie, listen — the <pink>Tiva™ C Series</pink> evaluation and reference design kits come with an integrated <hotpink>In-Circuit Debug Interface (ICDI)</hotpink> built right in, and it's literally the thing that lets you program and debug the onboard C Series microcontroller. Official reference can be found here. no cap. 🦋

### ✨ Contents ✨

- <purple>Configuration</purple>
- <purple>Drivers</purple>
- <purple>Platforms</purple>
- <purple>Frameworks</purple>
- <purple>Boards</purple>

---

### 🎀 Configuration 🎀

you can configure the debugging tool using the `projectconf_debug_tool` option in `projectconf`, like so:

[env:myenv] platform = ... board = ... debug_tool = ti-icdi


and if you would like to use this tool for firmware uploading too? bestie you gotta change the upload protocol, it's giving "one extra line":

[env:myenv] platform = ... board = ... debug_tool = ti-icdi upload_protocol = ti-icdi


More options:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

### 🌸 Drivers 🌸

#### 🪟 Windows

Please <yellow>"USB Driver Installation"</yellow> guide for your board. 🫶

#### 🍎 Mac

Not required. iconic. ✨

#### 🐧 Linux

Please install <mint>"udev"</mint> rules `faq_udev_rules`. And if you already installed them before, please check that your rules are <hotpink>up-to-date</hotpink> or repeat the steps — don't skip the vibe check on this one 💅

---

### 👑 Platforms 👑

- **`platform_titiva`** — <cyan>Texas Instruments TM4C12x</cyan> MCUs offer the industrys most popular <purple>ARM Cortex-M4</purple> core with scalable memory and package options, unparalleled connectivity peripherals, advanced application functions, industry-leading analog integration, and extensive software solutions. 🔥

---

### 🌈 Frameworks 🌈

- **`framework_arduino`** — the Arduino Wiring-based Framework bestie 💖 it lets you write cross-platform software to control devices attached to a wide range of Arduino boards, so you can create all kinds of creative coding, interactive objects, spaces or physical experiences. iconic behavior honestly.

- **`framework_libopencm3`** — the libOpenCM3 framework, and its whole goal is to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers 🧚 that includes ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. no cap, it covers a LOT.

---

## 🌈 Boards 🌈

> **NOTE:** For more detailed board information please scroll tables below by horizontal. <pink>(yes bestie, the table is wide, we're doing the sideways scroll thing, it's giving ✨)</pink>

- **`board_titiva_lplm4f120h5qr`** — Platform: `platform_titiva` · Debug: On-board · MCU: `LPLM4F120H5QR` · Frequency: 80MHz · Flash: 256KB · RAM: 32KB 🎀

- **`board_titiva_lptm4c1230c3pm`** — Platform: `platform_titiva` · Debug: On-board · MCU: `LPTM4C1230C3PM` · Frequency: 80MHz · Flash: 256KB · RAM: 32KB 🌸

- **`board_titiva_lptm4c1294ncpdt`** — Platform: `platform_titiva` · Debug: On-board · MCU: `LPTM4C1294NCPDT` · Frequency: 120MHz · Flash: 1MB · RAM: 256KB 👑

---

## 👑 TIAO USB Multi-Protocol Adapter (TUMPA) 👑

The TIAO USB Multi Protocol Adapter (TUMPA) is a multi-functional USB communication adapter for hobbyists or engineers. bestie it does *so much*. The adapter is based on FDTI's flagship communication chip `FT2232H`, a USB 2.0 Hi-Speed (480Mb/s) to UART/FIFO IC. 💅

It has two multi-protocol synchronous serial engines (MPSSEs) which allow for communication using `JTAG`, `I2C` and `SPI` on two channels simultaneously. two channels. at once. slay. ⭐

Official reference can be found here.

---

### 🦋 Contents 🦋

- Configuration
- Drivers
- Wiring Connections
  - JTAG Interface
  - Serial Wire Mode Interface (SWD)
- Platforms
- Frameworks
- Boards

## 🛠️ Configuration 🛠️

okay bestie, so you wanna set up your debugging tool? you do that with the `projectconf_debug_tool` option, and you drop it inside `projectconf`, like so:

[env:myenv] platform = ... board = ... debug_tool = tumpa


and <pink>if you want this same tool doing your firmware uploading too</pink>, you gotta switch up the upload protocol as well:

[env:myenv] platform = ... board = ... debug_tool = tumpa upload_protocol = tumpa


want more options? say less, we gotchu:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

## 🚗 Drivers 🚗

### 🪟 Windows

- Step-by-step guide: Drivers, Zadig, Wiring
- Video tutorial

### 🍎 Mac

<purple>lowkey important bestie</purple> — macOS ships with a default `FTDIUSBSerialDriver` driver, and it **conflicts** with debug tools that are based on this chip 😭. FTDI Chip company straight up recommends removing this default driver from your system. Everything should work after a system reboot, fr. For the detailed instruction, go look at the official application note (<cyan>Page 16, Section 4: Uninstalling FTDI Drivers on OS X</cyan>) — `AN134: FTDI Drivers Installation guide for MAC OS X`.

### 🐧 Linux

please install the `"udev"` rules — `faq_udev_rules` 💅. And if you already installed them before, please check that your rules are up-to-date, or just repeat the steps. no shame in redoing it.

---

## 🔌 Wiring Connections 🔌

`[image]`

---

## 🎀 JTAG Interface 🎀

mapping time, here's the whole pin tea ☕:

- **Pin `1` → `VCC`** — Positive Supply Voltage — Power supply for JTAG interface drivers
- **Pin `4` → `GND`** — Digital ground
- **Pin `5` → `TDI`** — Test Data In pin
- **Pin `7` → `TMS`** — Test Mode State pin
- **Pin `9` → `TCK`** — JTAG Return Test Clock
- **Pin `13` → `TDO`** — Test Data Out pin
- **Pin `15` → `RESET`** — Connect this pin to the (active low) reset input of the target CPU (EN for ESP32)

> 🫶 btw these are TUMPA JTAG 20-Pin Connector pins on one side, and Board JTAG Pin on the other, okay? don't get it twisted.

---

## 🦋 Serial Wire Mode Interface (SWD) 🦋

and now the SWD glow-up ✨:

- **Pin `1` → `VCC`** — Positive Supply Voltage — Power supply for JTAG interface drivers
- **Pin `4` → `GND`** — Digital ground
- **Pin `7` → `SWDIO`** — Data I/O
- **Pin `9` → `SWCLK`** — Clock
- **Pin `15` → `RESET`** — Connect this pin to the (active low) reset input of the target CPU

> 💀 notice pin `15` `RESET` is doing the exact same job in both modes? yeah. iconic consistency, we love to see it.

### ✨ Platforms ✨

okay so here's the platform lineup bestie, each one is a whole little ecosystem of chips 💖

- **`platform_espressif32`** — Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications. 🦋
- **`platform_kendryte210`** — Kendryte K210 is an AI capable RISCV64 dual core SoC.
- **`platform_sifive`** — SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. 🌸

---

### ✨ Frameworks ✨

and the frameworks?? literally the whole build-your-software situation, take notes 📝

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences. 🎀
- **`framework_espidf`** — Espressif IoT Development Framework. Official development framework for ESP32. 👑
- **`framework_freedom-e-sdk`** — Open Source Software for Developing on the SiFive Freedom E Platform
- **`framework_kendryte-standalone-sdk`** — Kendryte Standalone SDK without OS support
- **`framework_kendryte-freertos-sdk`** — Kendryte SDK with FreeRTOS support
- **`framework_simba`** — Simba is an RTOS and build framework. It aims to make embedded programming easy and portable. ✨
- **`framework_zephyr`** — The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. 💜

---

### ✨ Boards ✨

> **NOTE:** For more detailed board information please scroll tables below by horizontal.

(ngl the original is a big wide table and we're vibing in list form instead, but every single cell is still here, no cap 💅)

- **`board_espressif32_esp32cam`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
- **`board_espressif32_alksesp32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
- **`board_espressif32_az-delivery-devkit-v4`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 16MB · RAM: 520KB
- **`board_espressif32_featheresp32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 4MB · RAM: 320KB
- **`board_sifive_e310-arty`** — Platform: `platform_sifive` · Debug: On-board · MCU: FE310 · Frequency: 450MHz · Flash: 16MB · RAM: 256MB
- **`board_espressif32_briki_abc_esp32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 3.25MB · RAM: 320KB
- **`board_espressif32_briki_mbc-wb_esp32`** — Platform: `platform_espressif32` · Debug: External · MCU: ESP32 · Frequency: 240MHz · Flash: 3.25MB · RAM: 320KB

- <pink>**`board_espressif32_d-duino-32`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🦋
- <pink>**`board_espressif32_esp32doit-devkit-v1`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM ✨
- <pink>**`board_espressif32_pocket_32`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🎀
- <pink>**`board_espressif32_fm-devkit`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🌸
- <pink>**`board_espressif32_esp32vn-iot-uno`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 💖
- <pink>**`board_espressif32_espectro32`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 💅
- <pink>**`board_espressif32_espino32`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🫶
- <pink>**`board_espressif32_esp-wrover-kit`**</pink> — platform `platform_espressif32`, <mint>On-board</mint>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 👑 (yes bestie, this one is <mint>On-board</mint>, not External — noticed that, didn't you)
- <pink>**`board_espressif32_esp32dev`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM ⭐
- <pink>**`board_espressif32_firebeetle32`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🔥
- <pink>**`board_espressif32_frogboard`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🐸
- <pink>**`board_espressif32_heltec_wifi_lora_32`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🌈
- <pink>**`board_espressif32_heltec_wifi_lora_32_V2`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, <yellow>`8MB`</yellow> flash, `320KB` RAM 💜 (eight megabytes, she's upgraded)
- <pink>**`board_espressif32_heltec_wireless_stick`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, <yellow>`8MB`</yellow> flash, `320KB` RAM 🧚
- <pink>**`board_espressif32_hornbill32dev`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🍓
- <pink>**`board_espressif32_hornbill32minima`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 😭
- <pink>**`board_espressif32_iotaap_magnolia`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🌺
- <pink>**`board_espressif32_mhetesp32devkit`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM ✨
- <pink>**`board_espressif32_mhetesp32minikit`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 💫
- <pink>**`board_espressif32_node32s`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🎀
- <pink>**`board_espressif32_nodemcu-32s`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 💖
- <pink>**`board_espressif32_esp32-devkitlipo`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 🦋
- <pink>**`board_espressif32_esp32-evb`**</pink> — platform `platform_espressif32`, <cyan>External</cyan>, MCU `ESP32` at `240MHz`, `4MB` flash, `320KB` RAM 💅

> <purple>quick vibe check on how to read these rows, bestie:</purple> the columns go **board ID** → **platform** → **`External` or `On-board`** → **MCU** → **frequency** → **flash** → **RAM**. Every single one in this chunk is `platform_espressif32` with an `ESP32` at `240MHz` and `320KB` RAM, and they're all `4MB` flash <pink>except</pink> `board_espressif32_heltec_wifi_lora_32_V2` and `board_espressif32_heltec_wireless_stick`, which are sitting pretty at `8MB`. And `board_espressif32_esp-wrover-kit` is the only <mint>`On-board`</mint> one in this batch. The rest? <cyan>`External`</cyan>, all of them, no cap. 💀

---

- **`board_espressif32_esp32-gateway`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🦋
- **`board_espressif32_lopy`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` ✨
- **`board_espressif32_lopy4`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `1.25MB` (yes bestie, that RAM glow-up is real 💅)
- **`board_espressif32_sg-o_airMon`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_wesp32`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_kendryte210_sipeed-maix-bit`** — platform: `platform_kendryte210`, type: External, MCU: `K210`, `400MHz`, flash `16MB`, RAM `6MB` 🔥
- **`board_kendryte210_sipeed-maix-bit-mic`** — platform: `platform_kendryte210`, type: External, MCU: `K210`, `400MHz`, flash `16MB`, RAM `6MB`
- **`board_kendryte210_sipeed-maix-go`** — platform: `platform_kendryte210`, type: External, MCU: `K210`, `400MHz`, flash `16MB`, RAM `6MB`
- **`board_kendryte210_sipeed-maix-one-dock`** — platform: `platform_kendryte210`, type: External, MCU: `K210`, `400MHz`, flash `16MB`, RAM `6MB`
- **`board_kendryte210_sipeed-maixduino`** — platform: `platform_kendryte210`, type: External, MCU: `K210`, `400MHz`, flash `16MB`, RAM `6MB`
- **`board_kendryte210_sipeed-MF1`** — platform: `platform_kendryte210`, type: External, MCU: `K210`, `400MHz`, flash `16MB`, RAM `6MB`
- **`board_espressif32_esp32thing`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_sparkfun_lora_gateway_1-channel`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 📡
- **`board_espressif32_ttgo-lora32-v1`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_ttgo-lora32-v2`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_ttgo-t-beam`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `1.25MB` 👑
- **`board_espressif32_ttgo-t1`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_vintlabs-devkit-v1`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_lolin_d32`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_lolin_d32_pro`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_lolin32`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_wemos_d1_mini32`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_wemosbat`** — platform: `platform_espressif32`, type: External, MCU: `ESP32`, `240MHz`, flash `4MB`, RAM `320KB` 🍓

---

<pink>okay so real talk bestie</pink> 💖 every single one of those is **External** type, so if you clocked that pattern — yup, you ate, that's the whole column. And notice how the `platform_espressif32` girlies are all out here living that `240MHz` / `4MB` flash life, while the `platform_kendryte210` K210 crew said "we're doing `400MHz`, `16MB` flash and `6MB` RAM, no cap" 🫶

<purple>the ones to keep your eyes on if you're a RAM-greedy lil gremlin</purple> — that's `board_espressif32_lopy4` and `board_espressif32_ttgo-t-beam`, both sitting pretty at `1.25MB` of RAM instead of the usual `320KB`. The way that's *literally* four times the RAM… iconic 💅

> bestie reminder: those values are exactly what the table says, so don't come for me if your board is feeling spicy today 🌸

`board_espressif32_sparkfun_lora_gateway_1-channel` — yes the name is a whole sentence, yes it's giving "my parents gave me a very specific name" energy, and yes it still runs `ESP32` at `240MHz` with `4MB` flash and `320KB` RAM 😭

And `board_kendryte210_sipeed-MF1`?? Capital letters in the name, we love a board that knows how to make an entrance ✨

---

- `board_espressif32_xinabox_cw02` — platform `platform_espressif32`, Debug **External**, MCU **ESP32**, `240MHz`, Flash `4MB`, RAM `320KB`
- `board_espressif32_iotbusio` — platform `platform_espressif32`, Debug **External**, MCU **ESP32**, `240MHz`, Flash `4MB`, RAM `320KB`
- `board_espressif32_iotbusproteus` — platform `platform_espressif32`, Debug **External**, MCU **ESP32**, `240MHz`, Flash `4MB`, RAM `320KB`

---

# 💜 UM232H 💜

The <hotpink>UM232H</hotpink> is a USB-to-serial/FIFO development module in the FTDI product range which utilizes the `FT232H` USB Hi-Speed (`480Mb/s`) single-port bridge chip to handle the USB signaling and protocols. Official reference can be found <cyan>here</cyan>

## ✨ Contents ✨

- Configuration
- Drivers
- Wiring Connections
- Platforms
- Frameworks
- Boards

---

## ⚙️ Configuration ⚙️

You can configure debugging tool using `projectconf_debug_tool` option in `projectconf`:

[env:myenv] platform = ... board = ... debug_tool = um232h


If you would like to use this tool for firmware uploading, please change upload protocol:

[env:myenv] platform = ... board = ... debug_tool = um232h upload_protocol = um232h


More options:

- `projectconf_section_env_debug`
- `projectconf_section_env_upload`

---

## 🚗 Drivers 🚗

**Windows**

- Step-by-step guide: <cyan>Drivers</cyan>, <cyan>Zadig</cyan>, <cyan>Wiring</cyan>
- Video tutorial

**Mac** — macOS contains default `FTDIUSBSerialDriver` driver which conflicts with debug tools which are based on this chip. FTDI Chip company recommends removing this default driver from a system. Everything should work after system rebooting. See detailed instruction in official application note (Page 16, Section 4: Uninstalling FTDI Drivers on OS X) `AN134`: FTDI Drivers Installation guide for MAC OS X

**Linux** — Please install "udev" rules `faq_udev_rules`. If you already installed them before, please check that your rules are up-to-date or repeat steps.

---

## 🔌 Wiring Connections 🔌

Please read <purple>4. UM232H Pin Out and Signal Descriptions</purple> section for details.

- **UM232H Pin `GND`** → Board JTAG Pin `GND` — Digital ground
- **UM232H Pin `AD0`** → Board JTAG Pin `TCK` — JTAG Return Test Clock
- **UM232H Pin `AD1`** → Board JTAG Pin `TDI` — Test Data In
- **UM232H Pin `AD2`** → Board JTAG Pin `TDO` — Test Data Out
- **UM232H Pin `AD3`** → Board JTAG Pin `TMS` — Test Mode State

You will also need to connect VIO to V3V and USB to 5V0 of UM232H to power the FTDI chip and board. See <cyan>UM232H Datasheet</cyan>

---

## 🧩 Platforms 🧩

- **`platform_gd32v`** — The GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the RISC-V core with an impressive balance of processing power, reduced power consumption and peripheral set.

---

## 🛠️ Frameworks 🛠️

- **`framework_arduino`** — Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
- **`framework_gd32vf103-sdk`** — GigaDevice GD32VF103 Firmware Library (SDK)

---

## 👑 Boards 👑

> **NOTE:** 💖 For more detailed board information please scroll tables below by horizontal.

- **`board_gd32v_gd32vf103v-eval`** — Platform `platform_gd32v`, Debug **External**, MCU `GD32VF103VBT6`, `108MHz`, Flash `128KB`, RAM `32KB`
- **`board_gd32v_sipeed-longan-nano`** — Platform `platform_gd32v`, Debug **External**, MCU `GD32VF103CBT6`, `108MHz`, Flash `128KB`, RAM `32KB`
- **`board_gd32v_sipeed-longan-nano-lite`** — Platform `platform_gd32v`, Debug **External**, MCU `GD32VF103C8T6`, `108MHz`, Flash `64KB`, RAM `20KB`
- **`board_gd32v_wio_lite_risc-v`** — Platform `platform_gd32v`, Debug **External**, MCU `GD32VF103CBT6`, `108MHz`, Flash `128KB`, RAM `32KB`

---

## 🎀 Custom 🎀

### Configuration

`projectconf_debug_tool = custom`

PIO Unified Debugger can be configured from `projectconf`:

---

## 🌈 Examples 🌈

- J-Link and ST Nucleo
- J-Link as debugger and uploader
- ST-Util and ST-Link
- OpenOCD and ST-Link
- pyOCD and CMSIS-DAP

---

## 💅 J-Link and ST Nucleo 💅

Segger J-Link probe and ST Nucleo F446RE board in pair with J-Link GDB Server:

- Install J-Link GDB Server
- Convert ST-LINK On-Board Into a J-Link

> **NOTE:** bestie you can <pink>lowkey reuse every config below with other boards</pink>, not just the ST Nucleo F446RE 💖. If you do, just swap out `STM32F446RE` for your own device name inside the `debug_server` option, k? No cap.

Also go peep the full list over at <cyan>J-Link Supported Devices</cyan> ✨.

[env:debug_jlink] platform = ststm32 framework = mbed board = nucleo_f446re

debug_tool = custom debug_port = :2331

debug_server = /full/path/to/JLinkGDBServerCL -singlerun -if SWD -select USB -port 2331 -device STM32F446RE

debug_init_cmds = define pio_reset_halt_target monitor reset monitor halt end define pio_reset_run_target monitor clrbp monitor reset monitor go end target extended-remote $DEBUG_PORT monitor clrbp monitor speed auto pio_reset_halt_target $LOAD_CMDS $INIT_BREAK


---

### 🦋 J-Link as debugger and uploader 🦋

Segger J-Link probe doing double duty as your <purple>debugger *and* uploader</purple> for a custom board. If you're planning to use it with some other board, please swap `MK20DX256xxx7` for a valid identifier, mkay? 👑 The supported J-Link devices live over at `debugging_tool_jlink`.

- Install J-Link GDB Server 💅

[env:jlink_debug_and_upload] platform = teensy framework = arduino board = teensy31 extra_scripts = extra_script.py upload_protocol = custom debug_tool = jlink debug_server = /full/path/to/JLinkGDBServerCL -singlerun -if SWD -select USB -port 2331 -device MK20DX256xxx7


**`extra_script.py`**

Drop this file on the same level as `projectconf`, bestie 🫶.

from os import makedirs from os.path import isdir, join Import('env')

def _jlink_cmd_script(env, source): build_dir = env.subst("$BUILD_DIR") if not isdir(build_dir): makedirs(build_dir) script_path = join(build_dir, "upload.jlink") commands = ["h", "loadbin %s,0x0" % source, "r", "q"] with open(script_path, "w") as fp: fp.write("\n".join(commands)) return script_path

env.Replace( __jlink_cmd_script=_jlink_cmd_script, UPLOADER="/full/path/to/JLink", UPLOADERFLAGS=[ "-device", "MK20DX256xxx7", "-speed", "4000", "-if", "swd", "-autoconnect", "1" ], UPLOADCMD='"$UPLOADER" $UPLOADERFLAGS -CommanderScript ${__jlink_cmd_script(__env__, SOURCE)}' )


---

### 🌸 ST-Util and ST-Link 🌸

On-board ST-Link V2/V2-1 vibing in a pair with the ST-Util GDB Server ✨:

[env:debug] platform = ststm32 framework = mbed board = ... debug_tool = custom debug_port = :4242 debug_server = $PLATFORMIO_CORE_DIR/packages/tool-stlink/bin/st-util


---

### 🎀 OpenOCD and ST-Link 🎀

On-board ST-Link V2/V2-1 in a pair with the OpenOCD GDB Server, it's giving iconic duo energy fr fr 🔥:

[env:debug] platform = ststm32 framework = mbed board = ... debug_tool = custom debug_server = $PLATFORMIO_CORE_DIR/packages/tool-openocd/bin/openocd -f $PLATFORMIO_CORE_DIR/packages/tool-openocd/scripts/board/st_nucleo_f4.cfg


---

### 🧚 pyOCD and CMSIS-DAP 🧚

Using pyOCD for CMSIS-DAP based boards 👑

First things first: please install pyOCD and double-check that the `pyocd-gdbserver --version` command actually works, bestie 💜.

[env:debug] platform = ... board = ... framework = mbed debug_tool = custom debug_server = pyocd-gdbserver


- **`platform_aceinna_imu`** — <pink>open-source embedded dev platform</p> for Aceinna IMU hardware 💖 so you can run your own custom algorithms and navigation code straight on Aceinna IMU/INS hardware. it's giving "put your brain on the chip."

- **`platform_atmelavr`** — Atmel AVR 8-bit MCUs, and the way they serve a *unique* combo of performance, power efficiency and design flexibility?? iconic. they're optimized to speed up your time to market — and to easily adapt to new ones — because they're built on the industry's most code-efficient architecture for C and assembly programming ✨

- **`platform_atmelsam`** — Atmel | SMART brings Flash-based ARM products based on the ARM Cortex-M0+, Cortex-M3 and Cortex-M4 architectures, ranging from 8KB all the way to 2MB of Flash, with a rich peripheral and feature mix included 🎀

- **`platform_espressif32`** — Espressif Systems is a privately held fabless semiconductor company. they provide wireless communications and Wi-Fi chips that are *widely* used in mobile devices and Internet of Things applications 📶 no cap.

- **`platform_freescalekinetis`** — Freescale Kinetis Microcontrollers, a family of multiple hardware- and software-compatible ARM Cortex-M0+, Cortex-M4 and Cortex-M7-based MCU series. Kinetis MCUs bring exceptional low-power performance, scalability and feature integration 🦋

- **`platform_gd32v`** — the GigaDevice GD32V device is a 32-bit general-purpose microcontroller based on the RISC-V core, with an impressive balance of processing power, reduced power consumption and peripheral set ⚖️ slay.

- **`platform_infineonxmc`** — Infineon designed the XMC microcontrollers for real-time critical applications with an industry-standard core. the XMC microcontrollers can be integrated with the Arduino platform 💅

- **`platform_kendryte210`** — Kendryte K210 is an AI capable RISCV64 dual core SoC 🧠✨

- **`platform_maxim32`** — Maxim's microcontrollers provide low-power, efficient, and secure solutions for challenging embedded applications. Maxim's processors embed cutting-edge technologies to secure data and intellectual property, proven analog circuitry for real-world applications, and battery-conserving low power operation 🔋

- **`platform_nordicnrf51`** — the Nordic nRF51 Series is a family of highly flexible, multi-protocol, system-on-chip (SoC) devices for ultra-low power wireless applications. nRF51 Series devices support a range of protocol stacks including Bluetooth Smart (previously called Bluetooth low energy), ANT and proprietary 2.4GHz protocols such as Gazell 📡

- **`platform_nordicnrf52`** — the nRF52 Series are built for speed: carry out increasingly complex tasks in the shortest possible time, then return to sleep and conserve precious battery power 😴🔋 they have a Cortex-M4F processor and are the most capable Bluetooth Smart SoCs on the market. main character SoC energy, fr fr.

- **`platform_nuclei`** — find professional RISC-V Processor IP in Nuclei, the first professional RISC-V IP company in Mainland China, matching all your requirements in the AIoT Era 👑

- **`platform_nxpimxrt`** — the i.MX RT series of crossover processors features the Arm Cortex-M core, real-time functionality and MCU usability at a

...cost-effective price. 💸

---

- **`platform_nxplpc`** — okay so the NXP LPC is a whole <pink>family</pink> of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are all built around the same 32-bit ARM processor core, like the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. And internally? Every single microcontroller is made of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. that's the whole recipe bestie 💅

- **`platform_riscv_gap`** — the GreenWaves GAP8 IoT application processor <rainbow>enables</rainbow> the cost-effective development, deployment and autonomous operation of intelligent sensing devices that capture, analyze, classify and act on the fusion of rich data sources such as images, sounds or vibrations. it's giving ✨senses✨

- **`platform_shakti`** — Shakti is an open-source initiative by the RISE group at IIT-Madras, and they're not *only* building open source, production grade processors — they're also doing associated components like interconnect fabrics, verification tools, storage controllers, peripheral IPs and SOC tools. full stack, no crumbs 🫶

- **`platform_sifive`** — SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before. periodt. 🔥

- **`platform_siliconlabsefm32`** — the Silicon Labs EFM32 Gecko 32-bit microcontroller (MCU) family includes devices that offer flash memory configurations up to <yellow>256 kB</yellow>, <yellow>32 kB</yellow> of RAM and CPU speeds up to <yellow>48 MHz</yellow>. Based on the powerful ARM Cortex-M core, the Gecko family features innovative low energy techniques, short wake-up time from energy saving modes and a wide selection of peripherals — which makes it ideal for battery operated applications and other systems requiring high performance and low-energy consumption. lowkey the whole package 🦋

- **`platform_ststm32`** — the STM32 family of 32-bit Flash MCUs based on the ARM Cortex-M processor is designed to offer new degrees of freedom to MCU users. It offers a 32-bit product range that combines very high performance, real-time capabilities, digital signal processing, and low-power, low-voltage operation, while maintaining full integration and ease of development. like?? versatile much 👑

- **`platform_ststm8`** — the STM8 is an 8-bit microcontroller family by STMicroelectronics, an extended variant of the ST7 microcontroller architecture. STM8 microcontrollers are particularly low cost for a full-featured 8-bit microcontroller. budget queen behavior 💸

- **`platform_teensy`** — Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard USB cable and a PC or Macintosh with a USB port. so unbothered, so convenient 🌸

- **`platform_timsp430`** — MSP430 microcontrollers (MCUs) from Texas Instruments (TI) are 16-bit, RISC-based, mixed-signal processors designed for ultra-low power. These MCUs offer the lowest power consumption and the perfect mix of integrated peripherals for thousands of applications. sipping power, slaying tasks ⭐

- **`platform_titiva`** — Texas Instruments TM4C12x MCUs offer the industrys most popular ARM Cortex-M4 core with scalable memory and package options, unparalleled connectivity peripherals, advanced application functions, industry-leading analog integration, and extensive

- **`platform_wiznet7500`** — okay so bestie, meet the <pink>IOP</pink> (<lavender>Internet Offload Processor</lavender>) <cyan>W7500</cyan>. It's the <hotpink>one-chip solution</hotpink> that literally bundles everything together: an <mint>ARM Cortex-M0</mint>, <yellow>128KB Flash</yellow>, and a <purple>hardwired TCP/IP core</purple> 💅. It's built for all kinds of embedded application platforms, but <rainbow>especially</rainbow> the ones that need <blue>Internet of things</blue> energy — and yes, it ate that fr fr. 🦋✨

- <pink>**`framework_arduino`**</pink> — bestie, this is the Arduino Wiring-based Framework 💖 it lets you write <cyan>cross-platform</cyan> software to control devices hooked up to a *huge* range of Arduino boards, so you can make all kinds of creative coding, interactive objects, spaces, or physical experiences. it's giving maker energy fr fr 🎀

- <pink>**`framework_cmsis`**</pink> — okay so the ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a <lavender>vendor-independent</lavender> hardware abstraction layer for the Cortex-M processor series, and it specifies debugger interfaces ✨ the CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. it simplifies software re-use, reduces the learning curve for new microcontroller developers, and cuts the time-to-market for devices. lowkey iconic 👑

- <pink>**`framework_espidf`**</pink> — Espressif IoT Development Framework. the <hotpink>official</hotpink> development framework for ESP32 🦋

- <pink>**`framework_freedom-e-sdk`**</pink> — Open Source Software for Developing on the SiFive Freedom E Platform 🌸

- <pink>**`framework_gd32vf103-sdk`**</pink> — GigaDevice GD32VF103 Firmware Library (SDK) ⭐

- <pink>**`framework_kendryte-standalone-sdk`**</pink> — Kendryte Standalone SDK, <purple>without OS support</purple> 🧚

- <pink>**`framework_kendryte-freertos-sdk`**</pink> — Kendryte SDK <mint>with FreeRTOS support</mint> 💅

- <pink>**`framework_libopencm3`**</pink> — the libOpenCM3 framework aims to create a free/libre/open-source firmware library for various ARM Cortex-M0(+)/M3/M4 microcontrollers, including ST STM32, Ti Tiva and Stellaris, NXP LPC 11xx, 13xx, 15xx, 17xx parts, Atmel SAM3, Energy Micro EFM32 and others. no cap, that's a whole roster 🔥

- <pink>**`framework_mbed`**</pink> — The mbed framework. The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. it's built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. in addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community. the way that's a whole ecosystem 😭💜

- <pink>**`framework_nuclei-sdk`**</pink> — Open Source Software Development Kit for the Nuclei N/NX processors 🌈

- <pink>**`framework_pulp-os`**</pink> — PULP is a silicon-proven Parallel Ultra Low Power platform targeting high energy efficiencies. the platform is organized in clusters of RISC-V cores that share a tightly-coupled data memory ⚡

- <pink>**`framework_shakti-sdk`**</pink> — a software development kit for developing applications on Shakti class of processors 🌸

- <pink>**`framework_simba`**</pink> — Simba is an RTOS and build framework. it aims to make embedded programming <cyan>easy</cyan> and <cyan>portable</cyan> 🫶

- <pink>**`framework_spl`**</pink> — The ST Standard Peripheral Library provides a set of functions for handling the peripherals on the STM32 Cortex-M3 family. the idea is to save the user (the new user, in particular) from having to deal directly with the registers. bless 🙈

- <pink>**`framework_stm32cube`**</pink> — STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency 👑

- <pink>**`framework_zephyr`**</pink> — The Zephyr Project is a scalable real-time operating system (RTOS)

...and honestly? It's *literally* supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind. Like, that's the whole personality. 💅

---

## 🧸 Boards

> **NOTE:** bestie, for more detailed board information please scroll tables below by horizontal. Yeah I know, the tables are wide. It's giving ✨horizontal scroll✨, just trust the process. 🫶

---

### 🌸 1BitSquared

- **`board_ststm32_1bitsy_stm32f415rgt`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F415RGT` · frequency: 168MHz · flash: 1MB · RAM: 128KB

---

### 🌈 96Boards

- **`board_ststm32_b96b_argonkey`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F412CG` · frequency: 100MHz · flash: 1MB · RAM: 256KB
- **`board_ststm32_b96b_f446ve`** — platform: `platform_ststm32` · debug: On-board · MCU: `STM32F446VET6` · frequency: 168MHz · flash: 512KB · RAM: 128KB
- **`board_ststm32_b96b_neonkey`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F411CE` · frequency: 100MHz · flash: 512KB · RAM: 128KB
- **`board_nordicnrf52_96b_nitrogen`** — platform: `platform_nordicnrf52` · debug: External · MCU: `NRF52832` · frequency: 64MHz · flash: 512KB · RAM: 64KB

---

### 📸 AI Thinker

- **`board_espressif32_esp32cam`** — platform: `platform_espressif32` · debug: External · MCU: `ESP32` · frequency: 240MHz · flash: 4MB · RAM: 320KB

---

### 🛍️ AZ-Delivery

- **`board_espressif32_az-delivery-devkit-v4`** — platform: `platform_espressif32` · debug: External · MCU: `ESP32` · frequency: 240MHz · flash: 16MB · RAM: 520KB

---

### 🛰️ Aceinna

- **`board_aceinna_imu_LowCostRTK`** — platform: `platform_aceinna_imu` · debug: On-board · MCU: `STM32F469NIH6` · frequency: 180MHz · flash: 1MB · RAM: 384KB
- **`board_aceinna_imu_OpenIMU300`** — platform: `platform_aceinna_imu` · debug: External · MCU: `STM32F405RG` · frequency: 120MHz · flash: 1MB · RAM: 128KB
- **`board_aceinna_imu_OpenIMU300ZA`** — platform: `platform_aceinna_imu` · debug: External · MCU: `STM32F405RG` · frequency: 120MHz · flash: 1MB · RAM: 128KB
- **`board_aceinna_imu_OpenIMU330`** — platform: `platform_aceinna_imu` · debug: External · MCU: `STM32L431CB` · frequency: 80MHz · flash: 128KB · RAM: 64KB
- **`board_aceinna_imu_OpenRTK`** — platform: `platform_aceinna_imu` · debug: External · MCU: `STM32F469IG` · frequency: 180MHz · flash: 1MB · RAM: 384KB
- **`board_aceinna_imu_OpenRTK330L`** — platform: `platform_aceinna_imu` · debug: External · MCU: `STM32F469IG` · frequency: 180MHz · flash: 1MB · RAM: 384KB

---

### 🧵 Adafruit

- **`board_atmelavr_bluefruitmicro`** — platform <cyan>`platform_atmelavr`</cyan> · debug <peach>On-board</peach> · MCU `ATMEGA32U4` · freq `8MHz` · flash `28KB` · RAM `2.50KB` 🦋
- **`board_nordicnrf52_adafruit_feather_nrf52832`** — platform <cyan>`platform_nordicnrf52`</cyan> · debug <peach>External</peach> · MCU `NRF52832` · freq `64MHz` · flash `512KB` · RAM `64KB` ✨
- **`board_atmelavr_circuitplay_classic`** — platform <cyan>`platform_atmelavr`</cyan> · debug <peach>On-board</peach> · MCU `ATMEGA32U4` · freq `8MHz` · flash `28KB` · RAM `2.50KB` 🎀
- **`board_atmelsam_adafruit_circuitplayground_m0`** — platform <cyan>`platform_atmelsam`</cyan> · debug <peach>External</peach> · MCU `SAMD21G18A` · freq `48MHz` · flash `256KB` · RAM `32KB` 💖
- **`board_atmelsam_adafruit_crickit_m0`** — platform <cyan>`platform_atmelsam`</cyan> · debug <peach>External</peach> · MCU `SAMD21G18A` · freq `48MHz` · flash `256KB` · RAM `32KB` 🦋
- **`board_espressif32_featheresp32`** — platform <cyan>`platform_espressif32`</cyan> · debug <peach>External</peach> · MCU `ESP32` · freq `240MHz` · flash `4MB` · RAM `320KB` 🔥
- **`board_atmelavr_feather328p`** — platform <cyan>`platform_atmelavr`</cyan> · debug <peach>On-board</peach> · MCU `ATMEGA328P` · freq `8MHz` · flash `31.50KB` · RAM `2KB` 🌸
- **`board_atmelavr_feather32u4`** — platform <cyan>`platform_atmelavr`</cyan> · debug <peach>On-board</peach> · MCU `ATMEGA32U4` · freq `8MHz` · flash `28KB` · RAM `2.50KB` ⭐
- **`board_nordicnrf52_adafruit_feather_nrf52840_sense`** — platform <cyan>`platform_nordicnrf52`</cyan> · debug <peach>External</peach> · MCU `NRF52840` · freq `64MHz` · flash `796KB` · RAM `243KB` ✨
- **`board_atmelsam_adafruit_feather_m0`** — platform <cyan>`platform_atmelsam`</cyan> · debug <peach>External</peach> · MCU `SAMD21G18A` · freq `48MHz` · flash `256KB` · RAM `32KB` 🫶
- **`board_atmelsam_adafruit_feather_m0_express`** — platform <cyan>`platform_atmelsam`</cyan> · debug <peach>External</peach> · MCU `SAMD21G18A` · freq `48MHz` · flash `256KB` · RAM `32KB` 💜
- **`board_atmelsam_adafruit_feather_m4`** — platform <cyan>`platform_atmelsam`</cyan> · debug <peach>External</peach> · MCU `SAMD51J19A` · freq `120MHz` · flash `512KB` · RAM `192KB` 🌈
- **`board_ststm32_adafruit_feather_f405`** — platform <cyan>`platform_ststm32`</cyan> · debug <peach>External</peach> · MCU `STM32F405RGT6` · freq `168MHz` · flash `1MB` · RAM `128KB` 🔥
- **`board_nordicnrf52_adafruit_feather_nrf52840`** — platform <cyan>`platform_nordicnrf52`</cyan> · debug <peach>External</peach> · MCU `NRF52840` · freq `64MHz` · flash `796KB` · RAM `243KB` 🦋
- **`board_atmelavr_flora8`** — platform <cyan>`platform_atmelavr`</cyan> · debug <peach>On-board</peach> · MCU `ATMEGA32U4` · freq `8MHz` · flash `28KB` · RAM `2.50KB` 🌸
- **`board_atmelavr_gemma`** — platform <cyan>`platform_atmelavr`</cyan> · debug <peach>On-board</peach> · MCU `ATTINY85` · freq `8MHz` · flash `8KB` · RAM `512B` 🧚
- **`board_atmelsam_adafruit_gemma_m0`** — platform <cyan>`platform_atmelsam`</cyan> · debug <peach>External</peach> · MCU `SAMD21E18A` · freq `48MHz` · flash `256KB` · RAM `32KB` 💖
- **`board_atmelsam_adafruit_grandcentral_m4`** — platform <cyan>`platform_atmelsam`</cyan> · debug <peach>External</peach> · MCU `SAMD51P20A` · freq `120MHz` · flash `1MB` · RAM `256KB` 👑
- **`board_atmelsam_adafruit_hallowing`** — platform <cyan>`platform_atmelsam`</cyan> · debug <peach>External</peach> · MCU `SAMD21G18A` · freq `48MHz` · flash `256KB` · RAM `32KB` 🎃
- **`board_atmelsam_adafruit_hallowing_m4`** — platform <cyan>`platform_atmelsam`</cyan> · debug <peach>External</peach> · MCU `SAMD51J19A` · freq `120MHz` · flash `496KB` · RAM `192KB` 🎃

- **`board_atmelavr_itsybitsy32u4_3V`** — <cyan>`platform_atmelavr`</cyan> · upload <purple>On-board</purple> · MCU <mint>`ATMEGA32U4`</mint> · <yellow>`8MHz`</yellow> · flash <hotpink>`28KB`</hotpink> · RAM <lavender>`2.50KB`</lavender> 🦋

- **`board_atmelavr_itsybitsy32u4_5V`** — <cyan>`platform_atmelavr`</cyan> · upload <purple>On-board</purple> · MCU <mint>`ATMEGA32U4`</mint> · <yellow>`16MHz`</yellow> · flash <hotpink>`28KB`</hotpink> · RAM <lavender>`2.50KB`</lavender> ✨

- **`board_atmelsam_adafruit_itsybitsy_m0`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD21G18A`</mint> · <yellow>`48MHz`</yellow> · flash <hotpink>`256KB`</hotpink> · RAM <lavender>`32KB`</lavender> 💖

- **`board_atmelsam_adafruit_itsybitsy_m4`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD51G19A`</mint> · <yellow>`120MHz`</yellow> · flash <hotpink>`512KB`</hotpink> · RAM <lavender>`192KB`</lavender> 🔥

- **`board_atmelsam_adafruit_monster_m4sk`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD51G19A`</mint> · <yellow>`120MHz`</yellow> · flash <hotpink>`496KB`</hotpink> · RAM <lavender>`192KB`</lavender> 👑

- **`board_atmelavr_metro`** — <cyan>`platform_atmelavr`</cyan> · upload <purple>On-board</purple> · MCU <mint>`ATMEGA328P`</mint> · <yellow>`16MHz`</yellow> · flash <hotpink>`31.50KB`</hotpink> · RAM <lavender>`2KB`</lavender> 🎀

- **`board_atmelsam_adafruit_metro_m0`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD21G18A`</mint> · <yellow>`48MHz`</yellow> · flash <hotpink>`256KB`</hotpink> · RAM <lavender>`32KB`</lavender> 🌸

- **`board_atmelsam_adafruit_metro_m4`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD51J19A`</mint> · <yellow>`120MHz`</yellow> · flash <hotpink>`512KB`</hotpink> · RAM <lavender>`192KB`</lavender> 💅

- **`board_atmelsam_adafruit_metro_m4_airliftlite`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD51J19A`</mint> · <yellow>`120MHz`</yellow> · flash <hotpink>`512KB`</hotpink> · RAM <lavender>`192KB`</lavender> 🫶

- **`board_atmelavr_protrinket3ftdi`** — <cyan>`platform_atmelavr`</cyan> · upload <purple>On-board</purple> · MCU <mint>`ATMEGA328P`</mint> · <yellow>`12MHz`</yellow> · flash <hotpink>`28KB`</hotpink> · RAM <lavender>`2KB`</lavender> 🍓

- **`board_atmelavr_protrinket3`** — <cyan>`platform_atmelavr`</cyan> · upload <purple>On-board</purple> · MCU <mint>`ATMEGA328P`</mint> · <yellow>`12MHz`</yellow> · flash <hotpink>`28KB`</hotpink> · RAM <lavender>`2KB`</lavender> ⭐

- **`board_atmelavr_protrinket5ftdi`** — <cyan>`platform_atmelavr`</cyan> · upload <purple>On-board</purple> · MCU <mint>`ATMEGA328P`</mint> · <yellow>`16MHz`</yellow> · flash <hotpink>`28KB`</hotpink> · RAM <lavender>`2KB`</lavender> 🌈

- **`board_atmelavr_protrinket5`** — <cyan>`platform_atmelavr`</cyan> · upload <purple>On-board</purple> · MCU <mint>`ATMEGA328P`</mint> · <yellow>`16MHz`</yellow> · flash <hotpink>`28KB`</hotpink> · RAM <lavender>`2KB`</lavender> 💜

- **`board_atmelsam_adafruit_pygamer_advance_m4`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD51J20A`</mint> · <yellow>`120MHz`</yellow> · flash <hotpink>`1MB`</hotpink> · RAM <lavender>`256KB`</lavender> 😭

- **`board_atmelsam_adafruit_pygamer_m4`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD51J19A`</mint> · <yellow>`120MHz`</yellow> · flash <hotpink>`512KB`</hotpink> · RAM <lavender>`192KB`</lavender> 🧚

- **`board_atmelsam_adafruit_pyportal_m4`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD51J20A`</mint> · <yellow>`120MHz`</yellow> · flash <hotpink>`1MB`</hotpink> · RAM <lavender>`256KB`</lavender> 💖

- **`board_atmelsam_adafruit_pyportal_m4_titano`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD51J20A`</mint> · <yellow>`120MHz`</yellow> · flash <hotpink>`1MB`</hotpink> · RAM <lavender>`256KB`</lavender> ✨

- **`board_atmelsam_adafruit_trellis_m4`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD51J19A`</mint> · <yellow>`120MHz`</yellow> · flash <hotpink>`512KB`</hotpink> · RAM <lavender>`192KB`</lavender> 🎀

- **`board_atmelavr_trinket3`** — <cyan>`platform_atmelavr`</cyan> · upload <purple>On-board</purple> · MCU <mint>`ATTINY85`</mint> · <yellow>`8MHz`</yellow> · flash <hotpink>`8KB`</hotpink> · RAM <lavender>`512B`</lavender> 🦋

- **`board_atmelavr_trinket5`** — <cyan>`platform_atmelavr`</cyan> · upload <purple>On-board</purple> · MCU <mint>`ATTINY85`</mint> · <yellow>`16MHz`</yellow> · flash <hotpink>`8KB`</hotpink> · RAM <lavender>`512B`</lavender> 🌸

- **`board_atmelsam_adafruit_trinket_m0`** — <cyan>`platform_atmelsam`</cyan> · upload <purple>External</purple> · MCU <mint>`SAMD21E18A`</mint> · <yellow>`48MHz`</yellow> · flash <hotpink>`256KB`</hotpink> · RAM <lavender>`32KB`</lavender> 💅

- **`board_atmelsam_adafruit_pirkey`** — platform `platform_atmelsam` · debug: External · MCU `SAMD21E18A` · `48MHz` · flash `256KB` · RAM `32KB` 💖
- **`board_atmelsam_adafruit_pybadge_airlift_m4`** — platform `platform_atmelsam` · debug: External · MCU `SAMD51J20A` · `120MHz` · flash `1008KB` · RAM `192KB` ✨
- **`board_atmelsam_adafruit_pybadge_m4`** — platform `platform_atmelsam` · debug: External · MCU `SAMD51J19A` · `120MHz` · flash `512KB` · RAM `192KB` ✨
- **`board_nordicnrf52_adafruit_cplaynrf52840`** — platform `platform_nordicnrf52` · debug: External · MCU `NRF52840` · `64MHz` · flash `796KB` · RAM `243KB` 🦋
- **`board_nordicnrf52_adafruit_itsybitsy_nrf52840`** — platform `platform_nordicnrf52` · debug: On-board · MCU `NRF52840` · `64MHz` · flash `796KB` · RAM `243KB` 🦋
- **`board_nordicnrf52_adafruit_metro_nrf52840`** — platform `platform_nordicnrf52` · debug: External · MCU `NRF52840` · `64MHz` · flash `796KB` · RAM `243KB` 🦋

---

### <pink>AfroFlight</pink> 💅

- **`board_ststm32_afroflight_f103cb`** — platform `platform_ststm32` · debug: External · MCU `STM32F103CBT6` · `72MHz` · flash `128KB` · RAM `20KB` 🔥

---

### <purple>Airbot</purple> 🎀

- **`board_ststm32_wraith32_v1`** — platform `platform_ststm32` · debug: External · MCU `STM32F051K6` · `48MHz` · flash `32KB` · RAM `7.75KB` 💜

---

### <cyan>Aiyarafun</cyan> 🌈

- **`board_espressif32_node32s`** — platform `platform_espressif32` · debug: External · MCU `ESP32` · `240MHz` · flash `4MB` · RAM `320KB` ⭐

---

### <mint>Alorium Technology</mint> 🧚

- **`board_atmelavr_alorium_hinj`** — platform `platform_atmelavr` · debug: On-board · MCU `ATMEGA328P` · `16MHz` · flash `31.50KB` · RAM `2KB` 💚
- **`board_atmelavr_alorium_sno`** — platform `platform_atmelavr` · debug: On-board · MCU `ATMEGA328P` · `16MHz` · flash `31.50KB` · RAM `2KB` 💚
- **`board_atmelavr_alorium_xlr8`** — platform `platform_atmelavr` · debug: On-board · MCU `ATMEGA328P` · `16MHz` · flash `31.50KB` · RAM `2KB` 💚

---

### <peach>Anarduino</peach> 🍓

- **`board_atmelavr_miniwireless`** — platform `platform_atmelavr` · debug: On-board · MCU `ATMEGA328P` · `16MHz` · flash `31.50KB` · RAM `2KB` 🫶

---

### <hotpink>Arduboy</hotpink> 👑

okay so bestie the columns for this next little block go exactly like this, no cap:

- Name
- Platform
- Debug
- MCU
- Frequency
- Flash
- RAM

and that's literally where this part runs out 😭 the actual rows are coming up next, so hold that thought, don't close the tab, we're so not done 💅✨

<purple>okay bestie 💜 we are still deep in the board table and it is STILL giving</purple> — here's the tail end of the section that was already rolling:

├────────┼──────────────────────┼────────────┼──────┼──────────┼──────────┼─┼───────────┼───────┼────────┤ │ board_atmelavr_arduboy │ platform_atmelavr │ On-board │ ATMEGA32U4 │ 16MHz │ 28KB │ 2.50KB │ ├────────┼──────────────────────┼────────────┼──────┼──────────┼──────────┼─┼───────────┼───────┼────────┤ │ board_atmelavr_arduboy_devkit │ platform_atmelavr │ On-board │ ATMEGA32U4 │ 16MHz │ 28KB │ 2.50KB │ └────────┼──────────────────────┴────────────┼──────┴──────────┴──────────┼─┴───────────┴───────┴────────┘


the two `arduboy` entries are literal twins ✨ — same `platform_atmelavr`, same `On-board`, same `ATMEGA32U4` humming along at `16MHz`, same `28KB` flash and `2.50KB` RAM. the only thing separating them is that `_devkit` suffix, and honestly? iconic, no notes.

---

and then the tree goes <hotpink>Arduino</hotpink> 🎀 and a whole new table unfurls, so let's get into it:

│ │ │ Arduino │ │ ┌────────┼──────────────────────────┬────────┼─────────────┬──────────┬───┼─────────┬───────────┬─────────┬────────┐ │ Name │ │ Platform │ Debug │ MCU │ Frequency │ Flash │ RAM │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_btatmega168 │ platform_atmelavr │ On-board │ ATMEGA168 │ 16MHz │ 14KB │ 1KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_btatmega328 │ platform_atmelavr │ On-board │ ATMEGA328P │ 16MHz │ 28KB │ 2KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelsam_due │ platform_atmelsam │ External │ AT91SAM3X8E │ 84MHz │ 512KB │ 96KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelsam_dueUSB │ platform_atmelsam │ External │ AT91SAM3X8E │ 84MHz │ 512KB │ 96KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_diecimilaatmega168 │ platform_atmelavr │ On-board │ ATMEGA168 │ 16MHz │ 14KB │ 1KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_diecimilaatmega328 │ platform_atmelavr │ On-board │ ATMEGA328P │ 16MHz │ 30KB │ 2KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_esplora │ platform_atmelavr │ On-board │ ATMEGA32U4 │ 16MHz │ 28KB │ 2.50KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_ethernet │ platform_atmelavr │ On-board │ ATMEGA328P │ 16MHz │ 31.50KB │ 2KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_fio │ platform_atmelavr │ On-board │ ATMEGA328P │ 8MHz │ 30KB │ 2KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_chiwawa │ platform_atmelavr │ On-board │ ATMEGA32U4 │ 16MHz │ 28KB │ 2.50KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_leonardo │ platform_atmelavr │ On-board │ ATMEGA32U4 │ 16MHz │ 28KB │ 2.50KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_leonardoeth │ platform_atmelavr │ On-board │ ATMEGA32U4 │ 16MHz │ 28KB │ 2.50KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_lilypadatmega168 │ platform_atmelavr │ On-board │ ATMEGA168 │ 8MHz │ 14KB │ 1KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_lilypadatmega328 │ platform_atmelavr │ On-board │ ATMEGA328P │ 8MHz │ 30KB │ 2KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelavr_LilyPadUSB │ platform_atmelavr │ On-board │ ATMEGA32U4 │ 8MHz │ 28KB │ 2.50KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelsam_mzeroUSB │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelsam_mzeroproUSB │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelsam_mzeropro │ platform_atmelsam │ On-board │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelsam_mkrfox1200 │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelsam_mkrgsm1400 │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │ ├────────┼──────────────────────────┼────────┼─────────────┼──────────┼───┼─────────┼───────────┼─────────┼────────┤ │ board_atmelsam_mkrnb1500 │ platform_atmelsam │ External │ SAMD21G18A │ 48MHz │ 256KB │ 32KB │


okay so the columns are `Name`, `Platform`, `Debug`, `MCU`, `Frequency`, `Flash` and `RAM`, and yes there's that lil blank cell sitting in the header row doing absolutely nothing — we respect it, it's the moment 💅

some stuff that's lowkey worth clocking, bestie:

- everything tagged `platform_atmelavr` in here is `On-board` for `Debug`, while the `platform_atmelsam` crew is `External` — *except* `board_atmelsam_mzeropro`, which is `On-board`. queen behaviour, breaking the pattern 🫶
- the `ATMEGA168` girlies (`board_atmelavr_btatmega168`, `board_atmelavr_diecimilaatmega168`, `board_atmelavr_lilypadatmega168`) are all `14KB` flash and `1KB` RAM, the smallest vibes in the AVR clique.
- `board_atmelavr_ethernet` is out here with `31.50KB` flash — the chunkiest AVR flash in this whole table 🔥
- `board_atmelavr_fio`, `board_atmelavr_lilypadatmega168`, `board_atmelavr_lilypadatmega328` and `board_atmelavr_LilyPadUSB` are the `8MHz` girlies; every other AVR entry is `16MHz`.
- the `AT91SAM3X8E` duo — `board_atmelsam_due` and `board_atmelsam_dueUSB` — are absolute units: `84MHz`, `512KB` flash, `96KB` RAM. main character energy fr fr 👑
- all the `SAMD21G18A` boards are a tidy `48MHz` / `256KB` flash / `32KB` RAM, matching set, obsessed.
- and the naming conventions are fully unbothered: `board_atmelavr_LilyPadUSB` with the capital `L`/`P`/`U`, but `board_atmelsam_mzeroUSB`, `board_atmelsam_mzeroproUSB` lowercase `m` with the shouty `USB`. we stan the chaos 🌈

…and the lineup just keeps going, bestie, no breaks, we're in the deep end of the board list now 💅 Every row here is `board_<something>`, the platform it rides with, whether the package is On-board or External, the chip, the clock, the flash and the RAM. Let's go:

- **`board_atmelsam_mkrwan1300`** — platform <cyan>`platform_atmelsam`</cyan>, <lavender>External</lavender>, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` ✨
- **`board_atmelsam_mkrwan1310`** — platform <cyan>`platform_atmelsam`</cyan>, <lavender>External</lavender>, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 💖
- **`board_atmelsam_mkrwifi1010`** — platform <cyan>`platform_atmelsam`</cyan>, <lavender>External</lavender>, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🦋
- **`board_atmelsam_mkr1000USB`** — platform <cyan>`platform_atmelsam`</cyan>, <lavender>External</lavender>, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🌸
- **`board_atmelsam_mkrzero`** — platform <cyan>`platform_atmelsam`</cyan>, <lavender>External</lavender>, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🎀
- **`board_atmelavr_megaADK`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA2560`, `16MHz`, flash `248KB`, RAM `8KB` 🔥
- **`board_atmelavr_megaatmega1280`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA1280`, `16MHz`, flash `124KB`, RAM `8KB` 💜
- **`board_atmelavr_megaatmega2560`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA2560`, `16MHz`, flash `248KB`, RAM `8KB` ⭐
- **`board_atmelavr_micro`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB` 🫶
- **`board_atmelavr_miniatmega168`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA168`, `16MHz`, flash `14KB`, RAM `1KB` 🌈
- **`board_atmelavr_miniatmega328`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA328P`, `16MHz`, flash `28KB`, RAM `2KB` ✨
- **`board_atmelavr_atmegangatmega168`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA168`, `16MHz`, flash `14KB`, RAM `1KB` 🦋
- **`board_atmelavr_atmegangatmega8`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA8`, `16MHz`, flash `7KB`, RAM `1KB` 🌸
- **`board_nordicnrf52_nano33ble`** — platform <cyan>`platform_nordicnrf52`</cyan>, <lavender>External</lavender>, MCU `NRF52840`, `64MHz`, flash `960KB`, RAM `256KB` 👑 (yes bestie, `960KB`, she's *rich*)
- **`board_atmelavr_nanoatmega168`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA168`, `16MHz`, flash `14KB`, RAM `1KB` 🎀
- **`board_atmelavr_nanoatmega328`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA328P`, `16MHz`, flash `30KB`, RAM `2KB` 💖
- **`board_atmelavr_nanoatmega328new`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA328P`, `16MHz`, flash `30KB`, RAM `2KB` 🔥
- **`board_atmelavr_pro8MHzatmega168`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA168`, `8MHz`, flash `14KB`, RAM `1KB` 🦋 (note the `8MHz`, not `16MHz` — she's the chill one)
- **`board_atmelavr_pro16MHzatmega168`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA168`, `16MHz`, flash `14KB`, RAM `1KB` ✨
- **`board_atmelavr_pro8MHzatmega328`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA328P`, `8MHz`, flash `30KB`, RAM `2KB` 🌸
- **`board_atmelavr_pro16MHzatmega328`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA328P`, `16MHz`, flash `30KB`, RAM `2KB` 💜
- **`board_atmelavr_robotControl`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB` 🫶
- **`board_atmelavr_robotMotor`** — platform <cyan>`platform_atmelavr`</cyan>, <mint>On-board</mint>, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB` ⭐
- **`board_atmelsam_tian`** — platform <cyan>`platform_atmelsam`</cyan>, <lavender>External</lavender>, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🎀

<rainbow>okay but the way the whole atmelavr fam is out here living their best `16MHz` life while the SAMD girlies coast at `48MHz` and the nordic one just flexes `64MHz`… it's giving silicon hierarchy 💀</rainbow>

---

- **`board_atmelavr_uno`** — platform `platform_atmelavr`, debug: On-board, MCU `ATMEGA328P`, `16MHz`, flash `31.50KB`, RAM `2KB` 💖

- **`board_atmelavr_yun`** — platform `platform_atmelavr`, debug: On-board, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`

- **`board_atmelavr_yunmini`** — platform `platform_atmelavr`, debug: On-board, MCU `ATMEGA32U4`, `16MHz`, flash `28KB`, RAM `2.50KB`

- **`board_atmelsam_zero`** — platform `platform_atmelsam`, debug: On-board, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` ✨

- **`board_atmelsam_zeroUSB`** — platform `platform_atmelsam`, debug: External, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`

- **`board_atmelsam_mkrvidor4000`** — platform `platform_atmelsam`, debug: External, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`

- **`board_atmelsam_nano_33_iot`** — platform `platform_atmelsam`, debug: External, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`

---

### 👑 Armed

- **`board_ststm32_armed_v1`** — platform `platform_ststm32`, debug: External, MCU `STM32F407VET6`, `168MHz`, flash `512KB`, RAM `192KB` 🔥

---

### 🦋 Armstrap

- **`board_ststm32_armstrap_eagle1024`** — platform `platform_ststm32`, debug: On-board, MCU `STM32F417VGT6`, `168MHz`, flash `1MB`, RAM `192KB`

- **`board_ststm32_armstrap_eagle2048`** — platform `platform_ststm32`, debug: On-board, MCU `STM32F427VIT6`, `168MHz`, flash `1.99MB`, RAM `256KB`

- **`board_ststm32_armstrap_eagle512`** — platform `platform_ststm32`, debug: On-board, MCU `STM32F407VET6`, `168MHz`, flash `512KB`, RAM `192KB`

---

### 🌸 Atmel

- **`board_atmelsam_samr21_xpro`** — platform `platform_atmelsam`, debug: On-board, MCU `SAMR21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 💅

- **`board_atmelsam_samd21g18a`** — platform `platform_atmelsam`, debug: On-board, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB`

- **`board_atmelsam_samc21_xpro`** — platform `platform_atmelsam`, debug: On-board, MCU `SAMC21J18A`, `48MHz`, flash `256KB`, RAM `32KB`

- **`board_atmelsam_samd21_xpro`** — platform `platform_atmelsam`, debug: On-board, MCU `SAMD21J18A`, `48MHz`, flash `256KB`, RAM `32KB`

- **`board_atmelsam_saml21_xpro_b`** — platform `platform_atmelsam`, debug: On-board, MCU `SAML21J18B`, `48MHz`, flash `256KB`, RAM `32KB`

- **`board_atmelavr_attiny13`** — platform `platform_atmelavr`, debug: On-board, MCU `ATTINY13`, `1MHz`, flash `1KB`, RAM `64B` 🫶

- **`board_atmelavr_attiny13a`** — platform `platform_atmelavr`, debug: On-board, MCU `ATTINY13A`, `1MHz`, flash `1KB`, RAM `64B`

- **`board_atmelavr_attiny2313`** — platform `platform_atmelavr`, debug: On-board, MCU `ATTINY2313`, `8MHz`, flash `2KB`, RAM `128B`

- **`board_atmelavr_attiny24`** — platform `platform_atmelavr`, debug: On-board, MCU `ATTINY24`, `8MHz`, flash `2KB`, RAM `128B` 🌈

…and the ATtiny part of the table is right here, bestie 💅 tiny chips, <rainbow>enormous</rainbow> main-character energy. Every single one of these lil cuties is running <cyan>`8MHz`</cyan> and every one of them says <mint>`On-board`</mint> for Debug:

├────────┼─────────────────────┼─────────────┼─────┼──────────┼───────────┼┼───────────┼───────┼──────┤ │ board_atmelavr_attiny25 │ platform_atmelavr │ On-board │ ATTINY25 ││ 8MHz │ 2KB │ 128B │ ├────────┼─────────────────────┼─────────────┼─────┼──────────┼───────────┼┼───────────┼───────┼──────┤ │ board_atmelavr_attiny4313 │ platform_atmelavr │ On-board │ ATTINY4313││ 8MHz │ 4KB │ 256B │ ├────────┼─────────────────────┼─────────────┼─────┼──────────┼───────────┼┼───────────┼───────┼──────┤ │ board_atmelavr_attiny44 │ platform_atmelavr │ On-board │ ATTINY44 ││ 8MHz │ 4KB │ 256B │ ├────────┼─────────────────────┼─────────────┼─────┼──────────┼───────────┼┼───────────┼───────┼──────┤ │ board_atmelavr_attiny45 │ platform_atmelavr │ On-board │ ATTINY45 ││ 8MHz │ 4KB │ 256B │ ├────────┼─────────────────────┼─────────────┼─────┼──────────┼───────────┼┼───────────┼───────┼──────┤ │ board_atmelavr_attiny84 │ platform_atmelavr │ On-board │ ATTINY84 ││ 8MHz │ 8KB │ 512B │ ├────────┼─────────────────────┼─────────────┼─────┼──────────┼───────────┼┼───────────┼───────┼──────┤ │ board_atmelavr_attiny85 │ platform_atmelavr │ On-board │ ATTINY85 ││ 8MHz │ 8KB │ 512B │ ├────────┼─────────────────────┼─────────────┼─────┼──────────┼───────────┼┼───────────┼───────┼──────┤ │ board_atmelavr_usbasp │ platform_atmelavr │ On-board │ ATMEGA8 ││ 12MHz │ 8KB │ 1KB │ └────────┼─────────────────────┴─────────────┼─────┴──────────┴───────────┼┴───────────┴───────┴──────┘ │ │ │ Avnet Silica │ │ ┌────────┼─────────────────────────┬─────────┼────────┬──────────┬────────┼────┬───────────┬───────┬───────┐ │ Name │ │ Platform│ │ Debug │ MCU │ │ Frequency │ Flash │ RAM │ ├────────┼─────────────────────────┼─────────┼────────┼──────────┼────────┼────┼───────────┼───────┼───────┤ │ board_ststm32_silica_sensor_node │ platform_ststm32 │ On-board │ STM32L476JG │ 80MHz │ 1MB │ 128KB │ └────────┼─────────────────────────┴─────────┼────────┴──────────┴────────┼────┴───────────┴───────┴───────┘ │ │ │ BBC │ │ │


okay <pink>not</pink> `board_atmelavr_attiny25` having literally <yellow>`128B`</yellow> of RAM — it's giving minimalist queen, and honestly? respect 🙈 the `board_atmelavr_usbasp` is the rebel of the group, clocking <cyan>`12MHz`</cyan> on an `ATMEGA8` while everyone else does `8MHz`. ate 💅

and then <purple>Avnet Silica</purple> walks in with exactly one (1) board: `board_ststm32_silica_sensor_node`, `platform_ststm32`, `On-board` debug, `STM32L476JG`, <cyan>`80MHz`</cyan>, <yellow>`1MB`</yellow> flash, <yellow>`128KB`</yellow> RAM. one board, zero filler, iconic. 👑

---

and the <cyan>BBC</cyan> entry is *the* moment, fr fr — if you've ever touched a classroom computer in the UK you know:

┌────────┼──────────────────────┬────────────┼─────────┬──────────┬───────┼──┬───────────┬───────┬──────┐ │ Name │ │ Platform │ │ Debug │ MCU │ │ Frequency │ Flash │ RAM │ ├────────┼──────────────────────┼────────────┼─────────┼──────────┼───────┼──┼───────────┼───────┼──────┤ │ board_nordicnrf51_bbcmicrobit │ platform_nordicnrf51 │ On-board │ NRF51822 │ 16MHz │ 256KB │ 16KB │ └────────┼──────────────────────┴────────────┼─────────┴──────────┴───────┼──┴───────────┴───────┴──────┘ │ │ │ BQ │ │ │


`board_nordicnrf51_bbcmicrobit` on `platform_nordicnrf51`, `On-board` debug, `NRF51822`, <cyan>`16MHz`</cyan>, <yellow>`256KB`</yellow> flash, <yellow>`16KB`</yellow> RAM. adorable, powerful, slays. 🦋

---

<hotpink>BQ</hotpink> time! and yes the board name is <purple>zumbt328</purple>, no I will not be explaining, I just report the facts bestie:

┌────────┼────────────────┬──────────────────┼┬──────────┬────────────┬───┼───────┬───────┬─────┐ │ Name │ │ Platform ││ Debug │ MCU │ Frequency │ Flash │ RAM │ ├────────┼────────────────┼──────────────────┼┼──────────┼────────────┼───┼───────┼───────┼─────┤ │ board_atmelavr_zumbt328 │ platform_atmelavr││ On-board │ ATMEGA328P │ 16MHz │ 28KB │ 2KB │ └────────┼────────────────┴──────────────────┼┴──────────┴────────────┴───┼───────┴───────┴─────┘ │ │ │ BSFrance │ │


`platform_atmelavr` (no space before the bar, she's cramped, she's fine), `On-board` debug, `ATMEGA328P`, <cyan>`16MHz`</cyan>, <yellow>`28KB`</yellow> flash, <yellow>`2KB`</yellow> RAM. a classic. a comfort board. 🎀

---

<green>BSFrance</green> rolling in with the LoRa vibes:

┌────────┼──────────────────┬────────────────┼──┬──────────┬────────────┬─┼─────────┬───────┬────────┐ │ Name │ │ Platform │ │ Debug │ MCU │ Frequency │ Flash │ RAM │ ├────────┼──────────────────┼────────────────┼──┼──────────┼────────────┼─┼─────────┼───────┼────────┤ │ board_atmelavr_lora32u4II │ platform_atmelavr │ On-board │ ATMEGA32U4 │ 8MHz │ 28KB │ 2.50KB │ └────────┼──────────────────┴────────────────┼──┴──────────┴────────────┴─┼─────────┴───────┴────────┘ │ │ │ BitWizard │ │


`board_atmelavr_lora32u4II`, `platform_atmelavr`, `On-board` debug, `ATMEGA32U4`, <cyan>`8MHz`</cyan>, <yellow>`28KB`</yellow> flash, and RAM listed as <yellow>`2.50KB`</yellow> — yes with the decimals, she's precise, she's that girl 💅

---

<lavender>BitWizard</lavender> said "what if Raspberry Pi but make it Arduino" and honestly? obsessed:

┌────────┼─────────────────┬─────────────────┼─┬──────────┬────────────┬──┼────────┬───────┬─────┐ │ Name │ │ Platform │ │ Debug │ MCU │ Frequency │ Flash │ RAM │ ├────────┼─────────────────┼─────────────────┼─┼──────────┼────────────┼──┼────────┼───────┼─────┤ │ board_atmelavr_raspduino │ platform_atmelavr │ On-board │ ATMEGA328P │ 16MHz │ 30KB │ 2KB │ └────────┼─────────────────┴─────────────────┼─┴──────────┴────────────┴──┼────────┴───────┴─────┘ │ │ │ BluzDK│ │ │


`board_atmelavr_raspduino`, `platform_atmelavr`, `On-board` debug, `ATMEGA328P`, <cyan>`16MHz`</cyan>, <yellow>`30KB`</yellow> flash (biggest of the `ATMEGA328P` girlies so far, werk), <yellow>`2KB`</yellow> RAM. 🔥

---

and <blue>BluzDK</blue> is the plot twist of this whole stretch, because her debug column says <red>`External`</red> — not `On-board`, bestie, you're gonna need external hardware, no cap:

┌────────┼──────────────────┬────────────────┼─────┬──────────┬──────────┬┼──────────┬───────┬──────┐ │ Name │ │ Platform │ │ Debug │ MCU ││Frequency │ Flash │ RAM │ ├────────┼──────────────────┼────────────────┼─────┼──────────┼──────────┼┼──────────┼───────┼──────┤ │ board_nordicnrf51_bluz_dk │ platform_nordicnrf51 │ External │ NRF51822 ││32MHz │ 256KB │ 32KB │ └────────┼──────────────────┴────────────────┼─────┴──────────┴──────────┴┼──────────┴───────┴──────┘ │ │ │ CQ Publishing │ │


`board_nordicnrf51_bluz_dk`, `platform_nordicnrf51`, <red>`External`</red> debug, `NRF51822`, <cyan>`32MHz`</cyan> (she's speedy, she's <rainbow>that</rainbow> girl), <yellow>`256KB`</yellow> flash, <yellow>`32KB`</yellow> RAM. 🧚

---

aaand <peach>CQ Publishing</peach> is starting her own table, same columns as always — <bold>Name</bold>, <bold>Platform</bold>, <bold>Debug</bold>, <bold>MCU</bold>, <bold>Frequency</bold>, <bold>Flash</bold>, <bold>RAM</bold> — and we're right at the header, mid-table, hold on:

┌────────┼──────────────────┬────────────────┼┬──────────┬──────────┬─────┼─────┬───────┬──────┐ │ Name │ │ Platform ││ Debug │ MCU │ Frequency │ Flash │ RAM │


- **`board_nxplpc_lpc11u35_501`** — Platform `platform_nxplpc` · Debug `External` · MCU `LPC11U35` · Frequency `48MHz` · Flash `64KB` · RAM `10KB`

okay that was the last straggler from the block above, and now we're sliding into a fresh vibe 💅

---

### 🌸 Calliope

Columns are the usual suspects: Name, Platform, Debug, MCU, Frequency, Flash, RAM.

- **`board_nordicnrf51_calliope_mini`** — Platform `platform_nordicnrf51` · Debug `On-board` · MCU `NRF51822` · Frequency `16MHz` · Flash `256KB` · RAM `16KB`

---

### 🎀 Controllino

- **`board_atmelavr_controllino_maxi`** — Platform `platform_atmelavr` · Debug `On-board` · MCU `ATMEGA2560` · Frequency `16MHz` · Flash `248KB` · RAM `8KB`
- **`board_atmelavr_controllino_maxi_automation`** — Platform `platform_atmelavr` · Debug `On-board` · MCU `ATMEGA2560` · Frequency `16MHz` · Flash `248KB` · RAM `8KB`
- **`board_atmelavr_controllino_mega`** — Platform `platform_atmelavr` · Debug `On-board` · MCU `ATMEGA2560` · Frequency `16MHz` · Flash `248KB` · RAM `8KB`
- **`board_atmelavr_controllino_mini`** — Platform `platform_atmelavr` · Debug `On-board` · MCU `ATMEGA328P` · Frequency `16MHz` · Flash `31.50KB` · RAM `2KB`

bestie the `maxi`, the `maxi_automation` and the `mega` are literally the same three numbers in a trench coat 😭 iconic behavior, we respect it

---

### 🦋 DFRobot

- **`board_espressif32_firebeetle32`** — Platform `platform_espressif32` · Debug `External` · MCU `ESP32` · Frequency `240MHz` · Flash `4MB` · RAM `320KB`

---

### ✨ DOIT

- **`board_espressif32_esp32doit-devkit-v1`** — Platform `platform_espressif32` · Debug `External` · MCU `ESP32` · Frequency `240MHz` · Flash `4MB` · RAM `320KB`

---

### 💜 DSTIKE

- **`board_espressif32_d-duino-32`** — Platform `platform_espressif32` · Debug `External` · MCU `ESP32` · Frequency `240MHz` · Flash `4MB` · RAM `320KB`

---

### 🌈 Delta

- **`board_nordicnrf52_delta_dfbm_nq620`** — Platform `platform_nordicnrf52` · Debug `On-board` · MCU `NRF52832` · Frequency `64MHz` · Flash `512KB` · RAM `64KB`
- **`board_nordicnrf51_dfcm_nnn40`** — Platform `platform_nordicnrf51` · Debug `On-board` · MCU `NRF51822` · Frequency `32MHz` · Flash `256KB` · RAM `32KB`
- **`board_nordicnrf51_delta_dfcm_nnn50`** — Platform `platform_nordicnrf51` · Debug `On-board` · MCU `NRF51822` · Frequency `32MHz` · Flash `256KB` · RAM `16KB`

> heads up: `board_nordicnrf51_dfcm_nnn40` and `board_nordicnrf51_delta_dfcm_nnn50` are twin sisters fr fr — same platform, same debug, same MCU, same frequency, same flash. the ONLY thing that splits them is RAM: `32KB` vs `16KB`. don't mix them up 💀

---

### ⭐ Digistump

and the next table rolls up with the standard header — Name, Platform, Debug, MCU, Frequency, Flash, RAM — and then... that's where this part cuts off 🫶 hold that thought, the rows are coming.

- **`board_atmelavr_digispark-tiny`** — Platform: `platform_atmelavr`, Debug: On-board, MCU: `ATTINY85`, Frequency: `16MHz`, Flash: `5.87KB`, RAM: `512B` 💅 (yes bestie, that flash number really does have a decimal point in it, she's precise like that)
- **`board_atmelsam_digix`** — Platform: `platform_atmelsam`, Debug: External, MCU: `AT91SAM3X8E`, Frequency: `84MHz`, Flash: `512KB`, RAM: `96KB` ✨

---

### 🍓 Diymore

- **`board_ststm32_diymore_f407vgt`** — Platform: `platform_ststm32`, Debug: External, MCU: `STM32F407VGT6`, Frequency: `168MHz`, Flash: `512KB`, RAM: `128KB` 🔥

---

### 🎀 Dongsen Technology

- **`board_espressif32_pocket_32`** — Platform: `platform_espressif32`, Debug: External, MCU: `ESP32`, Frequency: `240MHz`, Flash: `4MB`, RAM: `320KB` 🦋

---

### 🌸 DycodeX

- **`board_espressif32_espectro32`** — Platform: `platform_espressif32`, Debug: External, MCU: `ESP32`, Frequency: `240MHz`, Flash: `4MB`, RAM: `320KB` 👑

---

### ⭐ ESP32vn

- **`board_espressif32_esp32vn-iot-uno`** — Platform: `platform_espressif32`, Debug: External, MCU: `ESP32`, Frequency: `240MHz`, Flash: `4MB`, RAM: `320KB` 💜

---

### 🧚 Electronut Labs

- **`board_nordicnrf52_bluey`** — Platform: `platform_nordicnrf52`, Debug: External, MCU: `NRF52832`, Frequency: `64MHz`, Flash: `512KB`, RAM: `64KB` 🌈
- **`board_nordicnrf52_hackaBLE`** — Platform: `platform_nordicnrf52`, Debug: External, MCU: `NRF52832`, Frequency: `64MHz`, Flash: `512KB`, RAM: `64KB` 💖

---

### ✨ ElectronutLabs

> not me double-checking the spelling — yes, this vendor shows up in the list twice with two different stylings, and we're respecting both, no cap 🙈

- **`board_nordicnrf52_electronut_blip`** — Platform: `platform_nordicnrf52`, Debug: On-board, MCU: `NRF52840`, Frequency: `64MHz`, Flash: `1MB`, RAM: `256KB` 🫶
- **`board_nordicnrf52_electronut_papyr`** — Platform: `platform_nordicnrf52`, Debug: On-board, MCU: `NRF52840`, Frequency: `64MHz`, Flash: `1MB`, RAM: `256KB` 💀

---

<pink>okay so that's another chunk of the board roster checked off</pink> — every name, platform, debug type, MCU, frequency, flash and RAM value straight from the source, nothing invented, nothing dropped 🎀 more coming, stay tuned bestie 💅

**Elektor Labs** 💖

- **`board_nxplpc_elektor_cocorico`** — platform: `platform_nxplpc` · debug: On-board · MCU: `LPC812` · frequency: 30MHz · flash: 16KB · RAM: 4KB

okay so this whole chunk is just the board catalog, bestie — every single entry below is a board you can point PlatformIO at, and each one lists its platform, how you debug it, which MCU it's rockin', the clock speed, flash and RAM. no skips, no vibes-only summaries, we're doing all of them 💅

---

**Embedded Artists** ✨

- **`board_nxplpc_lpc11u35`** — platform: `platform_nxplpc` · debug: External · MCU: `LPC11U35` · frequency: 48MHz · flash: 64KB · RAM: 10KB
- **`board_nxplpc_lpc4088_dm`** — platform: `platform_nxplpc` · debug: On-board · MCU: `LPC4088` · frequency: 120MHz · flash: 512KB · RAM: 96KB
- **`board_nxplpc_lpc4088`** — platform: `platform_nxplpc` · debug: On-board · MCU: `LPC4088` · frequency: 120MHz · flash: 512KB · RAM: 96KB

---

**Engduino** 🎀

- **`board_atmelavr_engduinov3`** — platform: `platform_atmelavr` · debug: On-board · MCU: `ATMEGA32U4` · frequency: 8MHz · flash: 28KB · RAM: 2.50KB

---

**EnviroDIY** 🌸

- **`board_atmelavr_mayfly`** — platform: `platform_atmelavr` · debug: On-board · MCU: `ATMEGA1284P` · frequency: 8MHz · flash: 127KB · RAM: 16KB

---

**Espotel** 🦋

- **`board_ststm32_elmo_f411re`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F411RET6` · frequency: 100MHz · flash: 512KB · RAM: 128KB

---

**Espressif** 🔥

- **`board_espressif32_esp-wrover-kit`** — platform: `platform_espressif32` · debug: On-board · MCU: `ESP32` · frequency: 240MHz · flash: 4MB · RAM: 320KB
- **`board_espressif32_esp32dev`** — platform: `platform_espressif32` · debug: External · MCU: `ESP32` · frequency: 240MHz · flash: 4MB · RAM: 320KB

---

**FYSETC** 🧚

- **`board_atmelavr_fysetc_f6_13`** — platform: `platform_atmelavr` · debug: On-board · MCU: `ATMEGA2560` · frequency: 16MHz · flash: 252KB · RAM: 8KB

---

**Fred** 💜

and that's where this part of the catalog lands us — right at the edge of the next vendor, no cap 🙈

…and the board list **keeps going**, bestie, like it literally never ends 💀 but we're so close, keep scrolling with me 🫶

So real quick, the columns in this chunk are: **Name**, **Platform**, **Debug**, **MCU**, **Frequency**, **Flash**, **RAM** — that's the vibe check for every row below 👑

- **`board_espressif32_frogboard`** — platform `platform_espressif32`, debug: <cyan>External</cyan>, MCU <yellow>ESP32</yellow>, 240MHz, 4MB flash, 320KB RAM 🐸

---

### ✨ Freescale ✨

- **`board_freescalekinetis_IBMEthernetKit`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MK64FN1M0VLL12</yellow>, 120MHz, 1MB flash, 256KB RAM
- **`board_freescalekinetis_frdm_k20d50m`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MK20DX128VLH5</yellow>, 48MHz, 128KB flash, 16KB RAM
- **`board_freescalekinetis_frdm_k22f`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MK22FN512VLH12</yellow>, 120MHz, 512KB flash, 128KB RAM
- **`board_freescalekinetis_frdm_k64f`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MK64FN1M0VLL12</yellow>, 120MHz, 1MB flash, 256KB RAM
- **`board_freescalekinetis_frdm_k66f`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MK66FN2M0VMD18</yellow>, 180MHz, 2MB flash, 256KB RAM
- **`board_freescalekinetis_frdm_k82f`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MK82FN256VLL15</yellow>, 150MHz, 256KB flash, 256KB RAM
- **`board_freescalekinetis_frdm_kl05z`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MKL05Z32VFM4</yellow>, 48MHz, 32KB flash, 4KB RAM
- **`board_freescalekinetis_frdm_kl25z`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MKL25Z128VLK4</yellow>, 48MHz, 128KB flash, 16KB RAM
- **`board_freescalekinetis_frdm_kl27z`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MKL27Z64VLH4</yellow>, 48MHz, 64KB flash, 16KB RAM
- **`board_freescalekinetis_frdm_kl43z`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MKL43Z256VLH4</yellow>, 48MHz, 256KB flash, 32KB RAM
- **`board_freescalekinetis_frdm_kl46z`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MKL46Z256VLL4</yellow>, 48MHz, 256KB flash, 32KB RAM
- **`board_freescalekinetis_frdm_kl82z`** — platform `platform_freescalekinetis`, debug: <cyan>External</cyan>, MCU <yellow>MKL82Z128VLK7</yellow>, 96MHz, 128KB flash, 96KB RAM
- **`board_freescalekinetis_frdm_kw24d`** — platform `platform_freescalekinetis`, debug: <cyan>External</cyan>, MCU <yellow>MKW24D512</yellow>, 50MHz, 512KB flash, 64KB RAM
- **`board_freescalekinetis_frdm_kw41z`** — platform `platform_freescalekinetis`, debug: <cyan>On-board</cyan>, MCU <yellow>MKW41Z512VHT4</yellow>, 48MHz, 512KB flash, 128KB RAM

---

### 🌈 Generic 🌈

> not "generic" like boring, bestie — "Generic" like <rainbow>category name</rainbow>, okay?? 😭

- **`board_ststm32_blackpill_f103c8`** — platform `platform_ststm32`, debug: <cyan>External</cyan>, MCU <yellow>STM32F103C8T6</yellow>, 72MHz, 64KB flash, 20KB RAM
- **`board_ststm32_blackpill_f103c8_128`** — platform `platform_ststm32`, debug: <cyan>External</cyan>, MCU <yellow>STM32F103C8T6</yellow>, 72MHz, 128KB flash, 20KB RAM
- **`board_ststm32_bluepill_f103c6`** — platform `platform_ststm32`, debug: <cyan>External</cyan>, MCU <yellow>STM32F103C6T6</yellow>, 72MHz, 32KB flash, 10KB RAM

<purple>okay and yes, the blackpill and bluepill being in the "Generic" bucket is sending me a little 💅 but that's what the table says so that's what we're saying, no cap.</purple>

<pink>ok bestie the board list keeps GOING</pink> and honestly? every single one of these is a whole <rainbow>moment</rainbow> ✨ same four-ish facts every time, so here's the vibe: board id, the platform it rides with, package type, the actual silicon, clock speed, flash, then RAM. read it like a lil chant, no skimming allowed 💅

- **`board_ststm32_bluepill_f103c8`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103C8T6`</purple>, <yellow>72MHz</yellow>, flash <mint>64KB</mint>, RAM <blue>20KB</blue> 🎀
- **`board_ststm32_bluepill_f103c8_128k`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103C8T6`</purple>, <yellow>72MHz</yellow>, flash <mint>128KB</mint>, RAM <blue>20KB</blue> 🎀
- **`board_ststm32_demo_f030f4`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F030F4P6`</purple>, <yellow>48MHz</yellow>, flash <mint>16KB</mint>, RAM <blue>4KB</blue> 🦋
- **`board_ststm32_fk407m1`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F407VET6`</purple>, <yellow>168MHz</yellow>, flash <mint>512KB</mint>, RAM <blue>128KB</blue> 🔥
- **`board_ststm32_genericSTM32F103C8`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103C8T6`</purple>, <yellow>72MHz</yellow>, flash <mint>64KB</mint>, RAM <blue>20KB</blue> ⭐
- **`board_ststm32_genericSTM32F103CB`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103CBT6`</purple>, <yellow>72MHz</yellow>, flash <mint>128KB</mint>, RAM <blue>20KB</blue> ⭐
- **`board_ststm32_genericSTM32F103R8`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103R8T6`</purple>, <yellow>72MHz</yellow>, flash <mint>64KB</mint>, RAM <blue>20KB</blue> ⭐
- **`board_ststm32_genericSTM32F103RB`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103RBT6`</purple>, <yellow>72MHz</yellow>, flash <mint>128KB</mint>, RAM <blue>20KB</blue> ⭐
- **`board_ststm32_genericSTM32F103RC`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103RCT6`</purple>, <yellow>72MHz</yellow>, flash <mint>256KB</mint>, RAM <blue>48KB</blue> ⭐
- **`board_ststm32_genericSTM32F103RE`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103RET6`</purple>, <yellow>72MHz</yellow>, flash <mint>512KB</mint>, RAM <blue>64KB</blue> ⭐
- **`board_ststm32_genericSTM32F103T8`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103T8T6`</purple>, <yellow>72MHz</yellow>, flash <mint>64KB</mint>, RAM <blue>20KB</blue> ⭐
- **`board_ststm32_genericSTM32F103TB`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103TBT6`</purple>, <yellow>72MHz</yellow>, flash <mint>128KB</mint>, RAM <blue>20KB</blue> ⭐
- **`board_ststm32_genericSTM32F103VB`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103VBT6`</purple>, <yellow>72MHz</yellow>, flash <mint>128KB</mint>, RAM <blue>20KB</blue> ⭐
- **`board_ststm32_genericSTM32F103VC`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103VCT6`</purple>, <yellow>72MHz</yellow>, flash <mint>256KB</mint>, RAM <blue>48KB</blue> ⭐
- **`board_ststm32_genericSTM32F103VD`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103VDT6`</purple>, <yellow>72MHz</yellow>, flash <mint>384KB</mint>, RAM <blue>64KB</blue> ⭐
- **`board_ststm32_genericSTM32F103VE`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103VET6`</purple>, <yellow>72MHz</yellow>, flash <mint>512KB</mint>, RAM <blue>64KB</blue> ⭐
- **`board_ststm32_genericSTM32F103ZC`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103ZCT6`</purple>, <yellow>72MHz</yellow>, flash <mint>256KB</mint>, RAM <blue>48KB</blue> ⭐
- **`board_ststm32_genericSTM32F103ZD`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103ZDT6`</purple>, <yellow>72MHz</yellow>, flash <mint>384KB</mint>, RAM <blue>64KB</blue> ⭐
- **`board_ststm32_genericSTM32F103ZE`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F103ZET6`</purple>, <yellow>72MHz</yellow>, flash <mint>512KB</mint>, RAM <blue>64KB</blue> ⭐
- **`board_ststm32_genericSTM32F303CB`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F303CBT6`</purple>, <yellow>72MHz</yellow>, flash <mint>128KB</mint>, RAM <blue>32KB</blue> 🌸
- **`board_ststm32_genericSTM32F401RB`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F401RB`</purple>, <yellow>84MHz</yellow>, flash <mint>128KB</mint>, RAM <blue>64KB</blue> 💜
- **`board_ststm32_genericSTM32F401RC`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F401RC`</purple>, <yellow>84MHz</yellow>, flash <mint>256KB</mint>, RAM <blue>64KB</blue> 💜
- **`board_ststm32_genericSTM32F401RE`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F401RE`</purple>, <yellow>84MHz</yellow>, flash <mint>512KB</mint>, RAM <blue>96KB</blue> 💜
- **`board_ststm32_genericSTM32F407VET6`** — platform <pink>`platform_ststm32`</pink>, <cyan>External</cyan>, MCU <purple>`STM32F407VET6`</purple>, <yellow>168MHz</yellow>, flash <mint>502.23KB</mint>, RAM <blue>128KB</blue> 🔥

> <red>heads up bestie</red> — that last one really does say <mint>`502.23KB`</mint> and not a tidy <mint>`512KB`</mint>. that's not me being quirky, that's literally what's written, so don't come for me 💀

not the <purple>`generic`</purple> family eating the entire page fr fr 😭 like yes queen, cover every single letter variant, we love thoroughness 🫶

the <cyan>External</cyan> on every line is the package column, and it's the same for the whole run, so if you were hoping for a plot twist... there isn't one, it's giving consistency ✨

and we're <rainbow>still not done</rainbow> 👑

- <pink>**`board_ststm32_genericSTM32F407VGT6`**</pink> — platform <cyan>`platform_ststm32`</cyan> · debug <yellow>External</yellow> · MCU <purple>`STM32F407VGT6`</purple> · <mint>168MHz</mint> · flash <lavender>1MB</lavender> · RAM <peach>192KB</peach> 🫶

- <pink>**`board_ststm32_stm32f4stamp`**</pink> — platform <cyan>`platform_ststm32`</cyan> · debug <yellow>External</yellow> · MCU <purple>`STM32F405RGT6`</purple> · <mint>168MHz</mint> · flash <lavender>1MB</lavender> · RAM <peach>192KB</peach> ✨

---

### 💜 GigaDevice

- <hotpink>**`board_nuclei_gd32vf103v_eval`**</hotpink> — platform <cyan>`platform_nuclei`</cyan> · debug <yellow>External</yellow> · MCU <purple>`GD32VF103VBT6`</purple> · <mint>108MHz</mint> · flash <lavender>128KB</lavender> · RAM <peach>32KB</peach> 🦋

---

### 🌸 Gimasi

- <hotpink>**`board_atmelsam_tuinozero96`**</hotpink> — platform <cyan>`platform_atmelsam`</cyan> · debug <yellow>External</yellow> · MCU <purple>`SAMD21G18A`</purple> · <mint>48MHz</mint> · flash <lavender>256KB</lavender> · RAM <peach>32KB</peach> 💅

---

### 🌈 GreenWaves Technologies

- <hotpink>**`board_riscv_gap_gapuino`**</hotpink> — platform <cyan>`platform_riscv_gap`</cyan> · debug <yellow>On-board</yellow> · MCU <purple>`GAP8`</purple> · <mint>250MHz</mint> · flash <lavender>64MB</lavender> · RAM <peach>8MB</peach> 🔥

---

### 🎀 HY

- <hotpink>**`board_ststm32_hy_tinystm103tb`**</hotpink> — platform <cyan>`platform_ststm32`</cyan> · debug <yellow>External</yellow> · MCU <purple>`STM32F103TBU6`</purple> · <mint>72MHz</mint> · flash <lavender>128KB</lavender> · RAM <peach>20KB</peach> 🍓

---

### ⭐ Heltec Automation

- <hotpink>**`board_espressif32_heltec_wifi_lora_32`**</hotpink> — platform <cyan>`platform_espressif32`</cyan> · debug <yellow>External</yellow> · MCU <purple>`ESP32`</purple> · <mint>240MHz</mint> · flash <lavender>4MB</lavender> · RAM <peach>320KB</peach> 🌸

- <hotpink>**`board_espressif32_heltec_wifi_lora_32_V2`**</hotpink> — platform <cyan>`platform_espressif32`</cyan> · debug <yellow>External</yellow> · MCU <purple>`ESP32`</purple> · <mint>240MHz</mint> · flash <lavender>8MB</lavender> · RAM <peach>320KB</peach> 💖

- <hotpink>**`board_espressif32_heltec_wireless_stick`**</hotpink> — platform <cyan>`platform_espressif32`</cyan> · debug <yellow>External</yellow> · MCU <purple>`ESP32`</purple> · <mint>240MHz</mint> · flash <lavender>8MB</lavender> · RAM <peach>320KB</peach> 🌈

---

### 🧚 Holyiot

- <hotpink>**`board_nordicnrf52_holyiot_yj16019`**</hotpink> — platform <cyan>`platform_nordicnrf52`</cyan> · debug <yellow>External</yellow> · MCU <purple>`NRF52832`</purple> · <mint>64MHz</mint> · flash <lavender>512KB</lavender> · RAM <peach>64KB</peach> 👑

---

### 🦋 Hornbill

new vendor bestie, same seven columns we've been vibing with the whole time — <cyan>Name</cyan> · <cyan>Platform</cyan> · <cyan>Debug</cyan> · <cyan>MCU</cyan> · <cyan>Frequency</cyan> · <cyan>Flash</cyan> · <cyan>RAM</cyan> — and the rows roll in right after 💜

- <pink>**`board_espressif32_hornbill32dev`**</pink> — platform `platform_espressif32` · debug: External · MCU `ESP32` · `240MHz` · flash `4MB` · RAM `320KB` 🦋
- <pink>**`board_espressif32_hornbill32minima`**</pink> — platform `platform_espressif32` · debug: External · MCU `ESP32` · `240MHz` · flash `4MB` · RAM `320KB` 🦋

---

### <rainbow>Infineon</rainbow> 👑

okay bestie, this whole family runs on `platform_infineonxmc` and they're all On-board debug, no cap 🎀

- <purple>**`board_infineonxmc_xmc1100_boot_kit`**</purple> — platform `platform_infineonxmc` · debug: On-board · MCU `XMC1100` · `32MHz` · flash `64KB` · RAM `16KB` 💜
- <purple>**`board_infineonxmc_xmc1100_h_bridge2go`**</purple> — platform `platform_infineonxmc` · debug: On-board · MCU `XMC1100` · `32MHz` · flash `64KB` · RAM `16KB` 💜
- <purple>**`board_infineonxmc_xmc1100_xmc2go`**</purple> — platform `platform_infineonxmc` · debug: On-board · MCU `XMC1100` · `32MHz` · flash `64KB` · RAM `16KB` 💜
- <purple>**`board_infineonxmc_xmc1300_boot_kit`**</purple> — platform `platform_infineonxmc` · debug: On-board · MCU `XMC1300` · `32MHz` · flash `64KB` · RAM `16KB` 💜
- <purple>**`board_infineonxmc_xmc1300_sense2gol`**</purple> — platform `platform_infineonxmc` · debug: On-board · MCU `XMC1300` · `32MHz` · flash `32KB` · RAM `16KB` 💜
- <purple>**`board_infineonxmc_xmc1400_boot_kit`**</purple> — platform `platform_infineonxmc` · debug: On-board · MCU `XMC1400` · `48MHz` · flash `1.95MB` · RAM `16KB` 💜
- <purple>**`board_infineonxmc_xmc4200_distance2go`**</purple> — platform `platform_infineonxmc` · debug: On-board · MCU `XMC4200` · `80MHz` · flash `256KB` · RAM `40KB` 💜
- <purple>**`board_infineonxmc_xmc4700_relax_kit`**</purple> — platform `platform_infineonxmc` · debug: On-board · MCU `XMC4700` · `144MHz` · flash `2.00MB` · RAM `1.95MB` 🔥

---

### <mint>IoTaaP</mint> 🍓

- <mint>**`board_espressif32_iotaap_magnolia`**</mint> — platform `platform_espressif32` · debug: External · MCU `ESP32` · `240MHz` · flash `4MB` · RAM `320KB` 🌸

---

### <cyan>JKSoft</cyan> ✨

- <cyan>**`board_nordicnrf51_wallbot_ble`**</cyan> — platform `platform_nordicnrf51` · debug: On-board · MCU `NRF51822` · `16MHz` · flash `128KB` · RAM `16KB` 🦋

---

### <lavender>Laird Connectivity</lavender> 💅

- <lavender>**`board_nordicnrf52_laird_bl652_dvk`**</lavender> — platform `platform_nordicnrf52` · debug: On-board · MCU `NRF52832` · `64MHz` · flash `512KB` · RAM `64KB` 💜
- <lavender>**`board_nordicnrf52_laird_bl654_dvk`**</lavender> — platform `platform_nordicnrf52` · debug: On-board · MCU `NRF52840` · `64MHz` · flash `1MB` · RAM `256KB` 👑

---

### <peach>LeafLabs</peach> 🌈

the columns for this little table are, in order: **Name**, **Platform**, **Debug**, **MCU**, **Frequency**, **Flash**, **RAM** — same lineup as the ones above, periodt 💖

okay so the maple era is STILL going, bestie, and these last four are lowkey the moment 💅 same `platform_ststm32` energy, still debug-by-`External`, still `72MHz`, but watch the flash + RAM columns change like a glow-up montage:

├────────────────────────────┼────┼─────────────────┼┼─────────┼┼─────────┼─────┼─────┼─────┼─┼─────┼┼─────┤ │ board_ststm32_maple │ │ platform_ststm32││ External││ STM32F103RBT6 │ 72MHz │ 108KB ││17KB │ ├────────────────────────────┼────┼─────────────────┼┼─────────┼┼─────────┼─────┼─────┼─────┼─┼─────┼┼─────┤ │ board_ststm32_maple_ret6 │ │ platform_ststm32││ External││ STM32F103RET6 │ 72MHz │ 256KB ││48KB │ ├────────────────────────────┼────┼─────────────────┼┼─────────┼┼─────────┼─────┼─────┼─────┼─┼─────┼┼─────┤ │ board_ststm32_maple_mini_b20 │ platform_ststm32││ External││ STM32F103CBT6 │ 72MHz │ 120KB ││20KB │ ├────────────────────────────┼────┼─────────────────┼┼─────────┼┼─────────┼─────┼─────┼─────┼─┼─────┼┼─────┤ │ board_ststm32_maple_mini_origin │ platform_ststm32││ External││ STM32F103CBT6 │ 72MHz │ 108KB ││17KB │ ├────────────────────────────┼────┴─────────────────┼┴─────────┼┴─────────┼─────┴─────┼─────┴─┼─────┴┼─────┘ │ │ │ │ │ │ │ │


so yeah, `board_ststm32_maple` and `board_ststm32_maple_ret6` are giving `STM32F103RBT6` and `STM32F103RET6` respectively, and the two minis (`board_ststm32_maple_mini_b20` and `board_ststm32_maple_mini_origin`) are BOTH on `STM32F103CBT6` but with different flash/RAM splits — `120KB`/`20KB` vs `108KB`/`17KB`. not me noticing they're *basically* the same board with different vibes 😭

---

## ✨ LightUp ✨

new vendor drop, and it's a single board carrying the whole section on its back 🫶

│ LightUp │ │ │ │ │ │ │ ├────────────────────────┬───┼───────────────┬──────┼───┬──────┼─────┬────┼──────┬────┼──┬────┼───┐ │ │ Name │ Platform │ Debug│ │ MCU │ │ Frequency │ Flash │ RAM│ │ │ ├────────────────────────┼───┼───────────────┼──────┼───┼──────┼─────┼────┼──────┼────┼──┼────┼───┤ │ │ board_atmelavr_lightup │ platform_atmelavr │ On-board │ ATMEGA32U4 │ 8MHz │ 28KB │ 2.50KB │ │ ├────────────────────────┴───┼───────────────┴──────┼───┴──────┼─────┴────┼──────┴────┼──┴────┼───┘ │ │ │ │ │ │ │ │ │


one board: `board_atmelavr_lightup`, riding `platform_atmelavr`, `On-board` debug (yes queen, debugging built right in 💖), `ATMEGA32U4` at `8MHz`, `28KB` flash, `2.50KB` RAM. it's giving tiny but mighty.

---

## 🌸 Linino 🌸

another one-board wonder, and this one's a whole glow-up from LightUp — same chip family but DOUBLE the clock 🔥

│ Linino │ │ │ │ │ │ │ ├────────────────────┬───────┼───────────┬──────────┼──────────┼─┬────────┼──┬───────┬┼───────┤ │ │ Name │ Platform │ Debug │ MCU │ │ Frequency │ Flash ││RAM │ │ ├────────────────────┼───────┼───────────┼──────────┼──────────┼─┼────────┼──┼───────┼┼───────┤ │ │ board_atmelavr_one │ platform_atmelavr │ On-board │ ATMEGA32U4 │ 16MHz │ │ 28KB ││2.50KB │ │ ├────────────────────┴───────┼───────────┴──────────┼──────────┼─┴────────┼──┴───────┴┼───────┤ │ │ │ │ │ │ │ │ │


`board_atmelavr_one` — that's the name, no notes — on `platform_atmelavr`, `On-board` debug, `ATMEGA32U4` humming along at `16MHz`, `28KB` flash, `2.50KB` RAM. so if you clocked LightUp up to 16 you'd basically get this. iconic of them to keep it simple fr fr.

---

## 👑 LowPowerLab 👑

okay THIS vendor ate and left no crumbs — six boards, two platforms, and the chip lineup is a whole character arc ⭐

│ LowPowerLab │ │ │ │ │ │ │ ├────────────────────────────┼┬───────────────────┬─┼────────┬─┼──────────┼┬──────────┼┬──────┼──┬───┼──┐ │ Name ││ Platform │ Debug │ MCU ││ Frequency││ Flash│ │ RAM │ ├────────────────────────────┼┼───────────────────┼─┼────────┼─┼──────────┼┼──────────┼┼──────┼──┼───┼──┤ │ board_atmelavr_mightyhat ││ platform_atmelavr │ On-board │ ATMEGA328P ││ 16MHz ││ 31KB │ │ 2KB │ ├────────────────────────────┼┼───────────────────┼─┼────────┼─┼──────────┼┼──────────┼┼──────┼──┼───┼──┤ │ board_atmelavr_moteino ││ platform_atmelavr │ On-board │ ATMEGA328P ││ 16MHz ││ 31.50KB │ 2KB │ ├────────────────────────────┼┼───────────────────┼─┼────────┼─┼──────────┼┼──────────┼┼──────┼──┼───┼──┤ │ board_atmelavr_moteino8mhz ││ platform_atmelavr │ On-board │ ATMEGA328P ││ 8MHz ││ 31.50KB │ 2KB │ ├────────────────────────────┼┼───────────────────┼─┼────────┼─┼──────────┼┼──────────┼┼──────┼──┼───┼──┤ │ board_atmelavr_moteinomega ││ platform_atmelavr │ On-board │ ATMEGA1284P││ 16MHz ││ 127KB│ │ 16KB │ ├────────────────────────────┼┼───────────────────┼─┼────────┼─┼──────────┼┼──────────┼┼──────┼──┼───┼──┤ │ board_atmelsam_moteino_zero││ platform_atmelsam │ External │ SAMD21G18A ││ 48MHz ││ 256KB│ │ 32KB │ ├────────────────────────────┼┴───────────────────┴─┼────────┴─┼──────────┼┴──────────┼┴──────┼──┴───┼──┘ │ │ │ │ │ │ │ │


run me through it bestie:

- `board_atmelavr_mightyhat` — `platform_atmelavr`, `On-board` debug, `ATMEGA328P`, `16MHz`, `31KB` flash, `2KB` RAM
- `board_atmelavr_moteino` — `platform_atmelavr`, `On-board` debug, `ATMEGA328P`, `16MHz`, `31.50KB` flash, `2KB` RAM
- `board_atmelavr_moteino8mhz` — same chip and same `31.50KB`/`2KB`, but clocked at `8MHz` instead of `16MHz`
- `board_atmelavr_moteinomega` — `platform_atmelavr`, `On-board` debug, `ATMEGA1284P`, `16MHz`, `127KB` flash, `16KB` RAM (the big sister 💜)
- `board_atmelsam_moteino_zero` — the plot twist, on `platform_atmelsam`, debug `External`, `SAMD21G18A` at `48MHz`, `256KB` flash, `32KB` RAM

like the way `moteino` and `moteino8mhz` are identical except the `8MHz`… very demure, very mindful 🌈

---

## 🦋 MH-ET Live 🦋

ESP32 o'clock, and these two are twins. literally the same row twice, and I respect the consistency 😌

│ MH-ET Live │ │ │ │ │ │ │ ├────────────────────────────┼───────┬──────────────┼───────┬──┼───────┬──┼────┬──────┼────┬──┼────┬─┼─────┐ │ Name │ │ Platform │ │ Debug │ MCU │ Frequency │ Flash │ RAM │ ├────────────────────────────┼───────┼──────────────┼───────┼──┼───────┼──┼────┼──────┼────┼──┼────┼─┼─────┤ │ board_espressif32_mhetesp32devkit │ platform_espressif32 │ External │ ESP32 │ 240MHz │ 4MB │ 320KB │ ├────────────────────────────┼───────┼──────────────┼───────┼──┼───────┼──┼────┼──────┼────┼──┼────┼─┼─────┤ │ board_espressif32_mhetesp32minikit │ platform_espressif32 │ External │ ESP32 │ 240MHz │ 4MB │ 320KB │ ├────────────────────────────┼───────┴──────────────┼───────┴──┼───────┴──┼────┴──────┼────┴──┼────┴─┼─────┘ │ │ │ │ │ │ │ │


- `board_espressif32_mhetesp32devkit` — `platform_espressif32`, `External` debug, `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM
- `board_espressif32_mhetesp32minikit` — `platform_espressif32`, `External` debug, `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM

same, same. both `240MHz` which is honestly unhinged compared to the `8MHz` girlies up top 💀✨

---

## 💅 MXChip 💅

one board, one very fancy chip, and `1MB` of flash like it's nothing 👑

│ MXChip │ │ │ │ │ │ │ ├────────────────────────────┼┬──────────────────┬──┼───────┬──┼──────────┼─┬─────────┼─┬─────┼─┬────┼──┐ │ Name ││ Platform │ Debug │ MCU │ │ Frequency │ Flash │ RAM│ │ ├────────────────────────────┼┼──────────────────┼──┼───────┼──┼──────────┼─┼─────────┼─┼─────┼─┼────┼──┤ │ board_ststm32_mxchip_az3166││ platform_ststm32 │ On-board │ STM32F412ZGT6 │ 100MHz │ │ 1MB │ │ 256KB │ ├────────────────────────────┼┴──────────────────┴──┼───────┴──┼──────────┼─┴─────────┼─┴─────┼─┴────┼──┘ │ │ │ │ │ │ │ │


`board_ststm32_mxchip_az3166` — `platform_ststm32`, `On-board` debug, `STM32F412ZGT6` at `100MHz`, `1MB` flash, `256KB` RAM. the way that flash column just says `1MB` with zero shame 🫶

---

## 🎀 Makerdiary 🎀

and here we go, next vendor loading…

│ │ │ │ │ │ │ │ │ Makerdiary │ │ │ │ │ │ │


bestie we are SO not done, the table keeps going — stay tuned 💖

### ✨ ...still the board table, bestie, we're SO close ✨

- **`board_nordicnrf52_nrf52832_mdk`** — platform <cyan>`platform_nordicnrf52`</cyan> · Debug: On-board · MCU: `NRF52832` · Frequency: `64MHz` · Flash: `512KB` · RAM: `64KB`
- **`board_nordicnrf52_nrf52840_mdk`** — platform <cyan>`platform_nordicnrf52`</cyan> · Debug: On-board · MCU: `NRF52840` · Frequency: `64MHz` · Flash: `1MB` · RAM: `256KB`

---

## 🎀 Malyan

okay these three are the Malyan girlies, all `<pink>platform_ststm32</pink>` coded, all External debug, no on-board situations happening here 💅

- **`board_ststm32_malyanm200_f070cb`** — platform <cyan>`platform_ststm32`</cyan> · Debug: External · MCU: `STM32F070CBT6` · Frequency: `48MHz` · Flash: `120KB` · RAM: `14.81KB`
- **`board_ststm32_malyanm300_f070cb`** — platform <cyan>`platform_ststm32`</cyan> · Debug: External · MCU: `STM32F070CBT6` · Frequency: `48MHz` · Flash: `120KB` · RAM: `14.81KB`
- **`board_ststm32_malyanm200_f103cb`** — platform <cyan>`platform_ststm32`</cyan> · Debug: External · MCU: `STM32F103CBT6` · Frequency: `72MHz` · Flash: `120KB` · RAM: `20KB`

---

## 👑 Maxim

the Maxim lineup, all `<purple>platform_maxim32</purple>`, and ngl the flash numbers here are lowkey eating — `2MB` twice?? we love to see it 🫶

- **`board_maxim32_max32620fthr`** — platform <cyan>`platform_maxim32`</cyan> · Debug: External · MCU: `MAX32620FTHR` · Frequency: `96MHz` · Flash: `2MB` · RAM: `256KB`
- **`board_maxim32_max32600mbed`** — platform <cyan>`platform_maxim32`</cyan> · Debug: On-board · MCU: `MAX32600` · Frequency: `24MHz` · Flash: `256KB` · RAM: `32KB`
- **`board_maxim32_max32620hsp`** — platform <cyan>`platform_maxim32`</cyan> · Debug: External · MCU: `MAX32620` · Frequency: `96MHz` · Flash: `2MB` · RAM: `256KB`
- **`board_maxim32_maxwsnenv`** — platform <cyan>`platform_maxim32`</cyan> · Debug: External · MCU: `MAX32610` · Frequency: `24MHz` · Flash: `256KB` · RAM: `32KB`

---

## 🌸 MediaTek Labs

just the one icon here, she's on-board debug and she's doing her best with `28KB` of flash 💀

- **`board_atmelavr_smart7688`** — platform <cyan>`platform_atmelavr`</cyan> · Debug: On-board · MCU: `ATMEGA32U4` · Frequency: `8MHz` · Flash: `28KB` · RAM: `2.50KB`

---

## 🦋 Microchip

okay the Microchip section is giving full AVR library realness — all `<mint>platform_atmelavr</mint>`, all On-board debug, all `16MHz` except... yeah no, all `16MHz`. consistent queen behavior ✨

- **`board_atmelavr_ATmega128`** — platform <cyan>`platform_atmelavr`</cyan> · Debug: On-board · MCU: `ATMEGA128` · Frequency: `16MHz` · Flash: `127KB` · RAM: `4KB`
- **`board_atmelavr_ATmega1280`** — platform <cyan>`platform_atmelavr`</cyan> · Debug: On-board · MCU: `ATMEGA1280` · Frequency: `16MHz` · Flash: `127KB` · RAM: `8KB`
- **`board_atmelavr_ATmega1281`** — platform <cyan>`platform_atmelavr`</cyan> · Debug: On-board · MCU: `ATMEGA1281` · Frequency: `16MHz` · Flash: `127KB` · RAM: `8KB`
- **`board_atmelavr_ATmega1284`** — platform <cyan>`platform_atmelavr`</cyan> · Debug: On-board · MCU: `ATMEGA1284` · Frequency: `16MHz` · Flash: `127KB` · RAM: `16KB`
- **`board_atmelavr_ATmega1284P`** — platform <cyan>`platform_atmelavr`</cyan> · Debug: On-board · MCU: `ATMEGA1284P` · Frequency: `16MHz` · Flash: `127KB` · RAM: `16KB`
- **`board_atmelavr_ATmega16`** — platform <cyan>`platform_atmelavr`</cyan> · Debug: On-board · MCU: `ATMEGA16` · Frequency: `16MHz` · Flash: `15.50KB` · RAM: `1KB`
- **`board_atmelavr_ATmega164P`** — platform <cyan>`platform_atmelavr`</cyan> · Debug: On-board · MCU: `ATMEGA164P` · Frequency: `16MHz` · Flash: `15.50KB` · RAM: `1KB`

- **`board_atmelavr_ATmega168`** — platform <cyan>`platform_atmelavr`</cyan> · debug <green>On-board</green> · MCU <purple>`ATMEGA168`</purple> · <yellow>`16MHz`</yellow> · flash `15.50KB` · RAM `1KB` ✨
- **`board_atmelavr_ATmega168P`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA168P`</purple> · <yellow>`16MHz`</yellow> · `15.50KB` · `1KB`
- **`board_atmelavr_ATmega2560`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA2560`</purple> · <yellow>`16MHz`</yellow> · `255KB` · `8KB` — okay the 2560 is *that* girl, look at all that flash 👑
- **`board_atmelavr_ATmega324A`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA324A`</purple> · <yellow>`16MHz`</yellow> · `31.50KB` · `2KB`
- **`board_atmelavr_ATmega324P`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA324P`</purple> · <yellow>`16MHz`</yellow> · `31.50KB` · `2KB`
- **`board_atmelavr_ATmega324PA`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA324PA`</purple> · <yellow>`16MHz`</yellow> · `31.50KB` · `2KB` — the P and the PA are lowkey twins, we love a family resemblance 💖
- **`board_atmelavr_ATmega328`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA328`</purple> · <yellow>`16MHz`</yellow> · `31.50KB` · `2KB`
- **`board_atmelavr_ATmega328P`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA328P`</purple> · <yellow>`16MHz`</yellow> · `31.50KB` · `2KB` — the celebrity of the lineup, no cap 🌟
- **`board_atmelavr_ATmega48`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA48`</purple> · <yellow>`16MHz`</yellow> · `4KB` · `512B` — smol but valid 🫶
- **`board_atmelavr_ATmega644P`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA644P`</purple> · <yellow>`16MHz`</yellow> · `63KB` · `4KB`
- **`board_atmelavr_ATmega8`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA8`</purple> · <yellow>`16MHz`</yellow> · `7.50KB` · `1KB`
- **`board_atmelavr_ATmega88`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA88`</purple> · <yellow>`16MHz`</yellow> · `7.50KB` · `1KB`
- **`board_atmelavr_ATmega88P`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA88P`</purple> · <yellow>`16MHz`</yellow> · `7.50KB` · `1KB`
- **`board_atmelavr_ATmega48P`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA48P`</purple> · <yellow>`16MHz`</yellow> · `4KB` · `512B`

---

### Microduino 🎀

<lavender>and now for a whole new vibe check — the Microduino lineup, bestie 💅</lavender>

- **`board_atmelavr_168pa16m`** — <cyan>`platform_atmelavr`</cyan> · debug <green>On-board</green> · MCU <purple>`ATMEGA168P`</purple> · <yellow>`16MHz`</yellow> · flash `15.50KB` · RAM `1KB`
- **`board_atmelavr_168pa8m`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA168P`</purple> · <yellow>`8MHz`</yellow> · `15.50KB` · `1KB` — same chip, chiller clock 🦋
- **`board_atmelavr_328p16m`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA328P`</purple> · <yellow>`16MHz`</yellow> · `31.50KB` · `2KB`
- **`board_atmelavr_328p8m`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA328P`</purple> · <yellow>`8MHz`</yellow> · `31.50KB` · `2KB`
- **`board_ststm32_microduino32_flash`** — <hotpink>`platform_ststm32`</hotpink> · debug <peach>External</peach> · MCU <purple>`STM32F103CBT6`</purple> · <yellow>`72MHz`</yellow> · flash `105.47KB` · RAM `16.60KB` — not me switching platforms mid-table, it's giving <rainbow>range</rainbow> ✨
- **`board_atmelavr_32u416m`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA32U4`</purple> · <yellow>`16MHz`</yellow> · `28KB` · `2.50KB`
- **`board_atmelavr_1284p16m`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA1284P`</purple> · <yellow>`16MHz`</yellow> · `127KB` · `16KB` — the 1284P ate and left no crumbs 🔥
- **`board_atmelavr_1284p8m`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA1284P`</purple> · <yellow>`8MHz`</yellow> · `127KB` · `16KB`
- **`board_atmelavr_644pa16m`** — <cyan>`platform_atmelavr`</cyan> · <green>On-board</green> · <purple>`ATMEGA644P`</purple> · <yellow>`16MHz`</yellow> · `63KB` · `4KB`

…and we're *still* in the board table, bestie, because the PlatformIO board list is genuinely giving infinite scroll energy 😭 grab a snack, we're almost at the N's 🍓

- **`board_atmelavr_644pa8m`** — platform `platform_atmelavr`, debug <cyan>On-board</cyan>, MCU `ATMEGA644P`, freq <yellow>8MHz</yellow>, flash `63KB`, RAM `4KB` ✨

---

### 🌸 Micromint 🌸

- **`board_nxplpc_lpc4330_m4`** — platform `platform_nxplpc`, debug <cyan>On-board</cyan>, MCU `LPC4330`, freq <yellow>204MHz</yellow>, flash `8MB`, RAM `264KB` 💖

---

### 🎀 Midatronics 🎀

- **`board_ststm32_mkr_sharky`** — platform `platform_ststm32`, debug <cyan>External</cyan>, MCU `STM32WB55CG`, freq <yellow>64MHz</yellow>, flash `512KB`, RAM `192.00KB` 🦋

---

### ✨ MikroElektronika ✨

- **`board_freescalekinetis_hexiwear`** — platform `platform_freescalekinetis`, debug <cyan>External</cyan>, MCU `MK64FN1M0VDC12`, freq <yellow>120MHz</yellow>, flash `1MB`, RAM `256KB` 🔥

---

### 💅 MultiTech 💅

- **`board_ststm32_mts_dragonfly_f411re`** — platform `platform_ststm32`, debug <cyan>External</cyan>, MCU `STM32F411RET6`, freq <yellow>100MHz</yellow>, flash `512KB`, RAM `128KB` 🫶
- **`board_ststm32_mts_mdot_f405rg`** — platform `platform_ststm32`, debug <cyan>External</cyan>, MCU `STM32F411RET6`, freq <yellow>100MHz</yellow>, flash `512KB`, RAM `128KB` 🌈
- **`board_ststm32_mts_mdot_f411re`** — platform `platform_ststm32`, debug <cyan>External</cyan>, MCU `STM32F411RET6`, freq <yellow>100MHz</yellow>, flash `512KB`, RAM `128KB` ⭐
- **`board_ststm32_xdot_l151cc`** — platform `platform_ststm32`, debug <cyan>External</cyan>, MCU `STM32L151CCU6`, freq <yellow>32MHz</yellow>, flash `256KB`, RAM `32KB` 🧚

---

### 👑 NGX Technologies 👑

- **`board_nxplpc_blueboard_lpc11u24`** — platform `platform_nxplpc`, debug <cyan>External</cyan>, MCU `LPC11U24`, freq <yellow>48MHz</yellow>, flash `32KB`, RAM `8KB` 💜

---

### 🌈 NXP 🌈

- **`board_nxplpc_lpc11u24_301`** — platform `platform_nxplpc`, debug <cyan>On-board</cyan>, MCU `LPC11U24`, freq <yellow>48MHz</yellow>, flash `32KB`, RAM `8KB` 🎀
- **`board_nxplpc_lpc11u68`** — platform `platform_nxplpc`, debug <cyan>On-board</cyan>, MCU `LPC11U68`, freq <yellow>50MHz</yellow>, flash `256KB`, RAM `36KB` ✨
- **`board_nxplpc_lpc824`** — platform `platform_nxplpc`, debug <cyan>On-board</cyan>, MCU `LPC824`, freq <yellow>30MHz</yellow>, flash `32KB`, RAM `8KB` 💖

- **`board_nxplpc_lpc11c24`** — platform `platform_nxplpc`, debug **External**, MCU `LPC11C24`, 48MHz, flash 32KB, RAM 8KB 🌸
- **`board_nxplpc_lpc11u34_421`** — platform `platform_nxplpc`, debug **External**, MCU `LPC11U34`, 48MHz, flash 40KB, RAM 8KB 🌸
- **`board_nxplpc_lpc11u37_501`** — platform `platform_nxplpc`, debug **External**, MCU `LPC11U37`, 48MHz, flash 128KB, RAM 10KB 🌸
- **`board_nxplpc_lpc812`** — platform `platform_nxplpc`, debug **On-board**, MCU `LPC812`, 30MHz, flash 16KB, RAM 4KB ✨
- **`board_nxplpc_lpc1549`** — platform `platform_nxplpc`, debug **External**, MCU `LPC1549`, 72MHz, flash 256KB, RAM 36KB 🔥
- **`board_nxplpc_lpc54114`** — platform `platform_nxplpc`, debug **On-board**, MCU `LPC54114J256BD64`, 100MHz, flash 256KB, RAM 192KB 👑
- **`board_nxplpc_lpc546xx`** — platform `platform_nxplpc`, debug **On-board**, MCU `LPC54608ET512`, 180MHz, flash 512KB, RAM 200KB 👑
- **`board_nxpimxrt_mimxrt1010_evk`** — platform `platform_nxpimxrt`, debug **On-board**, MCU `MIMXRT1011DAE5A`, 500MHz, flash 64KB, RAM 128KB 🦋
- **`board_nxpimxrt_mimxrt1015_evk`** — platform `platform_nxpimxrt`, debug **On-board**, MCU `MIMXRT1015DAF5A`, 500MHz, flash 96KB, RAM 128KB 🦋
- **`board_nxpimxrt_mimxrt1020_evk`** — platform `platform_nxpimxrt`, debug **On-board**, MCU `MIMXRT1021DAG5A`, 500MHz, flash 64MB, RAM 256MB 💅
- **`board_nxpimxrt_mimxrt1050_evk`** — platform `platform_nxpimxrt`, debug **On-board**, MCU `MIMXRT1052DVL6B`, 600MHz, flash 64MB, RAM 512KB 💅
- **`board_nxpimxrt_mimxrt1060_evk`** — platform `platform_nxpimxrt`, debug **On-board**, MCU `MIMXRT1062DVL6A`, 600MHz, flash 64MB, RAM 1MB 💅
- **`board_nxpimxrt_mimxrt1064_evk`** — platform `platform_nxpimxrt`, debug **On-board**, MCU `MIMXRT1064DVL6A`, 600MHz, flash 4MB, RAM 1MB 💅
- **`board_nxplpc_lpc11u24`** — platform `platform_nxplpc`, debug **On-board**, MCU `LPC11U24`, 48MHz, flash 32KB, RAM 8KB 🎀
- **`board_nxplpc_lpc1768`** — platform `platform_nxplpc`, debug **On-board**, MCU `LPC1768`, 96MHz, flash 512KB, RAM 64KB 🎀

---

## <rainbow>🫶 Netduino 🫶</rainbow>

okay bestie, new category, new vibe. literally one board here and it's carrying the whole name 💖

- **`board_ststm32_netduino2plus`** — platform `platform_ststm32`, debug **External**, MCU `STM32F405RGT6`, 168MHz, flash 1MB, RAM 192KB ✨

---

## <rainbow>🌐 NodeMCU 🌐</rainbow>

the wifi girlies are HERE and she is iconic 🌈

- **`board_espressif32_nodemcu-32s`** — platform `platform_espressif32`, debug **External**, MCU `ESP32`, 240MHz, flash 4MB, RAM 320KB 🔥

---

## <rainbow>🧚 Nordic 🧚</rainbow>

low-power legends, bluetooth queens, no cap 💜

- **`board_nordicnrf51_nrf51_beacon`** — platform `platform_nordicnrf51`, debug **On-board**, MCU `NRF51822`, 32MHz, flash 256KB, RAM 32KB 🦋
- **`board_nordicnrf52_thingy_52`** — platform `platform_nordicnrf52`, debug **External**, MCU `NRF52832`, 64MHz, flash 512KB, RAM 64KB 🦋

…and the board table keeps going, bestie, we're <pink>so</pink> back in it. Grab a snack. 🍓

### The Nordic nRF51 / nRF52 girlies ✨

- **`board_nordicnrf51_nrf51_dongle`** — platform `platform_nordicnrf51`, debug <cyan>On-board</cyan>, MCU `NRF51822`, frequency `32MHz`, flash `256KB`, RAM `32KB`
- **`board_nordicnrf51_nrf51_mkit`** — platform `platform_nordicnrf51`, debug <cyan>On-board</cyan>, MCU `NRF51822`, frequency `16MHz`, flash `128KB`, RAM `16KB`
- **`board_nordicnrf51_nrf51_dk`** — platform `platform_nordicnrf51`, debug <cyan>On-board</cyan>, MCU `NRF51822`, frequency `32MHz`, flash `256KB`, RAM `32KB`
- **`board_nordicnrf52_nrf52_dk`** — platform `platform_nordicnrf52`, debug <cyan>On-board</cyan>, MCU `NRF52832`, frequency `64MHz`, flash `512KB`, RAM `64KB`
- **`board_nordicnrf52_nrf52840_dk`** — platform `platform_nordicnrf52`, debug <cyan>On-board</cyan>, MCU `NRF52840`, frequency `64MHz`, flash `1MB`, RAM `256KB`
- **`board_nordicnrf52_nrf52840_dk_adafruit`** — platform `platform_nordicnrf52`, debug <cyan>On-board</cyan>, MCU `NRF52840`, frequency `64MHz`, flash `796KB`, RAM `243KB`

---

### Nuclei 🌸

- **`board_nuclei_gd32vf103v_rvstar`** — platform `platform_nuclei`, debug <cyan>On-board</cyan>, MCU `GD32VF103VBT6`, frequency `108MHz`, flash `128KB`, RAM `32KB`
- **`board_nuclei_hbird_eval`** — platform `platform_nuclei`, debug <cyan>On-board</cyan>, MCU `HUMMINGBIRD`, frequency `5MHz`, flash `64KB`, RAM `64KB`

---

### OLIMEX 💅

> yes, this one is all caps in the source. we respect the branding. 🎀

- **`board_espressif32_esp32-devkitlipo`** — platform `platform_espressif32`, debug <purple>External</purple>, MCU `ESP32`, frequency `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_esp32-evb`** — platform `platform_espressif32`, debug <purple>External</purple>, MCU `ESP32`, frequency `240MHz`, flash `4MB`, RAM `320KB`
- **`board_espressif32_esp32-gateway`** — platform `platform_espressif32`, debug <purple>External</purple>, MCU `ESP32`, frequency `240MHz`, flash `4MB`, RAM `320KB`

---

### OSHChip 🦋

- **`board_nordicnrf51_oshchip`** — platform `platform_nordicnrf51`, debug <purple>External</purple>, MCU `NRF51822`, frequency `32MHz`, flash `256KB`, RAM `32KB`

---

### Olimex 🫶

> and *this* one is lowercase-ish Olimex, which is a <yellow>whole different group</yellow> from OLIMEX up there. we do not make the rules, we just report them fr fr.

- **`board_ststm32_olimexino`** — platform `platform_ststm32`, debug <purple>External</purple>, MCU `STM32F103RBT6`, frequency `72MHz`, flash `128KB`, RAM `20KB`
- **`board_ststm32_olimex_p405`** — platform `platform_ststm32`, debug <purple>External</purple>, MCU `STM32F405RGT6`, frequency `168MHz`, flash `1MB`, RAM `192KB`
- **`board_ststm32_olimex_e407`** — platform `platform_ststm32`, debug <purple>External</purple>, MCU `STM32F407ZGT6`, frequency `168MHz`, flash `1MB`, RAM `128KB`
- **`board_ststm32_olimex_h407`** — platform `platform_ststm32`, debug <purple>External</purple>, MCU `STM32F407ZGT6`, frequency `168MHz`, flash `1MB`, RAM `128KB`

---

<purple>lowkey obsessed with how many of these exist, and there's <rainbow>more</rainbow> coming, so stay with me 👑</purple>

## 🫶 OpenEnergyMonitor 🫶

- **`board_atmelavr_emonpi`** — platform is `platform_atmelavr`, debug is <cyan>On-board</cyan>, MCU is `ATMEGA328P`, frequency is `16MHz`, flash is `30KB`, RAM is `2KB` 💖

---

## 🌈 PanStamp 🌈

- **`board_atmelavr_panStampAVR`** — platform is `platform_atmelavr`, debug is <cyan>On-board</cyan>, MCU is `ATMEGA328P`, frequency is `8MHz` (yes bestie, *eight*, not sixteen, she's a chill one), flash is `31.50KB`, RAM is `2KB` ✨

---

## 🦋 Particle 🦋

okay so Particle came in with a whole trio and every single one of them is built different — and by "built different" I mean built *exactly the same*, love that for them 💅

- **`board_nordicnrf52_particle_argon`** — platform is `platform_nordicnrf52`, debug is <cyan>External</cyan>, MCU is `NRF52840`, frequency is `64MHz`, flash is `796KB`, RAM is `243KB`
- **`board_nordicnrf52_particle_boron`** — platform is `platform_nordicnrf52`, debug is <cyan>External</cyan>, MCU is `NRF52840`, frequency is `64MHz`, flash is `796KB`, RAM is `243KB`
- **`board_nordicnrf52_particle_xenon`** — platform is `platform_nordicnrf52`, debug is <cyan>External</cyan>, MCU is `NRF52840`, frequency is `64MHz`, flash is `796KB`, RAM is `243KB`

> three boards, one stat sheet, zero notes. iconic behavior, no cap 👑

---

## 🎀 Piconomix 🎀

- **`board_ststm32_piconomix_px_her0`** — platform is `platform_ststm32`, debug is <cyan>External</cyan>, MCU is `STM32L072RB`, frequency is `32MHz`, flash is `128KB`, RAM is `20KB` 🌸

---

## ⭐ Pololu Corporation ⭐

- **`board_atmelavr_a-star32U4`** — platform is `platform_atmelavr`, debug is <cyan>On-board</cyan>, MCU is `ATMEGA32U4`, frequency is `16MHz`, flash is `28KB`, RAM is `2.50KB` 🍓

---

## 💜 PrntrBoard 💜

- **`board_ststm32_prntr_v2`** — platform is `platform_ststm32`, debug is <cyan>External</cyan>, MCU is `STM32F407RE`, frequency is `168MHz`, flash is `512KB`, RAM is `192KB` 🔥

---

## 🧚 Prusa 3D 🧚

two boards, and bestie the glow-up between them is *real* — one's a lil 8-bit baby and the other is the beefy one 😭

- **`board_atmelavr_prusa_mm_control`** — platform is `platform_atmelavr`, debug is <cyan>On-board</cyan>, MCU is `ATMEGA32U4`, frequency is `16MHz`, flash is `28KB`, RAM is `2.50KB`
- **`board_atmelavr_prusa_rambo`** — platform is `platform_atmelavr`, debug is <cyan>On-board</cyan>, MCU is `ATMEGA2560`, frequency is `16MHz`, flash is `252KB`, RAM is `8KB` 💀

---

## 🌈 Punch Through 🌈

and here's where we're rolling up on the next crew — the column headers for this batch are <purple>`Name`</purple>, <purple>`Platform`</purple>, <purple>`Debug`</purple>, <purple>`MCU`</purple>, <purple>`Frequency`</purple>, <purple>`Flash`</purple>, <purple>`RAM`</purple>, so stay tuned because the boards themselves are coming in the next chunk 🫶✨

- **`board_atmelavr_lightblue-bean`** — platform: `platform_atmelavr` ✨ debug: On-board ✨ MCU: `ATMEGA328P` ✨ frequency: 8MHz ✨ flash: 31.50KB ✨ RAM: 2KB
- **`board_atmelavr_lightblue-beanplus`** — platform: `platform_atmelavr` ✨ debug: On-board ✨ MCU: `ATMEGA328P` ✨ frequency: 16MHz ✨ flash: 31.50KB ✨ RAM: 2KB

---

<pink>**Pycom Ltd.**</pink> 💖 besties of the wireless world, okay

- **`board_espressif32_lopy`** — platform: `platform_espressif32` ✨ debug: External ✨ MCU: `ESP32` ✨ frequency: 240MHz ✨ flash: 4MB ✨ RAM: 320KB
- **`board_espressif32_lopy4`** — platform: `platform_espressif32` ✨ debug: External ✨ MCU: `ESP32` ✨ frequency: 240MHz ✨ flash: 4MB ✨ RAM: 1.25MB

---

<pink>**Quirkbot**</pink> 🦋 the cutest little thing ngl

- **`board_atmelavr_quirkbot`** — platform: `platform_atmelavr` ✨ debug: On-board ✨ MCU: `ATMEGA32U4` ✨ frequency: 8MHz ✨ flash: 28KB ✨ RAM: 2.50KB

---

<pink>**RAK**</pink> 🌸 trackers, but make it LoRa

- **`board_ststm32_rak811_tracker`** — platform: `platform_ststm32` ✨ debug: External ✨ MCU: `STM32L151RBT6` ✨ frequency: 32MHz ✨ flash: 128KB ✨ RAM: 16KB
- **`board_ststm32_rak811_tracker_32`** — platform: `platform_ststm32` ✨ debug: External ✨ MCU: `STM32L151RBT6` ✨ frequency: 32MHz ✨ flash: 128KB ✨ RAM: 32KB

---

<pink>**RUMBA**</pink> 🔥 one board, one vibe, `180MHz` of pure main character energy

- **`board_ststm32_rumba32_f446ve`** — platform: `platform_ststm32` ✨ debug: External ✨ MCU: `STM32F446RET6` ✨ frequency: 180MHz ✨ flash: 512KB ✨ RAM: 128KB

---

<pink>**RedBearLab**</pink> 🎀 the whole blended family is here and honestly? iconic

- **`board_nordicnrf51_redBearLabBLENano`** — platform: `platform_nordicnrf51` ✨ debug: On-board ✨ MCU: `NRF51822` ✨ frequency: 16MHz ✨ flash: 256KB ✨ RAM: 32KB
- **`board_nordicnrf52_redbear_blenano2`** — platform: `platform_nordicnrf52` ✨ debug: On-board ✨ MCU: `NRF52832` ✨ frequency: 64MHz ✨ flash: 512KB ✨ RAM: 64KB
- **`board_atmelavr_blend`** — platform: `platform_atmelavr` ✨ debug: On-board ✨ MCU: `ATMEGA32U4` ✨ frequency: 16MHz ✨ flash: 28KB ✨ RAM: 2.50KB
- **`board_nordicnrf52_redbear_blend2`** — platform: `platform_nordicnrf52` ✨ debug: On-board ✨ MCU: `NRF52832` ✨ frequency: 64MHz ✨ flash: 512KB ✨ RAM: 64KB
- **`board_atmelavr_blendmicro16`** — platform: `platform_atmelavr` ✨ debug: On-board ✨ MCU: `ATMEGA32U4` ✨ frequency: 16MHz ✨ flash: 28KB ✨ RAM: 2.50KB
- **`board_atmelavr_blendmicro8`** — platform: `platform_atmelavr` ✨ debug: On-board ✨ MCU: `ATMEGA32U4` ✨ frequency: 8MHz ✨ flash: 28KB ✨ RAM: 2.50KB

> <purple>bestie note 💜 the same MCU showing up at two different frequencies (`16MHz` vs `8MHz`, `blendmicro16` vs `blendmicro8`) is not a typo, it's literally two different entries. keep them separate, don't be out here merging them 🙈</purple>

<pink>okay so the nordicnrf51 girlies are signing off with one last icon before we move on:</pink> ✨

- **`board_nordicnrf51_redBearLab`** — platform <cyan>`platform_nordicnrf51`</cyan>, debug <mint>On-board</mint>, MCU <yellow>`NRF51822`</yellow>, <purple>16MHz</purple>, flash <blue>256KB</blue>, RAM <hotpink>16KB</hotpink> 🎀

---

### 💖 RemRam

one board, one vibe, no notes:

- **`board_ststm32_remram_v1`** — platform <cyan>`platform_ststm32`</cyan>, debug <mint>On-board</mint>, MCU <yellow>`STM32F765VIT6`</yellow>, <purple>216MHz</purple>, flash <blue>2MB</blue>, RAM <hotpink>512KB</hotpink> 🔥

---

### 🧚 RepRap

the classic 3D-printer bestie herself:

- **`board_atmelavr_reprap_rambo`** — platform <cyan>`platform_atmelavr`</cyan>, debug <mint>On-board</mint>, MCU <yellow>`ATMEGA2560`</yellow>, <purple>16MHz</purple>, flash <blue>252KB</blue>, RAM <hotpink>8KB</hotpink> 🌈

---

### 🦋 ReprapWorld

ngl this one went full external-debugger mode and we respect it:

- **`board_atmelsam_minitronics20`** — platform <cyan>`platform_atmelsam`</cyan>, debug <mint>External</mint>, MCU <yellow>`SAMD21J18A`</yellow>, <purple>48MHz</purple>, flash <blue>256KB</blue>, RAM <hotpink>32KB</hotpink> 💅

---

### 🌸 RobotDyn

the blackpill that ate, fr fr:

- **`board_ststm32_robotdyn_blackpill_f303cc`** — platform <cyan>`platform_ststm32`</cyan>, debug <mint>External</mint>, MCU <yellow>`STM32F303CCT6`</yellow>, <purple>72MHz</purple>, flash <blue>256KB</blue>, RAM <hotpink>40KB</hotpink> 👑

---

### 🍓 RoboticsBrno

ESP32 girlie with an external debugger, she's doing the most and honestly? good for her:

- **`board_espressif32_alksesp32`** — platform <cyan>`platform_espressif32`</cyan>, debug <mint>External</mint>, MCU <yellow>`ESP32`</yellow>, <purple>240MHz</purple>, flash <blue>4MB</blue>, RAM <hotpink>320KB</hotpink> ⭐

---

### 🔥 RushUp

two boards, both on-board debug, both cloud-named, both slaying:

- **`board_ststm32_cloud_jam`** — platform <cyan>`platform_ststm32`</cyan>, debug <mint>On-board</mint>, MCU <yellow>`STM32F401RET6`</yellow>, <purple>84MHz</purple>, flash <blue>512KB</blue>, RAM <hotpink>96KB</hotpink> 💜

- **`board_ststm32_cloud_jam_l4`** — platform <cyan>`platform_ststm32`</cyan>, debug <mint>On-board</mint>, MCU <yellow>`STM32L476RGT6`</yellow>, <purple>80MHz</purple>, flash <blue>1MB</blue>, RAM <hotpink>128KB</hotpink> 🫶

---

### 🎀 SG-O

one board, external debug, four whole megabytes of flash to play with:

- **`board_espressif32_sg-o_airMon`** — platform <cyan>`platform_espressif32`</cyan>, debug <mint>External</mint>, MCU <yellow>`ESP32`</yellow>, <purple>240MHz</purple>, flash <blue>4MB</blue>, RAM <hotpink>320KB</hotpink> 😭

---

### 🌈 SODAQ

<lavender>okay bestie we are literally arriving at the SODAQ section and the table is gonna keep going in the next chunk — hold my hand, more boards incoming</lavender> 🦋

- **`board_atmelsam_sodaq_autonomo`** — platform `platform_atmelsam`, debug **External**, MCU `SAMD21J18A`, `48MHz`, flash `256KB`, RAM `32KB` 💖
- **`board_atmelsam_sodaq_explorer`** — platform `platform_atmelsam`, debug **External**, MCU `SAMD21J18A`, `48MHz`, flash `256KB`, RAM `32KB` ✨
- **`board_atmelavr_sodaq_galora`** — platform `platform_atmelavr`, debug **On-board**, MCU `ATMEGA1284P`, `8MHz`, flash `127KB`, RAM `16KB` 🎀
- **`board_atmelavr_sodaq_mbili`** — platform `platform_atmelavr`, debug **On-board**, MCU `ATMEGA1284P`, `8MHz`, flash `127KB`, RAM `16KB` 🦋
- **`board_atmelavr_sodaq_moja`** — platform `platform_atmelavr`, debug **On-board**, MCU `ATMEGA328P`, `8MHz`, flash `31.50KB`, RAM `2KB` 🌸
- **`board_atmelavr_sodaq_ndogo`** — platform `platform_atmelavr`, debug **On-board**, MCU `ATMEGA1284P`, `8MHz`, flash `127KB`, RAM `16KB` 💅
- **`board_atmelsam_sodaq_one`** — platform `platform_atmelsam`, debug **External**, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🫶
- **`board_atmelsam_sodaq_sara`** — platform `platform_atmelsam`, debug **External**, MCU `SAMD21J18A`, `48MHz`, flash `256KB`, RAM `32KB` 😭
- **`board_atmelsam_sodaq_sff`** — platform `platform_atmelsam`, debug **External**, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 🔥
- **`board_atmelavr_sodaq_tatu`** — platform `platform_atmelavr`, debug **On-board**, MCU `ATMEGA1284P`, `8MHz`, flash `127KB`, RAM `16KB` 👑

---

okay bestie now we slid into a whole new vibe, the <cyan>ST</cyan> section is giving very much <rainbow>main character energy</rainbow> 🌈 and honestly? the STM32 lineup ate 💅

- **`board_ststm32_disco_f412zg`** — platform `platform_ststm32`, debug **On-board**, MCU `STM32F412ZGT6`, `100MHz`, flash `1MB`, RAM `256KB` ⭐
- **`board_ststm32_disco_f723ie`** — platform `platform_ststm32`, debug **On-board**, MCU `STM32F723IEK6`, `216MHz`, flash `512KB`, RAM `192KB` 💜
- **`board_ststm32_st3dp001_eval`** — platform `platform_ststm32`, debug **On-board**, MCU `STM32F401VGT6`, `84MHz`, flash `512KB`, RAM `96KB` 🧚
- **`board_ststm32_black_f407ve`** — platform `platform_ststm32`, debug **External**, MCU `STM32F407VET6`, `168MHz`, flash `512KB`, RAM `128KB` 🍓
- **`board_ststm32_black_f407vg`** — platform `platform_ststm32`, debug **External**, MCU `STM32F407VGT6`, `168MHz`, flash `512KB`, RAM `128KB` 🙈
- **`board_ststm32_black_f407ze`** — platform `platform_ststm32`, debug **External**, MCU `STM32F407ZET6`, `168MHz`, flash `512KB`, RAM `128KB` 💀
- **`board_ststm32_black_f407zg`** — platform `platform_ststm32`, debug **External**, MCU `STM32F407ZGT6`, `168MHz`, flash `1MB`, RAM `128KB` 🔥
- **`board_ststm32_blackpill_f401cc`** — platform `platform_ststm32`, debug **External**, MCU `STM32F401CCT6`, `84MHz`, flash `256KB`, RAM `64KB` ✨
- **`board_ststm32_blue_f407ve_mini`** — platform `platform_ststm32`, debug **External**, MCU `STM32F407VET6`, `168MHz`, flash `512KB`, RAM `128KB` 🦋
- **`board_ststm32_coreboard_f401rc`** — platform `platform_ststm32`, debug **External**, MCU `STM32F401RCT6`, `84MHz`, flash `256KB`, RAM `64KB` 🌸
- **`board_ststm32_nucleo_g071rb`** — platform `platform_ststm32`, debug **External**, MCU `STM32G071RBT6`, `64MHz`, flash `128KB`, RAM `36KB` 💖
- **`board_ststm32_nucleo_g431kb`** — platform `platform_ststm32`, debug **External**, MCU `STM32G431KBT6`, `170MHz`, flash `128KB`, RAM `32KB` 👑

ngl bestie the way every single one of these has its `debug` flavor listed as either **On-board** or **External** is so satisfying, it's giving organized queen behavior 💅 and yes, we kept <hotpink>every MCU name, every `MHz`, every `KB` and `MB`</hotpink> exactly as they were, no cap 🫶

okay bestie we're still in the middle of the board table, no worries, just keep scrolling with me 💅 every single row stays, nothing gets skipped, periodt ✨

- **`board_ststm32_nucleo_g431rb`** — `platform_ststm32` · External · `STM32G431RBT6` · `170MHz` · `128KB` · `32KB`
- **`board_ststm32_nucleo_g474re`** — `platform_ststm32` · External · `STM32G474RET6` · `170MHz` · `512KB` · `128KB`
- **`board_ststm32_nucleo_wb55rg_p`** — `platform_ststm32` · On-board · `STM32WB55RG` · `64MHz` · `512KB` · `192.00KB`
- **`board_ststm32_rhf76_052`** — `platform_ststm32` · External · `STM32L051C8T6` · `32MHz` · `64KB` · `8KB`
- **`board_ststm32_disco_f334c8`** — `platform_ststm32` · On-board · `STM32F334C8T6` · `72MHz` · `64KB` · `12KB`
- **`board_ststm32_disco_f401vc`** — `platform_ststm32` · On-board · `STM32F401VCT6` · `84MHz` · `256KB` · `64KB`
- **`board_ststm32_disco_f411ve`** — `platform_ststm32` · On-board · `STM32F411VET6` · `100MHz` · `512KB` · `128KB`
- **`board_ststm32_disco_f413zh`** — `platform_ststm32` · On-board · `STM32F413ZHT6` · `100MHz` · `512KB` · `128KB`
- **`board_ststm32_disco_f429zi`** — `platform_ststm32` · On-board · `STM32F429ZIT6` · `180MHz` · `2MB` · `256KB`
- **`board_ststm32_disco_f469ni`** — `platform_ststm32` · On-board · `STM32F469NIH6` · `180MHz` · `1MB` · `384KB`
- **`board_ststm32_disco_f746ng`** — `platform_ststm32` · On-board · `STM32F746NGH6` · `216MHz` · `1MB` · `320KB`
- **`board_ststm32_disco_f769ni`** — `platform_ststm32` · On-board · `STM32F769NIH6` · `216MHz` · `1MB` · `512KB`
- **`board_ststm32_disco_l053c8`** — `platform_ststm32` · On-board · `STM32L053C8T6` · `32MHz` · `64KB` · `8KB`
- **`board_ststm32_disco_l100rc`** — `platform_ststm32` · On-board · `STM32L100RCT6` · `32MHz` · `256KB` · `16KB`
- **`board_ststm32_disco_l476vg`** — `platform_ststm32` · On-board · `STM32L476VGT6` · `80MHz` · `1MB` · `128KB`
- **`board_ststm32_disco_l496ag`** — `platform_ststm32` · On-board · `STM32L496AGI6` · `80MHz` · `1MB` · `320KB`
- **`board_ststm32_disco_l475vg_iot01a`** — `platform_ststm32` · On-board · `STM32L475VGT6` · `80MHz` · `1MB` · `128KB`
- **`board_ststm32_disco_l072cz_lrwan1`** — `platform_ststm32` · On-board · `STM32L072CZ` · `32MHz` · `192KB` · `20KB`
- **`board_ststm32_disco_f072rb`** — `platform_ststm32` · On-board · `STM32F072RBT6` · `48MHz` · `128KB` · `16KB`
- **`board_ststm32_nucleo_f030r8`** — `platform_ststm32` · On-board · `STM32F030R8T6` · `48MHz` · `64KB` · `8KB`
- **`board_ststm32_nucleo_f031k6`** — `platform_ststm32` · On-board · `STM32F031K6T6` · `48MHz` · `32KB` · `4KB`
- **`board_ststm32_nucleo_f042k6`** — `platform_ststm32` · On-board · `STM32F042K6T6` · `48MHz` · `32KB` · `6KB`
- **`board_ststm32_nucleo_f070rb`** — `platform_ststm32` · On-board · `STM32F070RBT6` · `48MHz` · `128KB` · `16KB`
- **`board_ststm32_nucleo_f072rb`** — `platform_ststm32` · On-board · `STM32F072RBT6` · `48MHz` · `128KB` · `16KB`

> ngl bestie that's a LOT of `platform_ststm32` boards and we are <hotpink>not</hotpink> done yet, the table keeps going 😭 hang in there, every single row is getting its moment 💖

- **`board_ststm32_nucleo_f091rc`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F091RCT6`, <cyan>48MHz</cyan>, flash `256KB`, RAM `32KB` 💖
- **`board_ststm32_nucleo_f103rb`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F103RBT6`, <cyan>72MHz</cyan>, flash `128KB`, RAM `20KB`
- **`board_ststm32_nucleo_f207zg`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F207ZGT6`, <cyan>120MHz</cyan>, flash `1MB`, RAM `128KB` ✨
- **`board_ststm32_nucleo_f302r8`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F302R8T6`, <cyan>72MHz</cyan>, flash `64KB`, RAM `16KB`
- **`board_ststm32_nucleo_f303k8`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F303K8T6`, <cyan>72MHz</cyan>, flash `64KB`, RAM `12KB`
- **`board_ststm32_nucleo_f303re`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F303RET6`, <cyan>72MHz</cyan>, flash `512KB`, RAM `64KB`
- **`board_ststm32_nucleo_f303ze`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F303ZET6`, <cyan>72MHz</cyan>, flash `512KB`, RAM `64KB`
- **`board_ststm32_nucleo_f334r8`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F334R8T6`, <cyan>72MHz</cyan>, flash `64KB`, RAM `16KB`
- **`board_ststm32_nucleo_f401re`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F401RET6`, <cyan>84MHz</cyan>, flash `512KB`, RAM `96KB` 🦋
- **`board_ststm32_nucleo_f410rb`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F410RBT6`, <cyan>100MHz</cyan>, flash `128KB`, RAM `32KB`
- **`board_ststm32_nucleo_f411re`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F411RET6`, <cyan>100MHz</cyan>, flash `512KB`, RAM `128KB`
- **`board_ststm32_nucleo_f412zg`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F412ZGT6`, <cyan>100MHz</cyan>, flash `1MB`, RAM `256KB` 💅
- **`board_ststm32_nucleo_f413zh`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F413ZHT6`, <cyan>100MHz</cyan>, flash `512KB`, RAM `128KB`
- **`board_ststm32_nucleo_f429zi`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F429ZIT6`, <cyan>180MHz</cyan>, flash `2MB`, RAM `256KB` 🔥
- **`board_ststm32_nucleo_f439zi`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F439ZIT6`, <cyan>180MHz</cyan>, flash `2MB`, RAM `256KB`
- **`board_ststm32_nucleo_f446re`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F446RET6`, <cyan>180MHz</cyan>, flash `512KB`, RAM `128KB`
- **`board_ststm32_nucleo_f446ze`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F446ZET6`, <cyan>180MHz</cyan>, flash `512KB`, RAM `128KB`
- **`board_ststm32_nucleo_f722ze`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F722ZET6`, <cyan>216MHz</cyan>, flash `512KB`, RAM `256KB` ⭐
- **`board_ststm32_nucleo_f746zg`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F746ZGT6`, <cyan>216MHz</cyan>, flash `1MB`, RAM `320KB`
- **`board_ststm32_nucleo_f756zg`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F756ZG`, <cyan>216MHz</cyan>, flash `1MB`, RAM `320KB` 🌈
- **`board_ststm32_nucleo_f767zi`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32F767ZIT6`, <cyan>216MHz</cyan>, flash `2MB`, RAM `512KB`
- **`board_ststm32_nucleo_h743zi`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32H743ZIT6`, <cyan>400MHz</cyan>, flash `2MB`, RAM `512KB` 👑 like ok that clock speed?? main character energy fr
- **`board_ststm32_nucleo_l011k4`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32L011K4T6`, <cyan>32MHz</cyan>, flash `16KB`, RAM `2KB` 🍓 smol but valid
- **`board_ststm32_nucleo_l031k6`** — platform `platform_ststm32`, debug probe <pink>On-board</pink>, chip `STM32L031K6T6`, <cyan>32MHz</cyan>, flash `32KB`, RAM `8KB` 🌸

---

<purple>okay so that's the whole Nucleo lineup bestie, every single one accounted for, no cap 💜</purple> Each one rides with `platform_ststm32`, each one's got an <pink>On-board</pink> debug probe so you don't gotta go buy a separate ST-Link, and the flash + RAM numbers are right there so you can vibe check before you flash something cursed onto a 2KB RAM board 😭

<purple>okay the board list just keeps GOING and honestly? we love that for us 💅</purple> still the same table, still eating, no crumbs:

- **`board_ststm32_nucleo_l053r8`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L053R8T6` · `32MHz` · `64KB` flash · `8KB` RAM 🌸
- **`board_ststm32_nucleo_l073rz`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L073RZ` · `32MHz` · `192KB` flash · `20KB` RAM ✨
- **`board_ststm32_nucleo_l152re`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L152RET6` · `32MHz` · `512KB` flash · `80KB` RAM 🎀
- **`board_ststm32_nucleo_l412kb`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L412KBU6` · `80MHz` · `128KB` flash · `40KB` RAM 🦋
- **`board_ststm32_nucleo_l432kc`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L432KCU6` · `80MHz` · `256KB` flash · `64KB` RAM 💜
- **`board_ststm32_nucleo_l433rc_p`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L433RC` · `80MHz` · `256KB` flash · `64KB` RAM ⭐
- **`board_ststm32_nucleo_l452re`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L452RET6` · `80MHz` · `256KB` flash · `64KB` RAM 🌈
- **`board_ststm32_nucleo_l476rg`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L476RGT6` · `80MHz` · `1MB` flash · `128KB` RAM 🔥
- **`board_ststm32_nucleo_l486rg`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L486RGT6` · `80MHz` · `1MB` flash · `128KB` RAM 👑
- **`board_ststm32_nucleo_l496zg`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L496ZGT6` · `80MHz` · `1MB` flash · `128KB` RAM 💖
- **`board_ststm32_nucleo_l496zg_p`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L496ZGT6P` · `80MHz` · `1MB` flash · `320KB` RAM 🧚
- **`board_ststm32_nucleo_l4r5zi`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L4R5ZIT6` · `120MHz` · `2MB` flash · `640KB` RAM 😭

<hotpink>and then the DISCO boards pull up like</hotpink> 🕺

- **`board_ststm32_disco_f030r8`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32F030R8T6` · `48MHz` · `64KB` flash · `8KB` RAM 🍓
- **`board_ststm32_disco_f051r8`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32F051R8T6` · `48MHz` · `64KB` flash · `8KB` RAM 🌸
- **`board_ststm32_disco_f303vc`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32F303VCT6` · `72MHz` · `256KB` flash · `48KB` RAM ✨
- **`board_ststm32_disco_f407vg`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32F407VGT6` · `168MHz` · `1MB` flash · `128KB` RAM 🔥

<lavender>lowkey the `168MHz` one is giving main character energy ngl</lavender> 💅

- **`board_ststm32_eval_l073z`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L073VZT6` · `32MHz` · `192KB` flash · `20KB` RAM 🎀
- **`board_ststm32_disco_l152rb`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32L152RBT6` · `32MHz` · `128KB` flash · `16KB` RAM 🦋
- **`board_ststm32_disco_f100rb`** — <cyan>`platform_ststm32`</cyan> · On-board · `STM32F100RBT6` · `24MHz` · `128KB` flash · `8KB` RAM 💜
- **`board_ststm8_stm8sdisco`** — <mint>`platform_ststm8`</mint> · On-board · `STM8S105C6T6` · `16MHz` · `32KB` flash · `2KB` RAM ⭐

<yellow>wait, a whole different platform in the middle of this??</yellow> <rainbow>we stan a crossover episode</rainbow> 🌈

and now the **External** girlies, okay:

- **`board_ststm32_steval_fcu001v1`** — <cyan>`platform_ststm32`</cyan> · External · `STM32F401CCU6` · `84MHz` · `256KB` flash · `64KB` RAM 👑
- **`board_ststm32_eval_f107vc`** — <cyan>`platform_ststm32`</cyan> · External · `STM32F107VCT6` · `72MHz` · `256KB` flash · `64KB` RAM 💖
- **`board_ststm32_eval_f373vc`** — <cyan>`platform_ststm32`</cyan> · External · `STM32F373VCT6` · `72MHz` · `256KB` flash · `32KB` RAM 🧚
- **`board_ststm32_eval_f072vb`** — <cyan>`platform_ststm32`</cyan> · External · `STM32F072VBT6` · `48MHz` · `128KB` flash · `16KB` RAM 🍓

<hotpink>fr fr this table does NOT stop and we're not even done</hotpink> 💀 the rows keep coming bestie, stay with me 🫶

---

okay bestie we're still *deep* in the board table, so let's just keep the rows coming 💅

- **`board_ststm32_disco_f750n8`** — platform `platform_ststm32`, debug *On-board*, MCU `STM32F750N8H6`, `216MHz`, flash `64KB`, RAM `340KB` 💖
- **`board_ststm32_disco_h743xi`** — platform `platform_ststm32`, debug *On-board*, MCU `STM32H747XIH6`, `400MHz`, flash `2MB`, RAM `512KB` 🔥
- **`board_ststm32_steval_mksboxv1`** — platform `platform_ststm32`, debug *External*, MCU `STM32L4R9ZI`, `120MHz`, flash `2MB`, RAM `640KB` 🦋

---

### ✨ SainSmart ✨

the columns are Name, Platform, Debug, MCU, Frequency, Flash, RAM — same lineup every single time, we stay consistent 🎀

- **`board_atmelsam_sainSmartDue`** — platform `platform_atmelsam`, debug *External*, MCU `AT91SAM3X8E`, `84MHz`, flash `512KB`, RAM `96KB` ✨
- **`board_atmelsam_sainSmartDueUSB`** — platform `platform_atmelsam`, debug *External*, MCU `AT91SAM3X8E`, `84MHz`, flash `512KB`, RAM `96KB` 🌸

---

### ✨ Sanguino ✨

six boards, one vibe, columns are still Name, Platform, Debug, MCU, Frequency, Flash, RAM 💜

- **`board_atmelavr_sanguino_atmega1284p`** — platform `platform_atmelavr`, debug *On-board*, MCU `ATMEGA1284P`, `16MHz`, flash `127KB`, RAM `16KB` 🌈
- **`board_atmelavr_sanguino_atmega1284_8m`** — platform `platform_atmelavr`, debug *On-board*, MCU `ATMEGA1284P`, `8MHz`, flash `127KB`, RAM `16KB` 🦋
- **`board_atmelavr_sanguino_atmega644`** — platform `platform_atmelavr`, debug *On-board*, MCU `ATMEGA644`, `16MHz`, flash `63KB`, RAM `4KB` 🍓
- **`board_atmelavr_sanguino_atmega644_8m`** — platform `platform_atmelavr`, debug *On-board*, MCU `ATMEGA644`, `8MHz`, flash `63KB`, RAM `4KB` 🍓
- **`board_atmelavr_sanguino_atmega644p`** — platform `platform_atmelavr`, debug *On-board*, MCU `ATMEGA644P`, `16MHz`, flash `63KB`, RAM `4KB` 🧚
- **`board_atmelavr_sanguino_atmega644p_8m`** — platform `platform_atmelavr`, debug *On-board*, MCU `ATMEGA644P`, `8MHz`, flash `63KB`, RAM `4KB` 🧚

---

### ✨ Seeed ✨

(Name, Platform, Debug, MCU, Frequency, Flash, RAM — you already know the drill 🫶)

- **`board_atmelsam_seeeduino_lorawan`** — platform `platform_atmelsam`, debug *External*, MCU `SAMD21G18A`, `48MHz`, flash `256KB`, RAM `32KB` 💖

---

### ✨ SeeedStudio ✨

four more, columns are Name, Platform, Debug, MCU, Frequency, Flash, RAM, and they are all *serving* 🔥

- **`board_nordicnrf51_seeedArchBLE`** — platform `platform_nordicnrf51`, debug *On-board*, MCU `NRF51822`, `16MHz`, flash `128KB`, RAM `16KB` ⭐
- **`board_nordicnrf51_seeedArchLink`** — platform `platform_nordicnrf51`, debug *On-board*, MCU `NRF51822`, `16MHz`, flash `256KB`, RAM `16KB` ⭐
- **`board_ststm32_seeedArchMax`** — platform `platform_ststm32`, debug *On-board*, MCU `STM32F407VET6`, `168MHz`, flash `512KB`, RAM `192KB` 👑
- **`board_nxplpc_seeedArchPro`** — platform `platform_nxplpc`, debug *On-board*, MCU `LPC1768`, `96MHz`, flash `512KB`, RAM `64KB` 💅

---

and yeah, the table just keeps unfurling like a little scroll bestie, we are *not* done yet 🌸

okay bestie we are still deep in the board table, no thoughts just rows — same columns every time: name, platform, debug, MCU, frequency, flash, RAM. keep scrolling, we got this 💪✨

- **`board_nordicnrf51_seeedTinyBLE`** — platform: `platform_nordicnrf51` · debug: On-board · MCU: `NRF51822` · `16MHz` · flash `256KB` · RAM `16KB` 🦋
- **`board_ststm32_wio_3g`** — platform: `platform_ststm32` · debug: On-board · MCU: `STM32F439VI` · `180MHz` · flash `2MB` · RAM `256KB` 💅
- **`board_atmelavr_seeeduino`** — platform: `platform_atmelavr` · debug: On-board · MCU: `ATMEGA328P` · `16MHz` · flash `31.50KB` · RAM `2KB` 🍓
- **`board_gd32v_wio_lite_risc-v`** — platform: `platform_gd32v` · debug: External · MCU: `GD32VF103CBT6` · `108MHz` · flash `128KB` · RAM `32KB` 🔥

---

### 🌸 Semtech

- **`board_ststm32_mote_l152rc`** — platform: `platform_ststm32` · debug: External · MCU: `STM32L152RC` · `32MHz` · flash `256KB` · RAM `32KB` 💖

---

### 🌈 SiFive

- **`board_sifive_hifive-unleashed`** — platform: `platform_sifive` · debug: On-board · MCU: `FU540` · `1500MHz` · flash `32MB` · RAM `8GB` 👑 (eight GIGABYTES of RAM on a board, the way that's unhinged and iconic)
- **`board_sifive_hifive1`** — platform: `platform_sifive` · debug: On-board · MCU: `FE310` · `320MHz` · flash `16MB` · RAM `16KB` ✨
- **`board_sifive_hifive1-revb`** — platform: `platform_sifive` · debug: On-board · MCU: `FE310` · `320MHz` · flash `16MB` · RAM `16KB` ✨

---

### 💜 Sigma Delta Technologies

- **`board_nordicnrf52_sdt52832b`** — platform: `platform_nordicnrf52` · debug: External · MCU: `NRF52832` · `64MHz` · flash `512KB` · RAM `64KB` 🎀

---

### 🧚 Silicognition

- **`board_espressif32_wesp32`** — platform: `platform_espressif32` · debug: External · MCU: `ESP32` · `240MHz` · flash `4MB` · RAM `320KB` 🌟

---

### ⭐ Silicon Labs

- **`board_siliconlabsefm32_efm32gg_stk3700`** — platform: `platform_siliconlabsefm32` · debug: On-board · MCU: `EFM32GG990F1024` · `48MHz` · flash `1MB` · RAM `128KB` 💖
- **`board_siliconlabsefm32_efm32lg_stk3600`** — platform: `platform_siliconlabsefm32` · debug: On-board · MCU: `EFM32LG990F256` · `48MHz` · flash `256KB` · RAM `32KB` 💖
- **`board_siliconlabsefm32_efm32wg_stk3800`** — platform: `platform_siliconlabsefm32` · debug: On-board · MCU: `EFM32WG990F256` · `48MHz` · flash `256KB` · RAM `32KB` 💖
- **`board_siliconlabsefm32_efm32zg_stk3200`** — platform: `platform_siliconlabsefm32` · debug: On-board · MCU: `EFM32ZG222F32` · `24MHz` · flash `32KB` · RAM `4KB` 🙈

---

> no cap, that's genuinely it for this slice — and the table is **still** not done, so don't you dare close the pager 😭💀 more rows incoming 🫶

- **`board_siliconlabsefm32_efm32hg_stk3400`** — platform: `platform_siliconlabsefm32` ✨, debug: On-board, MCU: `EFM32HG322F64`, frequency: 25MHz, flash: 64KB, RAM: 8KB 🦋
- **`board_siliconlabsefm32_efm32pg_stk3401`** — platform: `platform_siliconlabsefm32` ✨, debug: On-board, MCU: `EFM32PG1B200F256GM48`, frequency: 40MHz, flash: 256KB, RAM: 32KB 🦋
- **`board_siliconlabsefm32_tb_sense_12`** — platform: `platform_siliconlabsefm32` ✨, debug: On-board, MCU: `EFR32MG12P432F1024`, frequency: 40MHz, flash: 1MB, RAM: 256KB 🦋

---

## 🌸 Sipeed 🌸

okay bestie, we're entering the Sipeed section and it's giving <hotpink>RISC-V girlboss energy</hotpink> 💅 these boards are *so* fun, look at them:

- **`board_gd32v_gd32vf103v-eval`** — platform: `platform_gd32v` 🔥, debug: External, MCU: `GD32VF103VBT6`, frequency: 108MHz, flash: 128KB, RAM: 32KB ✨
- **`board_gd32v_sipeed-longan-nano`** — platform: `platform_gd32v` 🔥, debug: External, MCU: `GD32VF103CBT6`, frequency: 108MHz, flash: 128KB, RAM: 32KB ✨
- **`board_gd32v_sipeed-longan-nano-lite`** — platform: `platform_gd32v` 🔥, debug: External, MCU: `GD32VF103C8T6`, frequency: 108MHz, flash: 64KB, RAM: 20KB ✨
- **`board_kendryte210_sipeed-maix-bit`** — platform: `platform_kendryte210` 💜, debug: External, MCU: `K210`, frequency: 400MHz, flash: 16MB, RAM: 6MB 🚀
- **`board_kendryte210_sipeed-maix-bit-mic`** — platform: `platform_kendryte210` 💜, debug: External, MCU: `K210`, frequency: 400MHz, flash: 16MB, RAM: 6MB 🚀
- **`board_kendryte210_sipeed-maix-go`** — platform: `platform_kendryte210` 💜, debug: External, MCU: `K210`, frequency: 400MHz, flash: 16MB, RAM: 6MB 🚀
- **`board_kendryte210_sipeed-maix-one-dock`** — platform: `platform_kendryte210` 💜, debug: External, MCU: `K210`, frequency: 400MHz, flash: 16MB, RAM: 6MB 🚀
- **`board_kendryte210_sipeed-maixduino`** — platform: `platform_kendryte210` 💜, debug: External, MCU: `K210`, frequency: 400MHz, flash: 16MB, RAM: 6MB 🚀
- **`board_kendryte210_sipeed-MF1`** — platform: `platform_kendryte210` 💜, debug: External, MCU: `K210`, frequency: 400MHz, flash: 16MB, RAM: 6MB 🚀

> not me listing *six* whole `K210` boards with literally identical specs 💀 the Maix family said "one vibe, many form factors" and honestly? iconic 👑

---

## 🎀 Solder Splash Labs 🎀

- **`board_nxplpc_lpc1347`** — platform: `platform_nxplpc` 🌈, debug: External, MCU: `LPC1347`, frequency: 72MHz, flash: 64KB, RAM: 12KB 💖
- **`board_nxplpc_dipcortexm0`** — platform: `platform_nxplpc` 🌈, debug: External, MCU: `LPC11U24`, frequency: 50MHz, flash: 32KB, RAM: 8KB 💖

---

## ⭐ SparkFun ⭐

the sparkly-est of the vendors fr fr, let's go:

- **`board_atmelsam_sparkfun_samd21_9dof`** — platform: `platform_atmelsam` 🌸, debug: External, MCU: `SAMD21G18A`, frequency: 48MHz, flash: 256KB, RAM: 32KB ✨
- **`board_atmelavr_sparkfun_satmega128rfa1`** — platform: `platform_atmelavr` 🍓, debug: On-board, MCU: `ATMEGA128RFA1`, frequency: 16MHz, flash: 16KB, RAM: 124KB ✨
- **`board_atmelavr_sparkfun_digitalsandbox`** — platform: `platform_atmelavr` 🍓, debug: On-board, MCU: `ATMEGA328P`, frequency: 8MHz, flash: 31.50KB, RAM: 2KB ✨

> lowkey side-eyeing the `board_atmelavr_sparkfun_satmega128rfa1` numbers rn 😭 16KB flash but 124KB RAM? the math is mathing in a way that is *not* like other girls. but bestie, I'm just the messenger — that's literally what the table says, so that's what you get 💅

- **`board_atmelavr_sparkfun_fiov3`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA32U4`, freq: `8MHz`, flash: `28KB`, RAM: `2.50KB` 💖
- **`board_espressif32_sparkfun_lora_gateway_1-channel`** — platform: `platform_espressif32`, debug: External, MCU: `ESP32`, freq: `240MHz`, flash: `4MB`, RAM: `320KB` ✨
- **`board_atmelavr_sparkfun_makeymakey`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA32U4`, freq: `16MHz`, flash: `28KB`, RAM: `2.50KB` 🎀
- **`board_atmelavr_sparkfun_megapro8MHz`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA2560`, freq: `8MHz`, flash: `252KB`, RAM: `8KB` 🦋
- **`board_atmelavr_sparkfun_megapro16MHz`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA2560`, freq: `16MHz`, flash: `248KB`, RAM: `8KB` 🌸
- **`board_atmelavr_sparkfun_megamini`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA2560`, freq: `8MHz`, flash: `252KB`, RAM: `8KB` 💅
- **`board_atmelavr_uview`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA328P`, freq: `16MHz`, flash: `31.50KB`, RAM: `2KB` 🫶
- **`board_atmelavr_sparkfun_promicro8`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA32U4`, freq: `8MHz`, flash: `28KB`, RAM: `2.50KB` 😭
- **`board_atmelavr_sparkfun_promicro16`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA32U4`, freq: `16MHz`, flash: `28KB`, RAM: `2.50KB` 🔥
- **`board_atmelavr_sparkfun_qduinomini`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA32U4`, freq: `8MHz`, flash: `28KB`, RAM: `2.50KB` 👑
- **`board_atmelsam_sparkfun_qwiic_micro_samd21e`** — platform: `platform_atmelsam`, debug: External, MCU: `SAMD21E18A`, freq: `48MHz`, flash: `256KB`, RAM: `32KB` 🌈
- **`board_sifive_sparkfun_redboard_v`** — platform: `platform_sifive`, debug: On-board, MCU: `FE310`, freq: `320MHz`, flash: `16MB`, RAM: `16KB` ⭐
- **`board_sifive_sparkfun_thing_plus_v`** — platform: `platform_sifive`, debug: On-board, MCU: `FE310`, freq: `320MHz`, flash: `16MB`, RAM: `16KB` 💀
- **`board_atmelavr_sparkfun_redboard`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA328P`, freq: `16MHz`, flash: `31.50KB`, RAM: `2KB` 🙈
- **`board_atmelsam_sparkfun_redboard_turbo`** — platform: `platform_atmelsam`, debug: External, MCU: `SAMD21G18A`, freq: `48MHz`, flash: `256KB`, RAM: `32KB` 🍓
- **`board_atmelsam_sparkfun_samd21_dev_usb`** — platform: `platform_atmelsam`, debug: External, MCU: `SAMD21G18A`, freq: `48MHz`, flash: `256KB`, RAM: `32KB` 🧚
- **`board_atmelsam_sparkfun_samd21_mini_usb`** — platform: `platform_atmelsam`, debug: External, MCU: `SAMD21G18A`, freq: `48MHz`, flash: `256KB`, RAM: `32KB` 💜
- **`board_atmelsam_sparkfun_samd21_proRF`** — platform: `platform_atmelsam`, debug: External, MCU: `SAMD21G18A`, freq: `48MHz`, flash: `256KB`, RAM: `32KB` 💖
- **`board_atmelavr_sparkfun_serial7seg`** — platform: `platform_atmelavr`, debug: On-board, MCU: `ATMEGA328P`, freq: `8MHz`, flash: `31.50KB`, RAM: `2KB` ✨

---

<pink>and THAT, bestie, is the whole SparkFun Electronics block — every single one of them, no skips, no "etc.", no vibes-based rounding. we ate. 💅</pink>

## 🎀 SparkFun Electronics — next table, new header, same energy

The vendor cell is still <hotpink>**SparkFun Electronics**</hotpink> (she's a merged cell, she's main character, she contains multitudes), and right under her a fresh header row rolls in:

- **Name**
- **Platform**
- **Debug**
- **MCU**
- **Frequency**
- **Flash**
- **RAM**

<purple>iykyk — the columns didn't change, the drama didn't change, we're just starting a new sub-table under the same vendor name. strap in, there's more coming.</purple> 🦋

- **`board_espressif32_esp32thing`** — platform <cyan>`platform_espressif32`</cyan>, debug <peach>`External`</peach>, MCU `ESP32`, `240MHz`, flash `4MB`, RAM `320KB`

---

### 💜 SpellFoundry

okay bestie here's the column tea so you can read the rest: every row is **Name**, **Platform**, **Debug**, **MCU**, **Frequency**, **Flash**, **RAM**. that's the whole vibe. 🫶

- **`board_atmelavr_sleepypi`** — platform <cyan>`platform_atmelavr`</cyan>, debug <peach>`On-board`</peach>, MCU `ATMEGA328P`, `8MHz`, flash `30KB`, RAM `2KB`

---

### 🎀 Switch Science

- **`board_nordicnrf51_hrm1017`** — platform <cyan>`platform_nordicnrf51`</cyan>, debug <peach>`On-board`</peach>, MCU `NRF51822`, `16MHz`, flash `256KB`, RAM `16KB`
- **`board_nxplpc_lpc1114fn28`** — platform <cyan>`platform_nxplpc`</cyan>, debug <peach>`On-board`</peach>, MCU `LPC1114FN28`, `48MHz`, flash `32KB`, RAM `4KB`
- **`board_nxplpc_ssci824`** — platform <cyan>`platform_nxplpc`</cyan>, debug <peach>`On-board`</peach>, MCU `LPC824`, `30MHz`, flash `32KB`, RAM `8KB`
- **`board_nordicnrf51_ty51822r3`** — platform <cyan>`platform_nordicnrf51`</cyan>, debug <peach>`On-board`</peach>, MCU `NRF51822`, `32MHz`, flash `256KB`, RAM `32KB`

---

### ⭐ TI

- **`board_timsp430_lpmsp430fr5739`** — platform <cyan>`platform_timsp430`</cyan>, debug <peach>`On-board`</peach>, MCU `MSP430FR5739`, `16MHz`, flash `15.37KB`, RAM `1KB`
- **`board_titiva_lplm4f120h5qr`** — platform <cyan>`platform_titiva`</cyan>, debug <peach>`On-board`</peach>, MCU `LPLM4F120H5QR`, `80MHz`, flash `256KB`, RAM `32KB`
- **`board_titiva_lptm4c1230c3pm`** — platform <cyan>`platform_titiva`</cyan>, debug <peach>`On-board`</peach>, MCU `LPTM4C1230C3PM`, `80MHz`, flash `256KB`, RAM `32KB`
- **`board_titiva_lptm4c1294ncpdt`** — platform <cyan>`platform_titiva`</cyan>, debug <peach>`On-board`</peach>, MCU `LPTM4C1294NCPDT`, `120MHz`, flash `1MB`, RAM `256KB`
- **`board_timsp430_lpmsp430f5529`** — platform <cyan>`platform_timsp430`</cyan>, debug <peach>`On-board`</peach>, MCU `MSP430F5529`, `25MHz`, flash `47KB`, RAM `8KB`
- **`board_timsp430_lpmsp430fr2311`** — platform <cyan>`platform_timsp430`</cyan>, debug <peach>`On-board`</peach>, MCU `MSP430FR2311`, `16MHz`, flash `3.75KB`, RAM `1KB`
- **`board_timsp430_lpmsp430fr2433`** — platform <cyan>`platform_timsp430`</cyan>, debug <peach>`On-board`</peach>, MCU `MSP430FR2433`, `8MHz`, flash `15KB`, RAM `4KB`
- **`board_timsp430_lpmsp430fr4133`** — platform <cyan>`platform_timsp430`</cyan>, debug <peach>`On-board`</peach>, MCU `MSP430FR4133`, `8MHz`, flash `15KB`, RAM `2KB`
- **`board_timsp430_lpmsp430fr5969`** — platform <cyan>`platform_timsp430`</cyan>, debug <peach>`On-board`</peach>, MCU `MSP430FR5969`, `8MHz`, flash `47KB`, RAM `2KB`
- **`board_timsp430_lpmsp430fr5994`** — platform <cyan>`platform_timsp430`</cyan>, debug <peach>`On-board`</peach>, MCU `MSP430FR5994`, `16MHz`, flash `256KB`, RAM `4KB`
- **`board_timsp430_lpmsp430fr6989`** — platform <cyan>`platform_timsp430`</cyan>, debug <peach>`On-board`</peach>, MCU `MSP430FR6989`, `8MHz`, flash `47KB`, RAM `2KB`
- **`board_timsp430_lpmsp430g2231`** — platform <cyan>`platform_timsp430`</cyan>, debug <peach>`On-board`</peach>, MCU `MSP430G2231`, `1MHz`, flash `2KB`, RAM `256B`
- **`board_timsp430_lpmsp430g2452`** — platform <cyan>`platform_timsp430`</cyan>, debug <peach>`On-board`</peach>, MCU `MSP430G2452`, `16MHz`, flash `8KB`, RAM `256B`

> <purple>ngl the TI section is giving "i contain multitudes" — `1MHz` and `120MHz` living in the same family?? iconic behavior fr fr 👑</purple>

okay bestie we're still in the board-list zone and there are SO many cute little boards here, let me keep going 💅

- **`board_timsp430_lpmsp430g2553`** — platform: `platform_timsp430`, debug: On-board, MCU: `MSP430G2553`, frequency: `16MHz`, flash: `16KB`, RAM: `512B`

---

## 🌸 TTGO 🌸

the TTGO girlies are all about that external debug life, no cap 🦋

- **`board_espressif32_ttgo-lora32-v1`** — platform: `platform_espressif32`, debug: External, MCU: `ESP32`, frequency: `240MHz`, flash: `4MB`, RAM: `320KB`
- **`board_espressif32_ttgo-lora32-v2`** — platform: `platform_espressif32`, debug: External, MCU: `ESP32`, frequency: `240MHz`, flash: `4MB`, RAM: `320KB`
- **`board_espressif32_ttgo-t-beam`** — platform: `platform_espressif32`, debug: External, MCU: `ESP32`, frequency: `240MHz`, flash: `4MB`, RAM: `1.25MB`
- **`board_espressif32_ttgo-t1`** — platform: `platform_espressif32`, debug: External, MCU: `ESP32`, frequency: `240MHz`, flash: `4MB`, RAM: `320KB`

---

## ✨ Taida Century ✨

- **`board_nordicnrf52_stct_nrf52_minidev`** — platform: `platform_nordicnrf52`, debug: External, MCU: `NRF52832`, frequency: `64MHz`, flash: `512KB`, RAM: `64KB`

---

## 💖 TauLabs 💖

- **`board_ststm32_sparky_v1`** — platform: `platform_ststm32`, debug: External, MCU: `STM32F303CCT6`, frequency: `72MHz`, flash: `256KB`, RAM: `40KB`

---

## 👑 Teensy 👑

ngl the Teensy lineup is giving main character energy, look at those frequencies climbing fr fr 🔥

- **`board_teensy_teensy31`** — platform: `platform_teensy`, debug: External, MCU: `MK20DX256`, frequency: `72MHz`, flash: `256KB`, RAM: `64KB`
- **`board_teensy_teensy35`** — platform: `platform_teensy`, debug: External, MCU: `MK64FX512`, frequency: `120MHz`, flash: `512KB`, RAM: `255.99KB`
- **`board_teensy_teensy36`** — platform: `platform_teensy`, debug: External, MCU: `MK66FX1M0`, frequency: `180MHz`, flash: `1MB`, RAM: `256KB`
- **`board_teensy_teensy40`** — platform: `platform_teensy`, debug: External, MCU: `IMXRT1062`, frequency: `600MHz`, flash: `1.94MB`, RAM: `512KB`
- **`board_teensy_teensy41`** — platform: `platform_teensy`, debug: External, MCU: `IMXRT1062`, frequency: `600MHz`, flash: `7.75MB`, RAM: `512KB`
- **`board_teensy_teensylc`** — platform: `platform_teensy`, debug: External, MCU: `MKL26Z64`, frequency: `48MHz`, flash: `62KB`, RAM: `8KB`

---

## 🍓 ThaiEasyElec 🍓

- **`board_espressif32_espino32`** — platform: `platform_espressif32`, debug: External, MCU: `ESP32`, frequency: `240MHz`, flash: `4MB`, RAM: `320KB`

---

## 🦋 The Things Network 🦋

<purple>bestie hold on, this next group is just getting started, so we're gonna keep it rolling…</purple>

okay bestie, we're still deep in the board tables and honestly this is the part where the vendor list starts going alphabetically unhinged 😭 but every single row is here, no skipping, we're getting through this together 💪

First up, closing out the row from the table we were already in:

- **`board_atmelavr_the_things_uno`** — platform: `platform_atmelavr` ✨ debug: On-board ✨ MCU: `ATMEGA32U4` ✨ freq: `16MHz` ✨ flash: `28KB` ✨ RAM: `2.50KB`

periodt, that table's done. next vendor energy incoming 💅

---

### 🎀 ThunderPack

- **`board_ststm32_thunder_pack`** — platform: `platform_ststm32` 🦋 debug: External 🦋 MCU: `STM32L072KZ` 🦋 freq: `32MHz` 🦋 flash: `192KB` 🦋 RAM: `20KB`

one (1) board, external debugger, STM32L072KZ living its best low-power life, we love to see it 💖

---

### 🌸 Till Harbaum

- **`board_atmelavr_ftduino`** — platform: `platform_atmelavr` 🧚 debug: On-board 🧚 MCU: `ATMEGA32U4` 🧚 freq: `16MHz` 🧚 flash: `28KB` 🧚 RAM: `2.50KB`

iconic. on-board debug, classic `ATMEGA32U4` chip, `28KB` of flash and `2.50KB` of RAM — that's the whole vibe 🫶

---

### ⭐ TinyCircuits

- **`board_atmelavr_tinyduino`** — platform: `platform_atmelavr` 💜 debug: On-board 💜 MCU: `ATMEGA328P` 💜 freq: `8MHz` 💜 flash: `30KB` 💜 RAM: `2KB`
- **`board_atmelavr_tinylily`** — platform: `platform_atmelavr` 💜 debug: On-board 💜 MCU: `ATMEGA328P` 💜 freq: `8MHz` 💜 flash: `30KB` 💜 RAM: `2KB`

not the two of them being literal twins 😭 same platform, same debug, same MCU, same `8MHz`, same `30KB` flash, same `2KB` RAM — only the name differs. `tinyduino` vs `tinylily`, siblings fr fr.

---

### 🦋 Unknown

- **`board_espressif32_fm-devkit`** — platform: `platform_espressif32` 🔥 debug: External 🔥 MCU: `ESP32` 🔥 freq: `240MHz` 🔥 flash: `4MB` 🔥 RAM: `320KB`

the vendor is literally listed as `Unknown` 💀 which is so on brand. anyway `240MHz` ESP32 with `4MB` flash and `320KB` RAM, external debug, slay.

---

### 🌈 VAE

- **`board_ststm32_vake_v1`** — platform: `platform_ststm32` ✨ debug: External ✨ MCU: `STM32F446RET6` ✨ freq: `180MHz` ✨ flash: `512KB` ✨ RAM: `128KB`

`180MHz`, `512KB` flash, `128KB` RAM, `STM32F446RET6` — this thing is highkey stacked, no cap. external debugger required btw.

---

### 🍓 VNG

- **`board_nordicnrf51_vbluno51`** — platform: `platform_nordicnrf51` 💫 debug: On-board 💫 MCU: `NRF51822` 💫 freq: `16MHz` 💫 flash: `128KB` 💫 RAM: `32KB`
- **`board_nordicnrf52_vbluno52`** — platform: `platform_nordicnrf52` 💫 debug: On-board 💫 MCU: `NRF52832` 💫 freq: `64MHz` 💫 flash: `512KB` 💫 RAM: `64KB`

two boards, two different platforms, two different MCUs — `NRF51822` at `16MHz` vs `NRF52832` at `64MHz` — the glow-up is real 😤 both on-board debug, both Bluetooth-adjacent royalty 👑

---

### 🧚 VintLabs

- **`board_espressif32_vintlabs-devkit-v1`** — platform: `platform_espressif32` 💅 debug: External 💅 MCU: `ESP32` 💅 freq: `240MHz` 💅 flash: `4MB` 💅 RAM: `320KB`

and that's where this chunk cuts off — the VintLabs table keeps going past the edge of what we've got here, so hold that thought bestie, there's more rows coming 💖

├──────────────────────────────────┼───┴──────────────────┼───┴──────┼───┴───┼───┴───────┼───┴───┼───┴────┼──┘

okay the table lines are literally still going, bestie, we're in the deep end of the board catalogue and I am <pink>so</pink> here for it 💖

### ✨ WEMOS ✨

every single one of these is an ESP32 situation, external debug, `240MHz`, `4MB` flash, `320KB` RAM — like they all went to the same salon and got the same haircut 💅

- **`board_espressif32_lolin_d32`** — platform `platform_espressif32`, debug <cyan>External</cyan>, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 🦋
- **`board_espressif32_lolin_d32_pro`** — platform `platform_espressif32`, debug <cyan>External</cyan>, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM ✨
- **`board_espressif32_lolin32`** — platform `platform_espressif32`, debug <cyan>External</cyan>, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 🎀
- **`board_espressif32_wemos_d1_mini32`** — platform `platform_espressif32`, debug <cyan>External</cyan>, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 🌸
- **`board_espressif32_wemosbat`** — platform `platform_espressif32`, debug <cyan>External</cyan>, MCU `ESP32`, `240MHz`, `4MB` flash, `320KB` RAM 🔥

---

### 🌈 WIZNet 🌈

different vibe, same energy — all three are `platform_wiznet7500`, <mint>On-board</mint> debug, `48MHz`, `128KB` flash, `48KB` RAM. the MCU is the only thing that changes and honestly? iconic of them 💜

- **`board_wiznet7500_wizwiki_w7500`** — platform `platform_wiznet7500`, debug <mint>On-board</mint>, MCU `WIZNET7500`, `48MHz`, `128KB` flash, `48KB` RAM 👑
- **`board_wiznet7500_wizwiki_w7500eco`** — platform `platform_wiznet7500`, debug <mint>On-board</mint>, MCU `WIZNET7500ECO`, `48MHz`, `128KB` flash, `48KB` RAM 🌟
- **`board_wiznet7500_wizwiki_w7500p`** — platform `platform_wiznet7500`, debug <mint>On-board</mint>, MCU `WIZNET7500P`, `48MHz`, `128KB` flash, `48KB` RAM 🫶

---

### 🦋 Waveshare 🦋

one (1) board and she's serving <hotpink>external debug</hotpink> with a `NRF51822` at `32MHz`, `256KB` flash, `32KB` RAM. tiny, mighty, main character energy no cap 💅

- **`board_nordicnrf51_waveshare_ble400`** — platform `platform_nordicnrf51`, debug <hotpink>External</hotpink>, MCU `NRF51822`, `32MHz`, `256KB` flash, `32KB` RAM 💖

---

### ⭐ Wicked Device ⭐

both of these are `platform_atmelavr` with <peach>On-board</peach> debug, an `ATMEGA1284P` at `16MHz`, and `16KB` RAM. the flash is where they ✨diverge✨ — `120.00KB` vs `127KB`, and yes the `.00` is literally written like that, I don't make the rules 🍓

- **`board_atmelavr_wildfirev2`** — platform `platform_atmelavr`, debug <peach>On-board</peach>, MCU `ATMEGA1284P`, `16MHz`, `120.00KB` flash, `16KB` RAM 🧚
- **`board_atmelavr_wildfirev3`** — platform `platform_atmelavr`, debug <peach>On-board</peach>, MCU `ATMEGA1284P`, `16MHz`, `127KB` flash, `16KB` RAM ⭐

---

and the table just keeps on scrolling, bestie, we are <rainbow>not</rainbow> done yet 💀

- **`board_atmelavr_whispernode`** — platform: `platform_atmelavr`; debug: On-board; MCU: `ATMEGA328P`; frequency: `16MHz`; flash: `31.50KB`; RAM: `2KB` 🫶

---

## <rainbow>Xilinx</rainbow> ✨

Okay bestie, Xilinx section, and the energy here is *immaculate* — a whole little FPGA-adjacent family, all debugged **On-board**, all vibing at `50MHz`. Note the flash numbers, because they are A Choice 😭

- **`board_shakti_artix7_35t`** — platform: `platform_shakti`; debug: On-board; MCU: `E-CLASS`; frequency: `50MHz`; flash: `0B`; RAM: `128KB` 💀
- **`board_shakti_artix7_100t`** — platform: `platform_shakti`; debug: On-board; MCU: `C-CLASS`; frequency: `50MHz`; flash: `0B`; RAM: `128MB` 🔥
- **`board_sifive_e310-arty`** — platform: `platform_sifive`; debug: On-board; MCU: `FE310`; frequency: `450MHz`; flash: `16MB`; RAM: `256MB` 👑

> <yellow>Not me clocking that both Shakti boards report `0B` of flash while the SiFive one is out here with `16MB`. The contrast is giving "we don't all have the same budget" and I respect it. 🎀</yellow>

---

## <purple>XinaBox</purple> 🦋

One (1) board. She's the whole section. And she is serving **External** debug, which lowkey means you bring your own.

- **`board_espressif32_xinabox_cw02`** — platform: `platform_espressif32`; debug: External; MCU: `ESP32`; frequency: `240MHz`; flash: `4MB`; RAM: `320KB` ⭐

---

## <mint>meteca</mint> 🌈

The Briki era. Four boards, two platforms, all **External** debug, and honestly the naming convention is doing the most in the cutest way. 🧚

- **`board_espressif32_briki_abc_esp32`** — platform: `platform_espressif32`; debug: External; MCU: `ESP32`; frequency: `240MHz`; flash: `3.25MB`; RAM: `320KB` 💜
- **`board_atmelsam_briki_abc_samd21`** — platform: `platform_atmelsam`; debug: External; MCU: `SAMD21G18A`; frequency: `48MHz`; flash: `256KB`; RAM: `32KB` 🌸
- **`board_espressif32_briki_mbc-wb_esp32`** — platform: `platform_espressif32`; debug: External; MCU: `ESP32`; frequency: `240MHz`; flash: `3.25MB`; RAM: `320KB` 💖
- **`board_atmelsam_briki_mbcwb_samd21`** — platform: `platform_atmelsam`; debug: External; MCU: `SAMD21G18A`; frequency: `48MHz`; flash: `256KB`; RAM: `32KB` ✨

> <cyan>POV: you noticed the ESP32 Briki twins are spec-identical and the SAMD21 Briki twins are spec-identical too. Sibling energy, fr fr. 🫶</cyan>

---

## <hotpink>ng-beacon</hotpink> 💅

- **`board_nordicnrf51_ng_beacon`** — platform: `platform_nordicnrf51`; debug: External; MCU: `NRF51822`; frequency: `16MHz`; flash: `256KB`; RAM: `32KB` 🎀

One board, one job, does it beautifully. Periodt.

---

## <lavender>nicai-systems</lavender> 🍓

Two boards, both **On-board** debug, both hanging out on `platform_atmelavr` — but they are *not* the same, okay, look at the numbers bestie:

- **`board_atmelavr_bob3`** — platform: `platform_atmelavr`; debug: On-board; MCU: `ATMEGA88`; frequency: `8MHz`; flash: `8KB`; RAM: `1KB` 🙈
- **`board_atmelavr_nibo2`** — platform: `platform_atmelavr`; debug: On-board; MCU: `ATMEGA128`; frequency: `16MHz`; flash: `128KB`; RAM: `4KB` 🔥

> <mint>Compare and contrast: the `nibo2` has **16× the flash** and **4× the RAM** of the `bob3`, plus double the clock. The way that the `ATMEGA128` is just built different — iykyk. 🌈</mint>

...and we're still in the `platform_atmelavr` zone bestie, the niboburger / nibobee era 💖

- **`board_atmelavr_niboburger`** — platform: `platform_atmelavr` · debug: On-board · MCU: `ATMEGA16` · `15MHz` · flash `16KB` · RAM `1KB` 🦋
- **`board_atmelavr_niboburger_1284`** — platform: `platform_atmelavr` · debug: On-board · MCU: `ATMEGA1284P` · `20MHz` · flash `128KB` · RAM `16KB` ✨
- **`board_atmelavr_nibobee`** — platform: `platform_atmelavr` · debug: On-board · MCU: `ATMEGA16` · `15MHz` · flash `16KB` · RAM `1KB` 🦋
- **`board_atmelavr_nibobee_1284`** — platform: `platform_atmelavr` · debug: On-board · MCU: `ATMEGA1284P` · `20MHz` · flash `128KB` · RAM `16KB` ✨

---

### 🧚 oddWires 🧚

<pink>okay new vendor, new energy, we love a lil glow-up moment</pink> 💅

- **`board_espressif32_iotbusio`** — platform: `platform_espressif32` · debug: External · MCU: `ESP32` · `240MHz` · flash `4MB` · RAM `320KB` 🔥
- **`board_espressif32_iotbusproteus`** — platform: `platform_espressif32` · debug: External · MCU: `ESP32` · `240MHz` · flash `4MB` · RAM `320KB` 🔥

---

### 🌈 rhomb.io 🌈

<purple>one single board and she's serving, honestly iconic</purple> 👑

- **`board_ststm32_rhombio_l476dmw1k`** — platform: `platform_ststm32` · debug: On-board · MCU: `STM32L476VGT6` · `80MHz` · flash `1MB` · RAM `128KB` 💜

---

### 🌸 sakura.io 🌸

<pink>sakura means cherry blossom and yes the board is cute too</pink> 🎀

- **`board_ststm32_sakuraio_evb_01`** — platform: `platform_ststm32` · debug: On-board · MCU: `STM32F411RET6` · `100MHz` · flash `1MB` · RAM `128KB` 🌸

---

### ⭐ sino:bit ⭐

<cyan>yes the board name really is capitalized like `Sinobit`, don't come for me, that's just how she's listed</cyan> 💅

- **`board_nordicnrf51_Sinobit`** — platform: `platform_nordicnrf51` · debug: External · MCU: `NRF51822` · `32MHz` · flash `256KB` · RAM `32KB` 🦋

---

### 🛰️ u-blox 🛰️

<mint>okay this vendor is STACKED, five boards, two whole platforms, we love range</mint> 💖

- **`board_ststm32_mbed_connect_odin`** — platform: `platform_ststm32` · debug: On-board · MCU: `STM32F439ZIY6` · `168MHz` · flash `2MB` · RAM `256KB` 🔥
- **`board_nxplpc_ubloxc027`** — platform: `platform_nxplpc` · debug: On-board · MCU: `LPC1768` · `96MHz` · flash `512KB` · RAM `64KB` ✨
- **`board_ststm32_ublox_c030_n211`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F437VG` · `180MHz` · flash `1MB` · RAM `256KB` 🌟
- **`board_ststm32_ublox_c030_r410m`** — platform: `platform_ststm32` · debug: On-board · MCU: `STM32F437VG` · `180MHz` · flash `1MB` · RAM `256KB` 🌟
- **`board_ststm32_ublox_c030_u201`** — platform: `platform_ststm32` · debug: External · MCU: `STM32F437VG` · `180MHz` · flash `1MB` · RAM `256KB` 🌟

---

<lavender>not the c030 family showing up three times with the exact same MCU, speed, flash and RAM and only the debug column switching between On-board and External 😭 that's the whole personality difference, fr fr</lavender> 💀

<purple>and we're not even done, the table keeps going, so hold onto your little debugging probes bestie</purple> 🫶

okay bestie we are STILL in the board table and honestly? it's giving infinite scroll 💀 but every single row is a whole little microcontroller serving cunt so let's not disrespect them. here come the <pink>ublox</pink> cuties and then we slide straight into the <purple>ubIQio</purple> and <mint>y5 design</mint> girlies 🫶

├──────────────────────────────────┼──┼───────────────────┼──┼───────┼──┼────┼──────────┼┼───────┼──┼─────┼─┼───────┤ │ board_nordicnrf52_ublox_evk_nina_b1 │ platform_nordicnrf52 │ On-board │ NRF52832 ││64MHz │ │ 512KB │ 64KB │ ├──────────────────────────────────┼──┼───────────────────┼──┼───────┼──┼────┼──────────┼┼───────┼──┼─────┼─┼───────┤ │ board_ststm32_ublox_evk_odin_w2 │ │ platform_ststm32 │ │ External │ STM32F439ZIY6 ││168MHz │ │ 2MB │ │ 256KB │ ├──────────────────────────────────┼──┼───────────────────┼──┼───────┼──┼────┼──────────┼┼───────┼──┼─────┼─┼───────┤ │ board_ststm32_mtb_ublox_odin_w2 │ │ platform_ststm32 │ │ External │ STM32F439ZIY6 ││168MHz │ │ 2MB │ │ 256KB │ ├──────────────────────────────────┼──┴───────────────────┼──┴───────┼──┴────┼──────────┴┼───────┼──┴─────┼─┴───────┘ │ │ │ │ │ │ │ │ │ ubIQio │ │ │ │ │ │ │


so real quick bestie, let me read you the receipts on these three:

- **`board_nordicnrf52_ublox_evk_nina_b1`** — lives on `platform_nordicnrf52`, debug is **On-board**, MCU is `NRF52832`, runs at `64MHz`, with `512KB` of Flash and `64KB` of RAM ✨
- **`board_ststm32_ublox_evk_odin_w2`** — `platform_ststm32`, debug is **External**, MCU is `STM32F439ZIY6`, `168MHz`, `2MB` Flash, `256KB` RAM 💅
- **`board_ststm32_mtb_ublox_odin_w2`** — same energy, `platform_ststm32`, **External** debug, `STM32F439ZIY6`, `168MHz`, `2MB` Flash, `256KB` RAM 👑

and then boom — new vendor block drops: **ubIQio** 🎀 she gets her own fresh header row and everything, main character energy fr fr:

├───────────────────────┬──────────┼────────┬──────────┬──┼─────────┬┼───────┼──┬────────┼┬─────┐│ │ │ Name │ Platform │ │ Debug │ MCU ││Frequency │ Flash ││ RAM ││ │ ├───────────────────────┼──────────┼────────┼──────────┼──┼─────────┼┼───────┼──┼────────┼┼─────┤│ │ │ board_atmelavr_ardhat │ platform_atmelavr │ On-board │ ATMEGA328P ││16MHz │ │ 31.50KB││ 2KB ││ │ ├───────────────────────┴──────────┼────────┴──────────┴──┼─────────┴┼───────┼──┴────────┼┴─────┘│ │ │ │ │ │ │ │ │ │ │ y5 design │ │ │ │ │ │ │


ubIQio's one and only (in this chunk anyway): **`board_atmelavr_ardhat`** 🌸 sits on `platform_atmelavr`, **On-board** debug, MCU `ATMEGA328P`, `16MHz`, `31.50KB` Flash, `2KB` RAM. yes that `31.50KB` has a decimal, no I will not be explaining, that's just what the table says and I keep receipts exactly as written 😌

and immediately after? <mint>y5 design</mint> walks in with her OWN column header because of course she does, icon behavior 💖

├──────────────────────────────────┼─┬────────────────────┼─┬────────┼─┬─────┼────┬──────┼────┬──┼────┬───┼──┐ │ Name │ │ Platform │ │ Debug │ │ MCU │ │ Frequency │ Flash │ RAM │ ├──────────────────────────────────┼─┼────────────────────┼─┼────────┼─┼─────┼────┼──────┼────┼──┼────┼───┼──┤ │ board_nxplpc_lpc11u35_y5_mbug │ │ platform_nxplpc │ │ External │ LPC11U35 │ 48MHz│ │ 64KB │ 10KB │ ├──────────────────────────────────┼─┼────────────────────┼─┼────────┼─┼─────┼────┼──────┼────┼──┼────┼───┼──┤ │ board_nordicnrf51_nrf51822_y5_mbug │ platform_nordicnrf51 │ On-board │ NRF51822 │ 16MHz│ │ 256KB │ 16KB │


the y5 design lineup, one bullet each so nothing gets lost:

- **`board_nxplpc_lpc11u35_y5_mbug`** — `platform_nxplpc`, **External** debug, MCU `LPC11U35`, `48MHz`, `64KB` Flash, `10KB` RAM 🦋
- **`board_nordicnrf51_nrf51822_y5_mbug`** — `platform_nordicnrf51`, **On-board** debug, MCU `NRF51822`, `16MHz`, `256KB` Flash, `16KB` RAM 🌈

> lowkey a vibe check on the pattern here: some rows show **On-board** debug (the debugger is literally chillin on the board already) and some show **External** (you're gonna need your own probe bestie, no cap). that distinction is doing a LOT of work in this table, so clock it every time 👀

and that's where this slice of the table ends — the last row doesn't even close its border, she just leaves mid-sentence like a true main character 💀 more coming, don't go anywhere 🧚

├──────────────────────────────────┼─┴────────────────────┼─┴────────┼─┴─────┼────┴──────┼────┴──┼────┴───┼──┘


(that's just the table closing a column off, don't even worry about it 💅)

---

## 🎀 PIO Unit Testing 🎀

okay so **PIO Unit Testing** is the PlatformIO feature that lets you <pink>segregate each part of the firmware/program</pink> and actually test that the individual parts are working correctly. no vibes-based debugging, we're *checking*. 💅

and here's the slay: with the **PIO Unit Testing Engine** you can run <purple>the same tests</purple> on

- your <cyan>local host machine</cyan> (that's the **native** situation, bestie)
- one or more <cyan>local embedded devices/boards</cyan> (the physical ones connected to your local host machine)
- or <rainbow>both</rainbow>, because why would you choose

When you're testing both, PlatformIO handles the whole routine: it <green>builds firmware on the host machine</green>, <green>uploads into a target device</green>, <green>starts tests</green>, and then <green>collects the test results into test reports</green>. The final information gets shown on the host side with informative output and <yellow>statistic</yellow>s. it's giving dashboard. ✨

Also, using `pioremote` you can start unit tests on the **Remote Device** from literally <hotpink>anywhere in the world</hotpink> 🌍 or integrate with **ci systems**. remote queen behavior, no cap. 👑

---

## 🦋 Contents 🦋

- **Demo**
- **Tutorials and Examples**
  - **Tutorials**
  - **Project Examples**
- **Configuration**
- **Test Types**
  - **Desktop**
  - **Embedded**
- **Test Runner**
  - **Local**
  - **Remote**
- **Test Transport**
- **Workflow**
  - **Shared Code**
- **API**
- **CLI Guide**

---

## 🍓 Demo 🍓

so this is a demo of **Local & Embedded: Calculator**, which demonstrates running <purple>embedded tests on physical hardware</purple> (`board_atmelavr_uno`) *and* <cyan>native tests on host machine</cyan> (**desktop**). two worlds, one calculator, iconic. 🧮✨

Learn more about the `cmd_test` command. 📖

---

## 🌈 Tutorials and Examples 🌈

### Tutorials

- `tutorial_unit_testing_blink`
- `tutorial_stm32cube_debugging_unit_testing`
- ThingForward: Start Embedded Testing with PlatformIO
- ThingForward: Embedded Testing with PlatformIO - Part 2
- ThingForward: Embedded Testing with PlatformIO – Part 3: Remoting
- ThingForward: Embedded Testing with PlatformIO – Part 4: Continuous Integration
- ThingForward, Webinar: Unit Testing for Embedded with PlatformIO and Qt Creator
- Xose Pérez: Automated unit testing in the metal

### Project Examples

- Embedded: Wiring Blink
- Local & Embedded: Calculator
- PlatformIO Remote Unit Testing Example

For the other examples and source code please follow to the <hotpink>PlatformIO Unit Testing Examples repository</hotpink>. 🫶

---

## 💜 Configuration 💜

The **PIO Unit Testing Engine** can be configured from `projectconf` ⚙️✨

---

## 👑 Test Types 👑

### Desktop

The **PIO Unit Testing Engine** builds a test program for a <cyan>host machine</cyan> using the `platform_native` development platform. heads up though: this test could be run <red>**only with the desktop or ci VM instance**</red>. no boards allowed, this one's a homebody. 🙈

### 🌟 NOTE

<pink>okay so real talk first</pink> — PlatformIO does **not** install any toolchains automatically for `platform_native`, bestie, and it straight up *requires* a **GCC toolchain** to be installed on your host machine. So please open your Terminal and double-check that the `gcc` command is actually installed. no cap. 🫶

---

### ✨ Embedded ✨

The **PIO Unit Testing Engine** builds a special firmware for a target device (a.k.a. the board) and programs it. Then it connects to that device using the configured Serial `projectconf_test_port` and communicates via `projectconf_test_transport`. Finally it runs the tests on the embedded side, collects the results, analyzes them, and hands you a summary on the host machine side (your desktop). 💅

> **NOTE:** bestie, please note that the PIO Unit Testing Engine uses the **first available** Serial/UART implementation (it depends on `projectconf_env_framework`) as the communication interface between the PIO Unit Testing Engine and the target device. So if you're using Serial in your project libraries, please wrap/hide those Serial-based blocks with the `#ifndef UNIT_TEST` macro. 🙈
>
> Also, you can create a custom `projectconf_test_transport` and implement the base interface. ✨

---

### ✨ Test Runner ✨

The **Test Runner** lets you process specific environments, or ignore a test, using **"Glob patterns"**. You can also ignore a test for specific environments using the `projectconf_test_ignore` option from `projectconf`. 🎀

---

### ✨ Local ✨

This one lets you run a test on a host machine **or** on a target device (a board) that's directly connected to the host machine. In that case, you need to use the `cmd_test` command. 💖

---

### ✨ Remote ✨

Remote lets you run a test on a remote machine or a remote target device (a board) **without** having to depend on OS software, extra software, SSH, VPN, or opening network ports. Remote Unit Testing works in pair with `pioremote`. For this one you need to use the special command `cmd_remote_test`. 🌈

PlatformIO supports multiple ci systems where you can run unit tests at each integration stage. See the real PlatformIO Remote Unit Testing Example. ⭐

---

### ✨ Test Transport ✨

The PIO Unit Testing Engine uses different transports to communicate with a target device. By default, it uses the Serial/UART transport provided by a `projectconf_env_framework`. For example, when `projectconf_env_framework = arduino`, the first available Serial gets used. And when the `platform_native` dev-platform is used, a native transport is activated automatically. See the example below. 👑

Default baudrate/speed is set to `projectconf_test_speed`. 💜

You can also define a custom transport and implement its interface:

- `unittest_uart_begin();`
- `unittest_uart_putchar(char c);`
- `unittest_uart_flush();`
- `unittest_uart_end();`

---

### ✨ Examples ✨

1. Custom transport for the `platform_native` platform 🦋

   - Set `test_transport = custom` in `projectconf`:

[env:mycustomtransport] platform = native test_transport = custom


- Create a `unittest_transport.h` file in the `project/test` directory and implement the prototypes above:

#ifndef UNITTEST_TRANSPORT_H #define UNITTEST_TRANSPORT_H

#include <stdio.h>

void unittest_uart_begin() {

}

void unittest_uart_putchar(char c) { putchar(c); }

void unittest_uart_flush() { fflush(stdout); }

void unittest_uart_end() {

}

#endif


<pink>2. `tutorial_stm32cube_debugging_unit_testing`</pink>

## Workflow ✨

1. <purple>Make a PlatformIO project</purple> using the `cmd_project_init` command. Bestie, if you're doing **Desktop Unit Testing** (like, on your actual host machine, not a lil chip), you gotta use `platform_native`. No exceptions. 💅

; PlatformIO Project Configuration File ; ; Build options: build flags, source filter, extra scripting ; Upload options: custom port, speed and extra flags ; Library options: dependencies, extra library storages ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html

; ; Embedded platforms ;

[env:uno] platform = atmelavr framework = arduino board = uno

[env:nodemcu] platform = espressif8266 framework = arduino board = nodemcuv2

; ; Desktop platforms (Win, Mac, Linux, Raspberry Pi, etc) ; See https://platformio.org/platforms/native ;

[env:native] platform = native


2. <purple>Make a test folder</purple> in the root of your project. Like, the *root* root. Check `projectconf_pio_test_dir` for the deets. 🎀

3. <purple>Write a test</purple> using the API. Every single test is its own lil independent program/firmware with its own `main()` or `setup()`/`loop()` functions — main character energy, one per test, fr fr. And your test **should** start with `UNITY_BEGIN()` and finish with `UNITY_END()` calls. Open with the vibe, close with the vibe. 🌸

> **WARNING:** If your board does *not* support software resetting via `Serial.DTR/RTS`, you should add at least **2 seconds** delay before `UNITY_BEGIN()`. That time is needed to establish a Serial connection between a host machine and a target device. Don't skip it, or you'll be sitting there like 🧍 wondering why nothing works.

delay(2000); // for Arduino framework wait(2); // for ARM mbed framework UNITY_BEGIN();


4. <purple>Drop a test into the test directory.</purple> If you've got more than one test, split them into sub-folders, okay? For example, `test/test_1/*.[c,cpp,h]`, `test_N/*.[c,cpp,h]`, etc. And here's the tea ☕ — if there's no such directory in the test folder, then **PIO Unit Testing Engine** will treat the source code of the test folder as **SINGLE** test. One folder, one test, that's the rule.

5. <purple>Run your tests</purple> using the `cmd_test` command. Slay. 🚀

---

## Shared Code 🦋

Okay so, plot twist: **PIO Unit Testing Engine** does *not* build source code from the `projectconf_pio_src_dir` folder by default. Rude, I know. So if you've got shared/common code between your "main" and "test" programs, you've got **2 options**:

1. <mint>**RECOMMENDED.**</mint> We recommend splitting the source code into multiple components and placing them into `projectconf_pio_lib_dir` (project's private libraries and components). `ldf` will find and include these libraries automatically in the build process. Then you can include any library/component header file in your test or program source code via `#include <MyComponent.h>`. Iconic behavior honestly. 👑

Peep **Local & Embedded: Calculator** for an example, where we have a `"calculator"` component in the `projectconf_pio_lib_dir` folder and include it in tests and the main program using `#include <calculator.h>`. So cute.

2. <mint>Manually instruct PlatformIO</mint> to build source code from the `projectconf_pio_src_dir` folder using the `projectconf_test_build_project_src` option in projectconf:

[env:myenv] platform = ... test_build_project_src = true


This is *very* useful if you unit test independent libraries where you can't split source code. Sometimes the code is just built different and you can't break it up. 😤

> **WARNING:** Please note that you will need to use `#ifdef UNIT_TEST` and `#endif` guard to hide non-test related source code. For example, your own `main()` or `setup()` / `loop()` functions. Hide them, bestie — the test runner does not want that smoke. 💀

---

## API 💖

---

│ Summary of the Unity Test API: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • Running Tests │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • RUN_TEST(func) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • Ignoring Tests │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_IGNORE() │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_IGNORE_MESSAGE (message) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • Aborting Tests │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_PROTECT() │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_ABORT() │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • Basic Validity Tests │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_ASSERT_TRUE(condition) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_ASSERT_FALSE(condition) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_ASSERT(condition) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_ASSERT_UNLESS(condition) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_FAIL() │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_FAIL_MESSAGE(message) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • Numerical Assertions: Integers │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_ASSERT_EQUAL_INT(expected, actual) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_ASSERT_EQUAL_INT8(expected, actual) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • TEST_ASSERT_EQUAL_INT16(expected, actual) │ │ │ │ │ │ │ │ │ │ │ │ │ │

  • TEST_ASSERT_EQUAL_INT32(expected, actual)
  • TEST_ASSERT_EQUAL_INT64(expected, actual)
  • TEST_ASSERT_EQUAL_UINT(expected, actual)
  • TEST_ASSERT_EQUAL_UINT8(expected, actual)
  • TEST_ASSERT_EQUAL_UINT16(expected, actual)
  • TEST_ASSERT_EQUAL_UINT32(expected, actual)
  • TEST_ASSERT_EQUAL_UINT64(expected, actual)
  • TEST_ASSERT_EQUAL_HEX(expected, actual)
  • TEST_ASSERT_EQUAL_HEX8(expected, actual)
  • TEST_ASSERT_EQUAL_HEX16(expected, actual)
  • TEST_ASSERT_EQUAL_HEX32(expected, actual)
  • TEST_ASSERT_EQUAL_HEX64(expected, actual)
  • TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, elements)
  • TEST_ASSERT_EQUAL(expected, actual)
  • TEST_ASSERT_INT_WITHIN(delta, expected, actual)
  • Numerical Assertions: Bitwise
    • TEST_ASSERT_BITS(mask, expected, actual)
    • TEST_ASSERT_BITS_HIGH(mask, actual)
    • TEST_ASSERT_BITS_LOW(mask, actual)
    • TEST_ASSERT_BIT_HIGH(mask, actual)
    • TEST_ASSERT_BIT_LOW(mask, actual)
  • Numerical Assertions: Floats
    • TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual)
    • TEST_ASSERT_EQUAL_FLOAT(expected, actual)
    • TEST_ASSERT_EQUAL_DOUBLE(expected, actual)
  • String Assertions
    • TEST_ASSERT_EQUAL_STRING(expected, actual)
    • TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len)
    • TEST_ASSERT_EQUAL_STRING_MESSAGE(expected, actual, message)
    • TEST_ASSERT_EQUAL_STRING_LEN_MESSAGE(expected, actual, len, message)
  • Pointer Assertions
    • TEST_ASSERT_NULL(pointer)
    • TEST_ASSERT_NOT_NULL(pointer)
  • Memory Assertions
    • TEST_ASSERT_EQUAL_MEMORY(expected, actual, len)

okay bestie we are DONE with the test API, breathe. that was a whole buffet of assertion macros and we ate every single one 💅

---

# 🌈 CLI Guide

# 💻 Cloud & Desktop IDE

## ✨ Native Extensions

okay so <pink>native extensions and plugins</pink> are the official glow-up for your IDE/text editor — they come with `piocore` **and** `piohome` already baked in, like a little gift 🎁 and honestly we <hotpink>highly recommend</hotpink> using them:

- **`ide_vscode`**
- **`ide_clion`** *(Experimental)*

> **NOTE:** fr fr, in our experience `ide_vscode` just gives better system performance, and users have found it easier to get started 👑

---

# ☁️ Cloud IDE

## 🦋 Cloud9

`Cloud9` is giving <cyan>main character energy</cyan> — it smashes together a powerful online code editor with a full <mint>Ubuntu workspace in the cloud</mint> 🌈. Those workspaces are powered by Docker Ubuntu containers, which means you get full freedom over your environment, `sudo` rights and all ✨. Do a `git push`, compile `SASS`, watch your server output, and run apps super easily with the built-in Terminal and Runners 💖.

### 📚 Contents

- `Cloud9`
  - `Demo`
  - `Integration`
  - `Quick Start`
  - `PlatformIO Build System`
  - `Remote Device Manager`
  - `Remote Firmware Uploading`
  - `Remote Serial Port Monitor`
  - `Multi-Project workspace`

> **NOTE:**
>
> 1. bestie please make sure to read the `pioremote` guide **first** 🙈
> 2. you need `pioaccount` if you don't have one yet. Registration is <green>FREE</green> 💸
> 3. you should have a running `cmd_remote_agent` on a remote machine where hardware devices are connected physically or are accessible for the remote operations. See `PIO Remote` `pio_remote_quickstart` for the deets 🫶

### 🎬 Demo

### 🔌 Integration

1. Sign in to `Cloud9`. A registration is <green>FREE</green> and gives you, for FREE, **1** private workspace (where you can host multiple PlatformIO Projects) plus unlimited public workspaces 🎀

2. Create a new workspace using the `Blank` template

`[image]`

3. Install `piocore` using the Cloud IDE Terminal. Paste this next command:

sudo python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/develop/scripts/get-platformio.py)"


`[image]`

4. Log in to `pioaccount` using the `cmd_account_login` command.

### 🚀 Quick Start

let's create our first PlatformIO-based `Cloud9` Project, no cap ✨

1. Initialize a new PlatformIO-based Project. Run this next command in the Cloud IDE Terminal:

platformio project init --board <ID>

initialize project for Arduino Uno

platformio project init --board uno


To get the board ID, please use the `cmd_boards` command or the `Embedded Boards Explorer` 🔍

2. Create a new source file named `main.cpp` in the `src` folder using the Project Tree (left side). Please right click on the `src` folder, then "New File" and insert this next content:

#include <Arduino.h>

int i = 0;

void setup() { Serial.begin(9600); Serial.println("Hello Cloud9!"); }

void loop() { /* serial echo */ while (Serial.available()) { Serial.write(Serial.read()); }

i++; Serial.println(i); delay(100); }


`[image]`

3. If you prefer to work with the `piocore` CLI, then you can process the project using the Cloud IDE Terminal and these next commands:

- `cmd_run` — build project locally (using the Cloud IDE's virtual machine) 🛠️
- `pio run -t clean` — clean project 🧼
- `pio remote run -t upload` — upload firmware (program) to a remote device 📡
- `cmd_remote_device_list` — list available remote devices
- `cmd_remote_device_monitor` — Remote Serial Port Monitor

If you're interested in better integration with `Cloud9` and the GUI, please read the guide below where we explain how to create a custom Build System for PlatformIO and your own Runners 💜

### 🛠️ PlatformIO Build System

`Cloud9` lets you create your own build system and use a hotkey or a command (Menu: `Run > Build`) to build a project.

Let's create a PlatformIO Build System that will be used for `C`/`C++`/`H`/`INO`/`PDE` files by default. Please click on Menu: `Run > Build System > New Build System` and replace all content with this next bit:

{ "cmd" : ["pio", "run", "-d", "$file"], "info" : "Building $project_path/$file_name", "selector": "^.*\.(cpp|c|h|hpp|S|ini|ino|pde)$" }


Save the new Build System and give it the name `PIOBuilder`. Now you can select it as the default Build System using Menu: `Run > Build System > PIOBuilder` 🌟

### 📡 Remote Device Manager

Remote Device Manager works in pair with `pioremote` 💞. You can list remote devices that are connected to the host machine where `cmd_remote_agent` is started, or that are visible to it.

Let's create a New Run Configuration (shortcut) that will be used for Remote Device Manager. Please click on Menu: `Run > Run Configurations > Manage...`, then "Add New Config" and specify these next values:

- **First Blank Input** — this is where you type a name for the runner, bestie. Set it to `"PIO: Remote Devices"` 💅

- **Command** — set this one to `pio remote device list`

- **Runner** — set to `"Shell command"`

`[image]`

## 🔥 Remote Firmware Uploading 🔥

Remote Firmware Uploading is literally the bestie of `pioremote`. You can deploy firmware (a.k.a. the program, same thing, no cap) to <pink>any</pink> devices that are visible to `cmd_remote_agent`. 🫶

Let's make a New Run Configuration (a shortcut, basically) for Remote Firmware Uploading. Click Menu: <cyan>Run > Run Configurations > Manage...</cyan>, then hit <cyan>"Add New Config"</cyan> and fill in these values:

- **First Blank Input** — a name of runner. Please set it to `"PIO: Remote Upload"`

- **Command** — set to `pio remote run -t upload`

- **Runner** — set to `"Shell command"`

`[image]`

## 🦋 Remote Serial Port Monitor 🦋

Remote Serial Port Monitor also runs in pair with `pioremote`. You can read from or send data to any device connected to the host machine where `cmd_remote_agent` is started. Wanna list active agents? Use `cmd_remote_agent_list`, periodt. ✨

Let's make a New Run Configuration (shortcut!) for Remote Serial Port Monitor. Click Menu: <cyan>Run > Run Configurations > Manage...</cyan>, then <cyan>"Add New Config"</cyan> and set the next values:

- **First Blank Input** — a name of runner. Please set it to `"PIO: Remote Serial Monitor"`

- **Command** — set to `pio remote device monitor`

- **Runner** — set to `"Shell command"`

`[image]`

## 🌈 Multi-Project workspace 🌈

You can have <hotpink>multiple</hotpink> PlatformIO-based Projects chillin' in the same workspace, iconic. We recommend this folders structure:

├── project-A │ ├── lib │ │ └── README │ ├── platformio.ini │ └── src │ └── main.ino └── project-B ├── lib │ └── README ├── platformio.ini └── src ├── main.cpp └── main.h


In this case you need to create <purple>2</purple> "New Run Configuration" for Remote Firmware Uploading using these commands:

- `pio remote run --project-dir project-A -t upload` for Project-A

- `pio remote run -d project-B -t upload` for Project-B

See documentation for `platformio remote run --project-dir` option.

---

# 💖 Codeanywhere 💖

Codeanywhere is a Cross Platform Cloud IDE and it has <rainbow>all</rainbow> the features of a Desktop IDE, plus extra features only a cloud application can give you! Codeanywhere is super flexible and you can set up your workflow any way you want it. The elegant development environment lets you focus on building great applications quicker. All the features you'll ever need for any coding task are built into Codeanywhere, making development more productive and fun. 🎀

## 🌸 Contents 🌸

- Codeanywhere

  - Demo

  - Integration

  - Quick Start

  - Run Button

  - Remote Device Manager

  - Remote Firmware Uploading

  - Remote Serial Port Monitor

  - Multi-Project workspace

> **NOTE:**
>
> 1. Please make sure to read `pioremote` guide first. 🙈
>
> 2. You need `pioaccount` if you don't have it. Registration is FREE.
>
> 3. You should have a running `cmd_remote_agent` on a remote machine where hardware devices are connected physically or accessible for the remote operations. See PIO Remote `pio_remote_quickstart` for details.

## ⭐ Demo ⭐

### 💜 Integration 💜

1. Sign in to Codeanywhere. Registration is FREE and gives you unlimited private projects within the one Container. Slay.

2. Open <cyan>Dashboard Projects</cyan>

3. Create a new Project and open it. In <cyan>Connection Wizard</cyan> create a new Container:

   - **Name** — set to `"PlatformIO"`

   - **Stack** — search for Python stack (<red>not Python3</red>) that is based on Ubuntu OS.

   - Click on the <cyan>"Create"</cyan> button.

`[image]`

4. Open the <cyan>SSH-Terminal</cyan> tab (right click on Container (PlatformIO) > SSH Terminal) and install `piocore` using this command:

sudo python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/develop/scripts/get-platformio.py)"


`[image]`

5. Log in to `pioaccount` using the `cmd_account_login` command.

## 🧚 Quick Start 🧚

Let's create our very first PlatformIO-based Codeanywhere Project, bestie 🫶

1. Initialize a new PlatformIO-based Project. Run this command in the Cloud IDE SSH Terminal:

platformio project init --board <ID>

initialize project for Arduino Uno

platformio project init --board uno


To get the board ID please use `cmd_boards` command or the Embedded Boards Explorer.

If you don't see the created project, please refresh the Project Tree using right-click on Container Name (PlatformIO) > Refresh.

2. Create a new source file named `main.cpp` in the `src` folder using the Project Tree (left side). Right click on the `src` folder, then <cyan>"Create File"</cyan> and insert this content:

#include <Arduino.h>

int i = 0;

void setup() { Serial.begin(9600); Serial.println("Hello Codeanywhere!"); }

void loop() { /* serial echo */ while (Serial.available()) { Serial.write(Serial.read()); }

i++; Serial.println(i); delay(100); }


`[image]`

3. If you prefer working with the `piocore` CLI, then you can process the project using the Cloud IDE SSH Terminal and these commands:

   - `cmd_run` — build project locally (using the Cloud IDE's virtual machine)

   - `pio run -t clean` — clean project

   - `pio remote run -t upload` — upload firmware (program) to a remote device

   - `cmd_remote_device_list` — list available remote devices

   - `cmd_remote_device_monitor` — Remote Serial Port Monitor

4. We recommend hiding <cyan>"Hidden Files"</cyan>. You can do that via the Cloud IDE Menu: <cyan>View > Show Hidden Files</cyan>.

## 👑 Run Button 👑

Codeanywhere gives you a quick <cyan>"Run Project"</cyan> button where you can specify your own command. Let's add a <cyan>"PlatformIO Build Project"</cyan> command:

1. Open <cyan>"Project Config"</cyan> via right click on Container Name (PlatformIO) > Config

2. Set the commands field to

"commands": [ "pio run" ]


3. Save the configuration file.

Now try clicking the <cyan>"Run Project"</cyan> button. You can assign <hotpink>any</hotpink> PlatformIO command to this button. `[image]`

## 🍓 Remote Device Manager 🍓

Remote Device Manager works in pair with `pioremote`. You can list remote devices that are connected to the host machine where `cmd_remote_agent` is started, or are visible to it. 💅

1. Open Cloud IDE SSH Terminal

2. Paste this command

pio remote device list


`[image]`

## 💀 Remote Firmware Uploading 💀

Remote Firmware Uploading works in pair with `pioremote`. You can deploy firmware to any devices that are visible for `cmd_remote_agent`. ✨

1. Open Cloud IDE SSH Terminal

2. Paste this command

pio remote run -t upload


`[image]`

## 🌟 Remote Serial Port Monitor 🌟

Remote Serial Port Monitor works in pair with `pioremote`. You can read from or send data to any device connected to the host machine where `cmd_remote_agent` is started. To list active agents please use the `cmd_remote_agent_list` command.

1. Open Cloud IDE SSH Terminal

2. Paste this command

pio remote device monitor


`[image]`

## 🦄 Multi-Project workspace 🦄

You can have multiple PlatformIO-based Projects in the same workspace. We recommend this folders structure:

├── project-A │ ├── lib │ │ └── README │ ├── platformio.ini │ └── src │ └── main.ino └── project-B ├── lib │ └── README ├── platformio.ini └── src ├── main.cpp └── main.h


In this case, you need to use the `-d`, `--project-dir` option for `cmd_run` or `cmd_remote_run` commands:

- `pio remote run --project-dir project-A -t upload` — build Project-A

- `pio remote run --project-dir project-A -t upload` — remote firmware uploading using Project-A

- `pio remote run -d project-B -t upload` — remote firmware (program) uploading using Project-B

See documentation for `platformio remote run --project-dir` option.

---

# 🎀 Eclipse Che 🎀

Eclipse Che is an open-source Java based developer workspace server and cloud integrated development environment (IDE) which provides a remote development platform for multi-user purpose. The workspace server comes with a RESTful webservice and gives you high flexibility. It also contains an SDK which can be used to create plug-ins for languages, frameworks or tools. 🌈

## 🌸 Contents 🌸

- Eclipse Che

  - Demo

  - Integration

  - Quick Start

  - Multi-Project workspace

> **NOTE:**
>
> 1. Please make sure to read `pioremote` guide first. 🙈
>
> 2. You need `pioaccount` if you don't have it. Registration is FREE.
>
> 3. You should have a running `cmd_remote_agent` on a remote machine where hardware devices are connected physically or accessible for the remote operations. See PIO Remote `pio_remote_quickstart` for details.

## ⭐ Demo ⭐

`[image]`

## 💜 Integration 💜

1. Sign in to Codenvy (based on Eclipse Che). Registration is FREE and gives you unlimited private projects. Periodt.

2. Open the <cyan>Workspaces</cyan> tab

3. Click on <cyan>"Add Workspace"</cyan>, then switch to the <cyan>"Runtime"</cyan> tab.

   - **Name** — set to `"PlatformIO"`

   - **Stack** — search for <cyan>PLATFORMIO</cyan>

   - Click on the <cyan>"Create"</cyan> button, then <cyan>"Open"</cyan>.

`[image]`

4. Using the opened Terminal, please log in to `pioaccount` using the `cmd_account_login` command.

## 🧚 Quick Start 🧚

Let's create our first PlatformIO-based Codenvy Project ✨

1. Click on Menu: <cyan>Workspace > Create New Project</cyan> and select the `platformio-arduino-blink` sample. Set <cyan>"Name"</cyan> to `"Arduino Blink"` and press <cyan>"Create"</cyan>.

`[image]`

2. Now you can use the dropdown <cyan>Commands</cyan> menu and process the project with the `"run"` command.

`[image]`

3. If you prefer working with the `piocore` CLI, then you can process the project using the Cloud IDE Terminal and these commands:

   - `cmd_run` — build project locally (using the Cloud IDE's virtual machine)

   - `pio run -t clean` — clean project

   - `pio remote run -t upload` — upload firmware (program) to a remote device

   - `cmd_remote_device_list` — list available remote devices

   - `cmd_remote_device_monitor` — Remote Serial Port Monitor

## 🌈 Multi-Project workspace 🌈

You can have multiple PlatformIO-based Projects in the same workspace. We recommend a next folders structure:

├── project-A │ ├── lib │ │ └── README │ ├── platformio.ini │ └── src │ └── main.ino └── project-B ├── lib │ └── README ├── platformio.ini └── src ├── main.cpp └── main.h


<pink>okay bestie look at this vibe 💖</pink> when your folders are all side-by-side like this, you gotta point at the one you actually mean. that's literally what the <hotpink>`-d`</hotpink>, <hotpink>`--project-dir`</hotpink> option is for — it works with the <cyan>`cmd_run`</cyan> or <cyan>`cmd_remote_run`</cyan> commands:

- `pio remote run --project-dir project-A -t upload` — build Project-A

- `pio remote run --project-dir project-A -t upload` — remote firmware uploading, using Project-A

- `pio remote run -d project-B -t upload` — remote firmware (program) uploading, using Project-B

<purple>see the docs for the `platformio remote run --project-dir` option for the full tea ✨</purple>

## 🖥️ Desktop IDE 🖥️

### 🌸 PlatformIO IDE for Atom 🌸

<pink>PlatformIO IDE is the next-generation integrated development environment for IoT. no cap. 💅</pink>

- Cross-platform build system without external dependencies to the OS software:

  - 800+ boards

  - 35+ platforms

  - 20+ frameworks

- piodebug

- pioremote

- unit_testing

- C/C++ Intelligent Code Completion

- C/C++ Smart Code Linter for rapid professional development

- Library Manager for the hundreds popular libraries

- Multi-projects workflow with multiple panes

- Themes support with dark and light colors

- Serial Port Monitor

- Built-in Terminal with piocore and CLI tool (`pio`, `platformio`)

- Built-in piohome

---

<purple>Atom is a text editor that's modern, approachable, yet hackable to the core — a tool you can customize to do anything but also use productively without ever touching a config file. it's giving "have it both ways" and honestly? iconic. 🦋</purple>

### ✨ Contents ✨

- Installation

  - I. Atom

  - II. Clang for Intelligent Code Completion

- Quick Start

  - Launch

  - Setting Up the Project

  - Process Project

- Menu item PlatformIO

- PlatformIO Toolbar

- Building / Uploading / Targets

- Intelligent Code Completion

- Smart Code Linter

- Install Shell Commands

- Known issues

  - Smart Code Linter is disabled for Arduino files

    - Convert Arduino file to C++ manually

    - Force Arduino file as C++

  - Arch Linux: PlatformIO IDE Terminal issue

- Frequently Asked Questions

  - Keep build panel visible

  - Automatically save on build

  - Jump to Declaration

  - Code Formatting

- Uninstall Atom with PlatformIO IDE

  - Windows

  - macOS

  - Linux

- Articles / Manuals

- Changelog

### 💖 Installation 💖

> **NOTE:** <yellow>pls note that you do NOT need to install `piocore` separately if you're gonna use PlatformIO IDE for Atom.</yellow> `piocore` is built into PlatformIO IDE and you'll be able to use it right inside the PlatformIO IDE Terminal.

> <lavender>also!! PlatformIO IDE lets you install `piocore` Shell Commands (`pio`, `platformio`) globally on your system via Menu: `PlatformIO` > `Install Shell Commands`.</lavender>

### 🎀 I. Atom 🎀

0. Download and install GitHub's official Atom text editor. PlatformIO IDE is built on top of it.

1. Open Atom Package Manager

   - Mac OS X, Menu: `Atom` > `Preferences` > `Install`

   - Windows, Menu: `File` > `Settings` > `Install`

   - Linux, Menu: `Edit` > `Preferences` > `Install`

2. Search for the official `platformio-ide` package

3. Install PlatformIO IDE.

[image]

### 🦋 II. Clang for Intelligent Code Completion 🦋

<pink>PlatformIO IDE uses Clang for the Intelligent Code Completion.</pink> To check that `clang` is available in your system, please open Terminal and run `clang --version`. If `clang` is not installed, then install it and restart Atom:

- Mac OS X: Install the latest Xcode along with the latest Command Line Tools (they are installed automatically when you run `clang` in Terminal for the first time, or manually by running `xcode-select --install`

- Windows: Download Clang 3.9.1 for Windows. Please select "Add LLVM to the system PATH" option on the installation step.

  - Clang 3.9.1 for Windows (32-bit)

  - Clang 3.9.1 for Windows (64-bit)

  [image]

  > **WARNING:** <red>PLEASE DO NOT INSTALL CLANG 4.0. TEMPORARILY, WE SUPPORT ONLY CLANG 3.9.</red>
  >
  > If you see a `Failed to find MSBuild toolsets directory` error in the installation console, please ignore it and press any key to close this window. PlatformIO IDE uses only the Clang completion engine, which should work after that without any problems.

- Linux: Using package managers: `apt-get install clang` or `yum install clang`.

- Other Systems: Download the latest Clang for the other systems.

> **WARNING:** <yellow>If some libraries are not visible in PlatformIO IDE for Atom and Code Completion or Code Linting does not work properly, please perform Menu: `PlatformIO` > `Rebuild C/C++ Project Index (Autocomplete, Linter)`</yellow>

### 🌈 Quick Start 🌈

<purple>This tutorial introduces you to the basics of PlatformIO IDE workflow and shows you the creation process for a simple "Blink" example. After finishing, you will have a general understanding of how to work with projects in the IDE.</purple>

### ⭐ Launch ⭐

After installation, launch PlatformIO IDE by opening Atom. Once Atom is opened, the PlatformIO IDE auto installer will continue to install dependent packages and `piocore`. Please be patient and let the installation complete. Once finished, PlatformIO IDE will ask you to reload the Atom window to apply installed components. Please click on `Reload Now`. After that, PlatformIO IDE is ready for use. Happy coding!

### 💜 Setting Up the Project 💜

1. Click on the "PlatformIO Home" button on the PlatformIO Toolbar

[image]

2. Click on "New Project", select a board and create a new PlatformIO Project

[image]

3. Open the `main.cpp` file in the `src` folder and replace its contents with the following:

> **WARNING:** <yellow>The code below only works with Arduino-based boards. Please visit the PlatformIO Project Examples repository for other pre-configured projects.</yellow>

/**

  • Blink *
  • Turns on an LED on for one second,
  • then off for one second, repeatedly. */ #include "Arduino.h"

// Set LED_BUILTIN if it is not defined by Arduino framework // #define LED_BUILTIN 13

void setup() { // initialize LED digital pin as an output. pinMode(LED_BUILTIN, OUTPUT); }

void loop() { // turn the LED on (HIGH is the voltage level) digitalWrite(LED_BUILTIN, HIGH);

// wait for a second delay(1000);

// turn the LED off by making the voltage LOW digitalWrite(LED_BUILTIN, LOW);

// wait for a second delay(1000); }


[image]

### 🧚 Process Project 🧚

<pink>PlatformIO IDE proposes different ways to process the project (build, clean, upload firmware, run other targets) using:</pink>

- PlatformIO Toolbar

- Menu item PlatformIO

- Building / Uploading / Targets and hotkeys

[image]

5. Run `Build` and you should see a green "success" result in the build panel:

[image]

To upload firmware to the board, run `Upload`.

6. What is more, you can run specific target or process project environment using Menu: `PlatformIO` > `Run other target...` or call targets list from the status bar (bottom, left corner):

And select desired target: .

.INDENT 0.0

7. To launch the built-in terminal interface, choose Menu: `PlatformIO` > `Terminal` or press the corresponding icon in the PlatformIO toolbar:

This provides you fast access to a set of powerful `piocore` CLI commands:

.INDENT 0.0

8. To run the built-in "Serial Monitor", choose Menu: `PlatformIO` > `Serial Monitor` or press the corresponding icon in the PlatformIO toolbar:

The monitor has several settings to adjust your connection:

It also allows you to communicate with your board in an easy way:

### 💅 Menu item PlatformIO 💅

<purple>The `platformio-ide` package adds to Atom a new menu item named Menu: `PlatformIO` (after the Menu: `Help` item).</purple> [image]

### 🌸 PlatformIO Toolbar 🌸

PlatformIO IDE Toolbar contains quick access buttons for the popular commands. Each button contains a hint (leave the mouse on it for a moment). [image]

- piohome

- PlatformIO: Build

- PlatformIO: Upload

- PlatformIO: Clean

- piodebug

- Run other target (Build environments, unit_testing)

- Toggle build panel

- ||

- Find in Project...

- PIO Terminal

- Serial Monitor

- ||

- Atom Settings

### 🔥 Building / Uploading / Targets 🔥

- `cmd-alt-b` / `ctrl-alt-b` / `f9` builds project without auto-uploading.

- `cmd-alt-u` / `ctrl-alt-u` builds and uploads (if no errors).

- `cmd-alt-c` / `ctrl-alt-c` cleans compiled objects.

- `cmd-alt-t` / `ctrl-alt-t` / `f7` run other targets (Upload using Programmer, Upload SPIFFS image, Update platforms and libraries).

- `cmd-alt-g` / `ctrl-alt-g` / `f4` cycles through causes of build error.

- `cmd-alt-h` / `ctrl-alt-h` / `shift-f4` goes to the first build error.

- `cmd-alt-v` / `ctrl-alt-v` / `f8` toggles the build panel.

- `escape` terminates build / closes the build window.

More options: Menu: `PlatformIO` > `Settings` > `Build`.

### ✨ Intelligent Code Completion ✨

PlatformIO IDE uses `clang` for the Intelligent Code Completion. To install it or check if it is already installed, please follow see the step II. Clang for Intelligent Code Completion from Installation guide.

> **WARNING:** <yellow>The libraries which are added/installed after the initializing process will not be reflected in the code linter. You need Menu: `PlatformIO` > `Rebuild C/C++ Project Index (Autocomplete, Linter)`.</yellow>

### 🎀 Smart Code Linter 🎀

PlatformIO IDE uses PlatformIO's pre-built GCC toolchains for Smart Code Linter and rapid professional development. The configuration data are located in `.gcc-flags.json`. This file will be automatically created and preconfigured when you initialize project using Menu: `PlatformIO` > `Initialize new PlatformIO Project or update existing...`.

> **WARNING:** <yellow>If some libraries are not visible in PlatformIO IDE for Atom and Code Completion or Code Linting does not work properly, please perform Menu: `PlatformIO` > `Rebuild C/C++ Project Index (Autocomplete, Linter)`</yellow>

### 💖 Install Shell Commands 💖

Please navigate to PIO Core `piocore_install_shell_commands`.

### 🦋 Known issues 🦋

**Smart Code Linter is disabled for Arduino files**

<pink>Smart Code Linter is disabled by default for Arduino files (`*.ino` and `.pde`) because they are not valid C/C++ based source files:</pink>

1. Missing includes such as `#include <Arduino.h>`

2. Function declarations are omitted.

okay bestie so there are literally two ways to handle this and you get to pick your fighter 💅

- <purple>**Convert Arduino file to C++ manually**</purple>
- <purple>**Force Arduino file as C++**</purple>

---

## ✨ Convert Arduino file to C++ manually ✨

<pink>**Recommended!**</pink> fr fr, this is the one you want. See `faq_convert_ino_to_cpp`. 🫶

---

## ✨ Force Arduino file as C++ ✨

okay so if you really wanna force Smart Code Linter to treat Arduino files as C++, here's the whole vibe:

1. Open the `.gcc-flags.json` file from the Initialized/Imported project and add the `-x c++` flag at the beginning of the value of the `gccDefaultCppFlags` field, like this:

{ "execPath": "...", "gccDefaultCFlags": "...", "gccDefaultCppFlags": "-x c++ -fsyntax-only ...", "gccErrorLimit": 15, "gccIncludePaths": "...", "gccSuppressWarnings": false }


2. Perform all the steps from <purple>Convert Arduino file to C++ manually</purple> — just *without* renaming to `.cpp`.

> ⚠️ <red>**WARNING:**</red> bestie please do **NOT** touch the other flags in there. They will get removed on the next `"Project Rebuild C/C++ Index"` stage. Use `projectconf_build_flags` for `projectconf` instead. no cap. 🚫

---

## 🌈 Arch Linux: PlatformIO IDE Terminal issue 🌈

Please read this article <cyan>Installing PlatformIO on Arch Linux</cyan>. 🐧

---

# 💖 Frequently Asked Questions 💖

## 🌸 Keep build panel visible 🌸

By default, PlatformIO IDE hides the build panel on success — it's giving "surprise, I'm gone" 😭. But ngl you can keep it visible all the time. Just go to <purple>`Menu: PlatformIO > Settings > Build`</purple> and set **Panel Visibility** to **Keep Visible**. ✨

Key-bindings (toggle panel), iconic:

- `cmd+alt+v` — Mac OS X
- `ctrl+alt+v` — Windows/Linux

## 🌸 Automatically save on build 🌸

If you want all your edited files to automatically save when you trigger a build, head to <purple>`Menu: PlatformIO > Settings > Build`</purple> and check **Automatically save on build**. easy peasy 🎀

## 🌸 Jump to Declaration 🌸

Click on a function/include, press `F3`, and boom — you get teleported directly to the declaration for that function. main character energy tbh 🔥

## 🌸 Code Formatting 🌸

You need to install the `atom-beautify` package and the `C/C++ Uncrustify Code Beautifier`. periodt. 💅

## 🌸 Uninstall Atom with PlatformIO IDE 🌸

Here's how to uninstall the PlatformIO IDE for multiple OS. 🫶

See `piocore_uninstall`, if you do not need it in a system.

### 🦋 Windows 🦋

1. Uninstall Atom using `"Start > Control Panel > Programs and Features > Uninstall"`

2. Remove the `C:\Users\<user name>\.atom` folder (settings, packages, etc...)

3. Remove the `C:\Users\<user name>\AppData\Local\atom` folder (the application itself)

4. Remove the `C:\Users\<user name>\AppData\Roaming\Atom` folder (cache, etc.)

5. Remove registry records using `regedit`:

  - `HKEY_CLASSES_ROOT\Directory\Background\shell`
  - `HKEY_CLASSES_ROOT\Directory\shell`
  - `HKEY_CLASSES_ROOT*\shell`

### 🦋 macOS 🦋

Run these commands in system Terminal:

rm -rf ~/.atom rm /usr/local/bin/atom rm /usr/local/bin/apm rm -rf /Applications/Atom.app rm ~/Library/Preferences/com.github.atom.plist rm ~/Library/Application\ Support/com.github.atom.ShipIt rm -rf ~/Library/Application\ Support/Atom rm -rf ~/Library/Saved\ Application\ State/com.github.atom.savedState rm -rf ~/Library/Caches/com.github.atom rm -rf ~/Library/Caches/Atom


### 🦋 Linux 🦋

Run these commands in system Terminal:

rm /usr/local/bin/atom rm /usr/local/bin/apm rm -rf ~/atom rm -rf ~/.atom rm -rf ~/.config/Atom-Shell rm -rf /usr/local/share/atom/


---

## 📚 Articles / Manuals 📚

- Mar, 31, 2017 - Robin Reiter - A little guide to PlatformIO. As an Arduino developer, you may want to check that out! (video review)
- Dec 13, 2016 - Dr. Patrick Mineault - Multi-Arduino projects with PlatformIO
- Nov 10, 2016 - PiGreek - PlatformIO the new Arduino IDE ?!
- Aug 18, 2016 - Primal Cortex - Installing PlatformIO on Arch Linux
- Jul 26, 2016 - Embedded Systems Laboratory - แนะนำการใชงาน PlatformIO IDE สำหรบบอรด Arduino และ ESP8266 (Get started with PlatformIO IDE for Arduino board and ESP8266, Thai)
- May 30, 2016 - Ron Moerman - IoT Development with PlatformIO
- May 01, 2016 - Pedro Minatel - PlatformIO – Uma alternativa ao Arduino IDE (PlatformIO - An alternative to the Arduino IDE, Portuguese)
- Apr 23, 2016 - Al Williams - Hackaday: Atomic Arduino (and Other) Development
- Apr 16, 2016 - Sathittham Sangthong - [PlatformIO] มาลองเลน PlatformIO แทน Arduino IDE กน (Let's play together with PlatformIO IDE [alternative to Arduino IDE], Thai)
- Apr 11, 2016 - Matjaz Trcek - Top 5 Arduino integrated development environments
- Apr 06, 2016 - Aleks - PlatformIO ausprobiert (Tried PlatformIO, German)
- Apr 02, 2016 - Diego Pinto - Você tem coragem de abandonar a IDE do Arduino? PlatformIO + Atom (Do you dare to leave the Arduino IDE? PlatformIO + Atom, Portuguese)
- Mar 30, 2016 - Brandon Cannaday - Getting Started with PlatformIO and ESP8266 NodeMcu
- Mar 12, 2016 - Peter Marks - PlatformIO, the Arduino IDE for programmers
- Mar 05, 2016 - brichacek.net - PlatformIO – otevřený ekosystém pro vývoj IoT (PlatformIO – an open source ecosystem for IoT development, Czech)
- Mar 04, 2016 - Ricardo Vega - Programa tu Arduino desde Atom (Program your Arduino from Atom, Spanish)
- Feb 28, 2016 - Alex Bloggt - PlatformIO vorgestellt (Introduction to PlatformIO IDE, German)
- Feb 25, 2016 - NutDIY - PlatformIO Blink On Nodemcu Dev Kit V1.0 (Thai)

See a full list with articles. 🔥

---

## 🗒️ Changelog 🗒️

Please visit releases page.

---

# 👑 CLion 👑

The CLion is a cross-platform C/C++ IDE for Linux, OS X, and Windows. CLion includes such features as a smart editor, code generation, code quality assurance, automated refactorings, on-the-fly code analysis, project manager, integrated version control systems and debugger. 💅

Refer to the CLion Documentation page for more detailed information. [image]

## 🎀 Contents 🎀

- Installation
- Known issues
  - Project configuration and CMake
  - CLion does not load project build environments from `"platformio.ini"`
  - Arduino `.ino` files are not supported
- Quick Start
  - Setting Up the Project
  - Build & Upload
    - Configuration options
  - Device/Serial Monitor
  - Debugging
    - Peripheral Registers
  - PlatformIO Home

## 🎀 Installation 🎀

1. Install PlatformIO Core (CLI). See `core_installation` guide

> ⚠️ <red>**WARNING:**</red> This a temporary step and depends on CLion `#CPP-19412`: Automatically install PlatformIO Core

2. Download and install CLion IDE

3. Install official PlatformIO for CLion plugin. Open `"Configure > Plugins"` window and go to the `"Marketplace"` tab. Search for PlatformIO and press the `"Install"` button. [image]

4. Restart CLion IDE.

> 💡 <yellow>**NOTE:**</yellow> We also recommend to install `Ini` plugin that provides syntax highlighting, formatting, code folding, and viewing structure for `projectconf`.

## 🎀 Known issues 🎀

### 🌟 Project configuration and CMake 🌟

PlatformIO does not depend on `"CMake"` and uses own multi-platform build system. Project configuration, such as build flags, library dependencies, etc., should be declared in `projectconf`.

> ⚠️ <red>**WARNING:**</red> Please note that `"PlatformIO for CLion"` plugin does not update automatically CLion configuration. There is a feature request CLion `#CPP-18367`: Follow `platformio.ini` changes and update the project.

Update CLion configuration: `"Tools > PlatformIO > Re-Init"`

### 🌟 CLion does not load project build environments from platformio.ini 🌟

This is a known issue CLion `CPP-19478`: CLion does not handle `"CMAKE_CONFIGURATION_TYPES"` from `CMakeLists.txt`. A temporary solution is to manually configure project profiles in CLion. 🫠

Please open CLion Settings and navigate to `"Build, Execution, Deployment > CMake"`. Press `"+"` button and PlatformIO-based project profiles: [image]

### 🌟 Arduino .ino files are not supported 🌟

CLion uses `"CMake"` tool for code completion and code linting. As a result, it doesn't support the Arduino files (`*.ino` and `*.pde`) because they are not valid C/C++ based source files:

1. Missing includes such as `#include <Arduino.h>`

2. Function declarations are omitted.

See how to `faq_convert_ino_to_cpp`.

## 🎀 Quick Start 🎀

This tutorial introduces you to the basics of PlatformIO for CLion workflow and shows you a creation process of a simple `"Blink"` example. After finishing you will have a general understanding of how to work with projects in the CLion IDE. ✨

### 🌟 Setting Up the Project 🌟

1. Please open `"New Project"` wizard, select board and framework, and create a new PlatformIO project. Please USE ONLY Latin characters (a-z) in a project name to avoid further issues with project compilation. Numbers and some symbols are allowed depending on a file system: [image]

2. Rename `main.c` file in `src` folder to `main.cpp` (right click on a file `main.c`, Refactor > Rename...) . Paste the next contents:

> ⚠️ <red>**WARNING:**</red> The code below works only in pair with Arduino-based boards. Please follow to PlatformIO Project Examples repository for other pre-configured projects.

/**

  • Blink *
  • Turns on an LED on for one second,
  • then off for one second, repeatedly. */ #include "Arduino.h"

// Set LED_BUILTIN if it is not defined by Arduino framework // #define LED_BUILTIN 13

void setup() { // initialize LED digital pin as an output. pinMode(LED_BUILTIN, OUTPUT); }

void loop() { // turn the LED on (HIGH is the voltage level) digitalWrite(LED_BUILTIN, HIGH);

// wait for a second delay(1000);

// turn the LED off by making the voltage LOW digitalWrite(LED_BUILTIN, LOW);

// wait for a second delay(1000); }


[image]

### 🌟 Build & Upload 🌟

1. Open project configuration wizard and add **PlatformIO Upload** and **PlatformIO Debug** configurations (you can add the rest configurations if you need them): [image]

2. Remove pre-task (`"Build"`) from **PlatformIO Upload** and **PlatformIO Debug** configurations to avoid double project building. You should see `"There are no tasks to run before launch"`. [image]

3. Select **PlatformIO Upload** configuration and use the `"Build"` button for project compilation or the `"Run"` for a firmware uploading: [image]

#### 💫 Configuration options 💫

- `projectconf_section_env_build`
- `projectconf_section_env_upload`

### 🌟 Device/Serial Monitor 🌟

Please open CLion terminal and use `cmd_device`. You can also configure device monitor per project using `projectconf_section_env_monitor`. 🖥️

Please note that you need to manually close/stop device monitor before firmware uploading. no skipping this one bestie 😭

### 💻 Debugging

"PlatformIO for CLion" straight up supports `piodebug`, which means you can debug your app with a 1-Click flow, no extra steps, no tears 💅. Just pick the **PlatformIO Debug** configuration and smash that **"Debug"** button:

[image]

### 🔬 Peripheral Registers

Okay bestie, go to the **"Peripheral"** tab in a **"Debug"** view, hit the **"Configure"** icon, and pick which registers you wanna monitor. Then close the configuration window and you're set ✨

[image]

> <red>**WARNING:**</red> Right now, CLion does **not** load automatically the Peripheral Register Definitions (SVD file) that PlatformIO provides. There's a feature request — **CLion #CPP-18369: Support `CLION_SVD_FILE_PATH` CMake variable to auto-find svd file**.

> <peach>A temporary fix, bestie:</peach> open `CMakeListsPrivate.txt` from the root of your PlatformIO project and remember the SVD file declared in the `CLION_SVD_FILE_PATH` **"CMake"** variable. Now press the **"+"** button in the Peripherals Wizard and select the SVD file mentioned in `CLION_SVD_FILE_PATH`.

### 🏠 PlatformIO Home

As of rn, `piohome` is **not** integrated into "PlatformIO for CLion". There's a related feature request — **CLion: CPP-19493 Integrate PlatformIO Home**.

But ngl, you *can* start it manually and open it in your browser 🫶. Just know some features don't work, like project opening. Open the CLion terminal and run the `cmd_home` command:

platformio -c clion home


[image]

---

📚 **Further for reading:**

- tutorials (step-by-step tutorials with debugging and unit testing)
- CLion documentation.

Happy coding with PlatformIO! 💖

---

### 🧩 CodeBlocks

Code::Blocks is a free, open-source, cross-platform IDE that supports multiple compilers — think GCC, Clang and Visual C++ 👑. It's developed in C++ using wxWidgets as the GUI toolkit. Thanks to its plugin architecture, its capabilities and features are defined by the plugins you provide. Currently, Code::Blocks is oriented towards C, C++, and Fortran.

You can download the CodeBlocks IDE from here.

#### 📑 Contents

- CodeBlocks
  - Integration

#### 🔌 Integration

The integration process is these steps, in order:

1. Open system Terminal and install `piocore`
2. Create a new folder for your project and change directory (`cd`) to it
3. Generate a project using PIO Core Project Generator (`platformio project init --ide`)
4. Import project in IDE.

---

Pick your board ID using `cmd_boards` or the Embedded Boards Explorer command, then generate the project via the `platformio project init --ide` command:

platformio project init --ide codeblocks --board <ID>

For example, generate project for Arduino UNO

platformio project init --ide codeblocks --board uno


Then:

1. Open this project via **Menu: File > Open...**
2. Add new files to `src` directory (`*.c`, `*.cpp`, `*.ino`, etc.) via **Menu: File > New > File...**
3. Build project using **Menu: Build > Build**
4. Upload firmware using **Menu: Build > Run**

> <red>**WARNING:**</red> The libraries which are added, installed or used in the project *after* the generating process won't be reflected in the IDE 😭. To fix it you need to reinitialize the project using `cmd_project_init` (repeat it).

---

### 🌘 Eclipse

The Eclipse CDT (C/C++ Development Tooling) Project provides a fully functional C and C++ Integrated Development Environment based on the Eclipse platform ✨. Its features include: support for project creation and managed build for various toolchains, standard make build, source navigation, various source knowledge tools — like type hierarchy, call graph, include browser, macro definition browser — a code editor with syntax highlighting, folding and hyperlink navigation, source code refactoring and code generation, plus visual debugging tools including memory, registers, and disassembly viewers.

Refer to the CDT Documentation page for more detailed info.

#### 📑 Contents

- Integration
- Live Integration
- Debugging
- Articles / Manuals

#### 🔌 Integration

The integration process is these steps, in order:

1. Open system Terminal and install `piocore`
2. Create a new folder for your project and change directory (`cd`) to it
3. Generate a project using PIO Core Project Generator (`platformio project init --ide`)
4. Import project in IDE.

---

Pick your board ID using `cmd_boards` or the Embedded Boards Explorer command, then generate the project via the `platformio project init --ide` command:

platformio project init --ide eclipse --board <ID>

For example, generate project for Arduino UNO

platformio project init --ide eclipse --board uno


Then:

1. Import this project via **Menu: File > Import... > General > Existing Projects into Workspace > Next** and specify the root directory where is located `projectconf`
2. Open source file from `src` directory (`*.c`, `*.cpp`, `*.ino`, etc.)
3. Build project using **Menu: Project > Build Project** or the pre-configured Make Targets (see screenshot below):
   - **PlatformIO: Build** — Build project without auto-uploading
   - **PlatformIO: Clean** — Clean compiled objects.
   - **PlatformIO: Test** — `unit_testing`
   - **PlatformIO: Upload** — Build and upload (if no errors)
   - **PlatformIO: Upload using Programmer** — see `atmelavr_upload_via_programmer`
   - **PlatformIO: Upload SPIFFS image** — see `platform_espressif_uploadfs`
   - **PlatformIO: Update platforms and libraries** — Update installed platforms and libraries via `cmd_update`
   - **PlatformIO: Rebuild C/C++ Project Index** — Rebuild C/C++ Index for the Project. Allows one to fix code completion and code linting issues.

If you have some problems with unresolved includes, defines, etc., then:

1. Rebuild PlatformIO Project Index: **PlatformIO: Rebuild C/C++ Project Index** target
2. Rebuild Eclipse Project Index: **Menu: Project > C/C++ Index > Rebuild**
3. Refresh Project, right click on the project **Project > Refresh (F5)** or restart Eclipse IDE.

> <red>**WARNING:**</red> The libraries which are added, installed or used in the project after the generating process won't be reflected in the IDE 😭. To fix it please run the **PlatformIO: Rebuild C/C++ Project Index** target and right click on the project and **Project > Refresh (F5)**.

> <red>**WARNING:**</red> The **C/C++ GCC Cross Compiler Support** package must be installed in Eclipse, otherwise the **CDT Cross GCC Built-in Compiler Settings** provider will not be available (check the **Providers** tab in **Project > Properties > C/C++ General > Preprocessor Include Paths, Macros etc.** for a marked entry named **CDT Cross GCC Built-in Compiler Settings**).

> <peach>If this provider is not available, toolchain related includes cannot be resolved.</peach>

#### 🌐 Live Integration

Eclipse Virtual IoT Meetup: **PlatformIO: a cross-platform IoT solution to build them all!**

#### 💻 Debugging

The debugging feature is provided by `piodebug` and a new debug configuration named **"PlatformIO Debugger"** is created. No need to do extra configuration steps, fr fr 🎀!

1. Build a project the first time or after a **"Clean"** operation using the **PlatformIO: Build** target
2. Launch debugger via **"Menu: Debug"** or the **"Bug Icon"** button on Tool Bar.
3. Wait for a while — PlatformIO will prepare the project for debugging and the session will be started soon.

#### 📚 Articles / Manuals

- May 05, 2016 — Ivan Kravets, Ph.D. / Eclipse Virtual IoT Meetup — *PlatformIO: a cross-platform IoT solution to build them all!*
- Sep 01, 2015 — Thomas P. Weldon, Ph.D. — *Improvised MBED FRDM-K64F Eclipse/PlatformIO Setup and Software Installation*
- Jul 11, 2015 — TrojanC — *Learning Arduino GitHub Repository*
- June 20, 2014 — Ivan Kravets, Ph.D. — *Building and debugging Atmel AVR (Arduino-based) project using Eclipse IDE+PlatformIO*

See a full list with articles.

---

### 🧚 Emacs

GNU Emacs is an extensible, customizable text editor — and more 👑. At its core is an interpreter for Emacs Lisp, a dialect of the Lisp programming language with extensions to support text editing.

Refer to the Emacs Documentation page for more detailed info.

#### 📑 Contents

- Emacs
  - Integration
    - PlatformIO-Mode
    - Project Generator

#### 🔌 Integration

The integration process is these steps, in order:

1. Open system Terminal and install `piocore`
2. Create a new folder for your project and change directory (`cd`) to it
3. Generate a project using PIO Core Project Generator (`platformio project init --ide`)
4. Import project in IDE.

---

#### 🦋 PlatformIO-Mode

An Emacs minor mode has been written to facilitate building and uploading from within Emacs ✨. It can be installed from the MELPA repository using `M-x package-install`. See the MELPA Getting Started page for more info.

Setup instructions and an example config can be found at the Github page.

Code completion can optionally be provided by installing `irony-mode`

#### ⚙️ Project Generator

Pick your board ID using `cmd_boards` or the Embedded Boards Explorer command, then generate the project via the `platformio project init --ide` command:

platformio project init --ide emacs --board <ID>


There are 6 predefined targets for building 💅

- `platformio_build` — Build project without auto-uploading. (`C-c i b`)
- `platformio_clean` — Clean compiled objects. (`C-c i c`)
- `platformio_upload` — Build and upload (if no errors). (`C-c i u`)
- `platformio_programmer_upload` — Build and upload using external programmer (if no errors, see `atmelavr_upload_via_programmer`). (`C-c i p`)
- `platformio_spiffs_upload` — Upload files to file system SPIFFS (see `platform_espressif_uploadfs`). (`C-c i s`)
- `platformio_update` — Update installed platforms and libraries. (`C-c i d`)

> <red>**WARNING:**</red> The libraries which are added, installed or used in the project after the generating process won't be reflected in the IDE 😭. To fix it you need to reinitialize the project using `cmd_project_init` (repeat it).

---

### 🫘 NetBeans

NetBeans is a Java-based integrated development environment (IDE) 💜. It provides out-of-the-box code analyzers and editors for working with the latest Java 8 technologies — Java SE 8, Java SE Embedded 8, and Java ME Embedded 8. The IDE also has a range of new tools for HTML5/JavaScript, in particular for Node.js, KnockoutJS, and AngularJS; enhancements that further improve its support for Maven and Java EE with PrimeFaces; and improvements to PHP and C/C++ support.

You can download the NetBeans IDE from here. Just make sure you download the C/C++ version (or, if you already use NetBeans, install the C/C++ development plugins) 🍓

> <red>WARNING:</red> bestie, real talk — the version of NetBeans IDE that <yellow>some Linux package repositories</yellow> hand you might be a <hotpink>Flatpak</hotpink> build, and those are <italic>known</italic> to have issues accessing the PlatformIO CLI you installed, because of the whole container nature of this technology. So the recommendation is: use the <green>native</green> version of the NetBeans IDE via the link above. Periodt. 💅

## Contents ✨

- NetBeans
  - Integration
  - Articles / Manuals

### Integration 🛠️

The integration process is literally just these steps:

1. Open system Terminal and install piocore
2. Create new folder for your project and change directory (`cd`) to it
3. Generate a project using PIO Core Project Generator (`platformio project init --ide`)
4. Import project in IDE.

---

Pick your board ID using `cmd_boards` or the Embedded Boards Explorer command, then generate the project via the `platformio project init --ide` command:

platformio project init --ide netbeans --board <ID>

For example, generate project for Arduino UNO

platformio project init --ide netbeans --board uno


Then:

1. Open this project via Menu: File > Open Project...
2. Add new files to `src` directory (`*.c`, `*.cpp`, `*.ino`, etc.) via right-click on `src` folder in the "Projects" pane
3. Build project using Menu: Run > Build Project
4. Upload firmware using Menu: Run > Run Project

> <red>WARNING:</red> the libraries which are added, installed or used in the project <italic>after</italic> the generating process **won't be reflected in the IDE**. To fix it you need to reinitialize the project using `cmd_project_init` (just repeat it). No cap, it's giving re-do-the-thing energy. 😭

### Articles / Manuals 📚

- Feb 22, 2016 - Grzegorz Hołdys - How to Integrate PlatformIO with Netbeans

See the full list with articles.

---

# Qt Creator 👑

The Qt Creator is an open source cross-platform integrated development environment. The editor includes such features as syntax highlighting for various languages, project manager, integrated version control systems, rapid code navigation tools and code autocompletion. It's honestly iconic of it. 🎀

Refer to the Qt-creator Manual page for more detailed information.

## Contents 🌸

- Qt Creator
  - Integration
    - Project Generator
    - Manual Integration
      - Setup New Project
      - First program in Qt Creator
      - Conclusion

### Integration 🦋

The integration process is made of these steps:

1. Open system Terminal and install piocore
2. Create new folder for your project and change directory (`cd`) to it
3. Generate a project using PIO Core Project Generator (`platformio project init --ide`)
4. Import project in IDE.

### Project Generator 🧚

Choose board ID using `cmd_boards` or the Embedded Boards Explorer command and generate the project via the `platformio project init --ide` command:

platformio project init --ide qtcreator --board <ID>

For example, generate project for Arduino UNO

platformio project init --ide qtcreator --board uno


Then:

1. Import project via File > Open File or Project and select `platformio.pro` from the folder where is located projectconf
2. Select default desktop kit and click on Configure Project (Projects mode, left panel)
3. Set General > Build directory to the project directory where is located projectconf
4. Remove all items from Build Steps, click on Build Steps > Add Build Step > Custom Process Step and set:

  - Command: `platformio`
  - Arguments: `-f -c qtcreator run`
  - Working directory: `%{buildDir}`

5. Remove all items from Clean Steps, click on Clean Steps > Add Clean Step > Custom Process Step and set:

  - Command: `platformio`
  - Arguments: `-f -c qtcreator run --target clean`
  - Working directory: `%{buildDir}`

6. Update `PATH` in Build Environment > PATH > EDIT with the result of this command (paste in Terminal):

Linux, Mac

echo $PATH

Windows

echo %PATH%


7. Switch to Edit mode (left panel) and open source file from `src` directory (`*.c`, `*.cpp`, `*.ino`, etc.)
8. Build project: Menu: Build > Build All.

> <red>WARNING:</red> the libraries which are added, installed or used in the project after the generating process **won't be reflected in the IDE**. To fix it you need to reinitialize the project using `cmd_project_init` (repeat it). 💀

### Manual Integration

### Setup New Project 🎀

First of all, let's create a new project from the Qt Creator Start Page: New Project, or using Menu: File > New File or Project, then select project with the `Empty Qt Project` type (Other Project > Empty Qt Project), fill Name, Create in.

On the next steps select any available kit and click the Finish button. <lavender>📸 [image]</lavender>

Secondly, we need to delete the default build and clean steps and configure the project with the PlatformIO Build System (click on the Projects label on the left menu or the `Ctrl+5` shortcut):

Thirdly, change the project file by adding the path to directories with header files. Please edit the project file to match the following contents:

win32 { HOMEDIR += $$(USERPROFILE) } else { HOMEDIR += $$(HOME) }

INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/framework-arduinoavr/cores/arduino" INCLUDEPATH += "$${HOMEDIR}/.platformio/packages/toolchain-atmelavr/avr/include"


### First program in Qt Creator ✨

A simple "Blink" project will consist of two files:

1. In the console, navigate to the root of your project folder and initialize the platformio project with `cmd_project_init`
2. The main "C" source file named `main.c` must be located in the `src` directory. Let's create a new text file named `main.c` using Menu: New File or Project > General > Text File:

Copy the source code which is described below to the file `main.c`.

#include "Arduino.h" #define WLED 13 // Most Arduino boards already have an LED attached to pin 13 on the board itself

void setup() { pinMode(WLED, OUTPUT); // set pin as output }

void loop() { digitalWrite(WLED, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(WLED, LOW); // set the LED off delay(1000); // wait for a second }


3. Locate the project configuration file named `platformio.ini` at the root of the project directory and open it.

Edit the content to match the code described below.

; PlatformIO Project Configuration File ; ; Build options: build flags, source filter, extra scripting ; Upload options: custom port, speed and extra flags ; Library options: dependencies, extra library storages ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html

[env:arduino_uno] platform = atmelavr framework = arduino board = uno


### Conclusion 💖

Taking everything into account, we can build the project with the shortcut `Ctrl+Shift+B` or using Menu: Build > Build All.

---

# Sublime Text 🌈

The Sublime Text is a cross-platform text and source code editor, with a Python application programming interface (API). Sublime Text is proprietary software. Its functionality is extendable with plugins. Most of the extending packages have free-software licenses and are community-built and maintained. Sublime Text lacks graphical setting dialogues and is entirely configured by editing text files. Very "iykyk" of it honestly. 💅

Refer to the Sublime Text Documentation page for more detailed information.

## Contents 🦋

- Deviot Plugin
- Integration
  - Project Generator
  - Manual Integration
    - Initial configuration
      - Command Hotkeys
    - First program in Sublime Text
    - Conclusion
- Debugging

### Deviot Plugin 🧚

We are glad to inform you about an awesome Sublime Text plugin for IoT development named **Deviot**. It is based on piocore and will automatically install it for you. Please visit the official Deviot page for the further installation steps and documentation.

### Integration 🛠️

### Project Generator ⭐

The integration process consists of these steps:

1. Open system Terminal and install piocore
2. Create new folder for your project and change directory (`cd`) to it
3. Generate a project using PIO Core Project Generator (`platformio project init --ide`)
4. Import project in IDE.

---

Choose board ID using `cmd_boards` or the Embedded Boards Explorer command and generate the project via the `platformio project init --ide` command:

platformio project init --ide sublimetext --board <ID>

For example, generate project for Arduino UNO

platformio project init --ide sublimetext --board uno


Then:

1. Import project via Menu: Project > Open Project... and select `platformio.sublime-project` from the folder where is located projectconf
2. Select PlatformIO as build system: Menu: Tools > Build System > PlatformIO
3. Open source file from `src` directory (`*.c`, `*.cpp`, `*.ino`, etc.)
4. Build project: Menu: Tools > Build.

Also, you can access all pre-configured targets via Menu: Tools > Builds With... (ST3):

- PlatformIO - Build - Build project without auto-uploading
- PlatformIO - Clean - Clean compiled objects.
- PlatformIO - Test - unit_testing
- PlatformIO - Upload - Build and upload (if no errors)
- PlatformIO - Upload using Programmer see `atmelavr_upload_via_programmer`
- PlatformIO - Upload SPIFFS image see `platform_espressif_uploadfs`
- PlatformIO - Update platforms and libraries - Update installed platforms and libraries via `cmd_update`.

### Manual Integration 🔧

> <yellow>NOTE:</yellow> please verify that the folder where is located the `platformio` program is added to the `PATH` (wiki) environment variable. Fr fr, don't skip this one. 🙈

### Initial configuration 🎀

First of all, we need to create a "New Build System" with the name "PlatformIO" from Menu: Tools > Build System > New Build System and fill it like described below:

{ "cmd": ["platformio", "-f", "-c", "sublimetext", "run"], "working_dir": "${project_path:${folder}}", "variants": [ { "name": "Clean", "cmd": ["platformio", "-f", "-c", "sublimetext", "run", "--target", "clean"] }, { "name": "Upload", "cmd": ["platformio", "-f", "-c", "sublimetext", "run", "--target", "upload"] } ] }


Secondly, we need to select the "PlatformIO" Build System from a list: <lavender>📸 [image]</lavender>

After that, we can use the necessary commands from Menu: Tools > Command Palette or with the `Ctrl+Shift+P` (Windows/Linux) or `Cmd+Shift+P` (Mac) shortcut. <lavender>📸 [image]</lavender>

### 🎀 Command Hotkeys 💅

Okay bestie, Sublime Text literally lets you bind your own hotkey per command — so obvi we're setting them up for PlatformIO commands using <pink>Menu: Preferences > Key-Bindings - User</pink>: `[image]`

We're going to use these shortcuts:

- <yellow>`F11`</yellow> for clean project
- <yellow>`F12`</yellow> for upload firmware to target device

In this case, the final code will look like:

[ { "keys": ["f11"], "command": "build", "args": {"variant": "Clean"} }, { "keys": ["f12"], "command": "build", "args": {"variant": "Upload"} } ]


---

### 🦋 First program in Sublime Text 🌸

A simple "Blink" project will consist from two files:

1. Main "C" source file named `main.c` must be located in the `src` directory. Let's create new file named `main.c` using <pink>Menu: File > New File</pink> or shortcut <yellow>`Ctrl+N`</yellow> (Windows/Linux) <yellow>`Cmd+N`</yellow> (Mac) with the next contents:

#include "Arduino.h" #define WLED 13 // Most Arduino boards already have an LED attached to pin 13 on the board itself

void setup() { pinMode(WLED, OUTPUT); // set pin as output }

void loop() { digitalWrite(WLED, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(WLED, LOW); // set the LED off delay(1000); // wait for a second }


2. Project Configuration File named `platformio.ini` must be located in the project root directory. Copy the source code which is described below to it.

; PlatformIO Project Configuration File ; ; Build options: build flags, source filter, extra scripting ; Upload options: custom port, speed and extra flags ; Library options: dependencies, extra library storages ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html

[env:arduino_uno] platform = atmelavr framework = arduino board = uno


### ✨ Conclusion ✨

Taking everything into account, we can open project directory in Sublime Text using <pink>Menu: File > Open Folder</pink> and build it with shortcut <yellow>`Ctrl+B`</yellow> (Windows/Linux) or <yellow>`Cmd+B`</yellow> (Mac), clean project with shortcut <yellow>`F11`</yellow> and upload firmware to target with shortcut <yellow>`F12`</yellow>. Iconic behaviour, honestly. 👑

### 💀 Debugging 💀

A debugging feature is provided by `piodebug` and new debug configuration named <purple>"PlatformIO Debugger"</purple> is created. No need to do extra configuration steps! Not me being obsessed with how easy that is. 😭

1. Install `SublimeGDB` package
2. Launch debugger with <yellow>`F5`</yellow>
3. Wait for a while, PlatformIO will prepare project for debugging and session will be started soon.

---

## 🧚 Vim 🧚

Vim is an open-source, powerful and configurable text editor. Vim is designed for use both from a command-line interface and as a standalone application in a graphical user interface. `[image]`

### 🌈 Contents 🌈

- Vim
  - Integration
    - "Neomake-PlatformIO" Plugin
    - Project Generator
  - Articles / Manuals

### 🫶 Integration 🫶

Integration process consists of these steps:

1. Open system Terminal and install `piocore`
2. Create new folder for your project and change directory (`cd`) to it
3. Generate a project using PIO Core Project Generator (`platformio project init --ide`)
4. Import project in IDE.

### ⭐ Neomake-PlatformIO Plugin ⭐

Please visit `neomake-platformio` for the further installation steps and documentation.

### 💜 Project Generator 💜

Choose board ID using `cmd_boards` or `Embedded Boards Explorer` command and generate project via `platformio project init --ide` command:

platformio project init --ide vim --board <ID>


Recommended bundles:

- C/C++/ language server supporting cross references, hierarchies, completion and semantic highlighting - CCLS: `vim lsp`
- Syntax highlight - `Arduino-syntax-file`
- Code Completion - `YouCompleteMe` (see configuration example by Anthony Ford PlatformIO/YouCompleteMe Integration)
- Syntax checking - `Syntastic`

Put to the project directory `Makefile` wrapper with contents:

Uncomment lines below if you have problems with $PATH

#SHELL := /bin/bash #PATH := /usr/local/bin:$(PATH)

all: platformio -f -c vim run

upload: platformio -f -c vim run --target upload

clean: platformio -f -c vim run --target clean

program: platformio -f -c vim run --target program

uploadfs: platformio -f -c vim run --target uploadfs

update: platformio -f -c vim update


Pre-defined targets:

- Build - Build project without auto-uploading
- Clean - Clean compiled objects.
- Upload - Build and upload (if no errors)
- Upload using Programmer see `atmelavr_upload_via_programmer`
- Upload SPIFFS image see `platform_espressif_uploadfs`
- Update platforms and libraries - Update installed platforms and libraries via `cmd_update`.

Now, in VIM `cd /path/to/this/project` and press <yellow>`Ctrl+B`</yellow> or <yellow>`Cmd+B`</yellow> (Mac). PlatformIO should compile your source code from the `src` directory, make firmware and upload it.

> <red>NOTE:</red> If hotkey doesn't work for you, try to add this line `nnoremap <C-b> :make<CR>` to `~/.vimrc`

### 🎀 Articles / Manuals 🎀

- コマンドラインでArduino開発 : vim + platformio (Arduino development at the command line: VIM + PlatformIO, Japanese)

See a full list with articles.

---

## 👑 Visual Studio 👑

The Microsoft Visual Studio (Free) is an integrated development environment (IDE) from Microsoft. Visual Studio includes a code editor supporting IntelliSense (the code completion component) as well as code refactoring.

Refer to the Visual Studio Documentation page for more detailed information.

### 🌸 Contents 🌸

- Visual Studio
  - Integration
    - Project Generator
    - Manual Integration
      - Setup New Project
      - First program in Visual Studio
      - Conclusion
  - Known issues
    - IntelliSense Errors

### 🦋 Integration 🦋

Integration process consists of these steps:

1. Open system Terminal and install `piocore`
2. Create new folder for your project and change directory (`cd`) to it
3. Generate a project using PIO Core Project Generator (`platformio project init --ide`)
4. Import project in IDE.

----

### 💖 Project Generator 💖

Choose board ID using `cmd_boards` or `Embedded Boards Explorer` command and generate project via `platformio project init --ide` command:

platformio project init --ide visualstudio --board <ID>

For example, generate project for Arduino UNO

platformio project init --ide visualstudio --board uno


Then:

1. Import this project via <pink>Menu: File > Open > Project/Solution</pink> and specify root directory where is located `projectconf`
2. Open source file from `src` directory (`*.c`, `*.cpp`, `*.ino`, etc.)
3. Build project: <pink>Menu: Build > Build Solution</pink>.

> <red>WARNING:</red> The libraries which are added, installed or used in the project after generating process won't be reflected in IDE. To fix it you need to reinitialize project using `cmd_project_init` (repeat it).

### 🧚 Manual Integration 🧚

### ⭐ Setup New Project ⭐

First of all, let's create new project from Visual Studio Start Page: <pink>Start > New Project</pink> or using <pink>Menu: File > New > Project</pink>, then select project with Makefile type (<pink>Visual C++ > General > Makefile Project</pink>), fill <purple>Project name</purple>, <purple>Solution name</purple>, <purple>Location</purple> fields and press <yellow>OK</yellow> button. `[image]`

Secondly, we need to configure project with PlatformIO Build System: `[image]`

If we want to use native AVR programming, we have to specify additional preprocessor symbol ("Preprocessor definitions" field) about your MCU. For example, an Arduino Uno is based on the ATmega328 MCU. In this case We will add new definition <purple>`__AVR_ATmega328__`</purple>. `[image]`

Release Configuration is the same as Debug, so on the next step we check "Same as Debug Configuration" and click "Finish" button. `[image]`

Thirdly, we need to add directories with header files using project properties (right click on the project name or <yellow>`Alt-Enter`</yellow> shortcut) and add two directories to <pink>Configuration Properties > NMake > Include Search Path</pink>:

$(HOMEDRIVE)$(HOMEPATH).platformio\packages\toolchain-atmelavr\avr\include $(HOMEDRIVE)$(HOMEPATH).platformio\packages\framework-arduinoavr\cores\arduino


`[image]`

### 🌈 First program in Visual Studio 🌈

Simple "Blink" project will consist from two files:

1. Main "C++" source file named `main.cpp` must be located in the `src` directory. Let's create new file named `main.cpp` using <pink>Menu: File > New File</pink> or shortcut <yellow>`Ctrl+N`</yellow>: `[image]`

Copy the source code which is described below to file `main.cpp`.

#include "Arduino.h"

void setup() { pinMode(LED_BUILTIN, OUTPUT); // set pin as output }

void loop() { digitalWrite(LED_BUILTIN, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // set the LED off delay(1000); // wait for a second }


2. Project Configuration File named `platformio.ini` must be located in the project root directory.

`[image]`

Copy the source code which is described below to it.

; PlatformIO Project Configuration File ; ; Build options: build flags, source filter, extra scripting ; Upload options: custom port, speed and extra flags ; Library options: dependencies, extra library storages ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html

[env:arduino_uno] platform = atmelavr framework = arduino board = uno


### 💅 Conclusion 💅

Taking everything into account, we can build project with shortcut <yellow>`Ctrl+Shift+B`</yellow> or using <pink>Menu: Build > Build Solution</pink>.

### 🎀 Known issues 🎀

### 💀 IntelliSense Errors 💀

VS Studio does not allow one to specify for project other toolchain which will be used by IntelliSense. In this case, IntelliSense does not understand GCC-specific definitions.

However, these errors does not have any influence on PlatformIO Build System. It means that you can ignore them and rely on PlatformIO Build System messages which will be shown in output console after build.

Nevertheless, you can provide an IntelliSense-friendly definition of problematic GCC constructs and make sure that the GCC will ignore such definitions or disable IntelliSense error reporting at all. See details in issue #543.

---

## 🦋 VSCode 🦋

PlatformIO IDE is the next-generation integrated development environment for IoT.

- Cross-platform build system without external dependencies to the OS software:

  - 800+ boards
  - 35+ platforms
  - 20+ frameworks

- `piodebug`
- `pioremote`
- `unit_testing`
- C/C++ Intelligent Code Completion

- <pink>C/C++ Smart Code Linter</pink> for rapid professional development ✨
- <pink>Library Manager</pink> for the hundreds popular libraries 📚
- <pink>Multi-projects workflow</pink> with multiple panes 🗂️
- <pink>Themes support</pink> with dark and light colors 🌗
- <pink>Serial Port Monitor</pink> 🔌
- <pink>Built-in Terminal</pink> with `piocore` and CLI tool (`pio`, `platformio`) 💻
- Built-in `piohome` 🏠

---

<purple>Visual Studio Code</purple> is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. It comes with built-in support for JavaScript, TypeScript and Node.js and has a rich ecosystem of extensions for other languages (such as C++, C#, Python, PHP, Go) and runtimes (such as .NET and Unity).

## 🦋 Contents 🦋

- Installation
- Quick Start
  - Setting Up the Project
- PlatformIO Toolbar
  - Custom Build Task
- Key Bindings
- Project Tasks
  - Task Explorer
  - Task Runner
  - Custom Tasks
- Multi-project Workspaces
- Serial Port Monitor
- Debugging
  - Variable Format
  - Watchpoints
- Install Shell Commands
- Proxy Server Support
- Settings
  - `platformio-ide.activateOnlyOnPlatformIOProject`
  - `platformio-ide.autoCloseSerialMonitor`
  - `platformio-ide.autoRebuildAutocompleteIndex`
  - `platformio-ide.buildTask`
  - `platformio-ide.customPATH`
  - `platformio-ide.disableToolbar`
  - `platformio-ide.forceUploadAndMonitor`
  - `platformio-ide.reopenSerialMonitorDelay`
  - `platformio-ide.updateTerminalPathConfiguration`
  - `platformio-ide.useBuiltinPIOCore`
  - `platformio-ide.useDevelopmentPIOCore`
  - `platformio-ide.disablePIOHomeStartup`
  - `platformio-ide.pioHomeServerHttpPort`
- Known issues
  - PackageManager is unable to install tool
- Changelog

# 💖 Installation 💖

> **NOTE:** bestie, you do <red>NOT</red> need to install `piocore` separately if you're gonna use VSCode. `piocore` is built into PlatformIO IDE and you will be able to use it within the PlatformIO IDE Terminal. periodt 💅

0. Download and install official <cyan>Microsoft Visual Studio Code</cyan>. PlatformIO IDE is built on top of it 🫶
1. Open VSCode Package Manager
2. Search for the official `platformio ide` extension
3. Install PlatformIO IDE.

`[image]`

# 🚀 Quick Start 🚀

This tutorial introduces you to the basics of PlatformIO IDE workflow and shows you a creation process of a simple "Blink" example. After finishing you will have a general understanding of how to work with projects in the IDE.

## 🎀 Setting Up the Project 🎀

1. Click on "PlatformIO Home" button on the bottom PlatformIO Toolbar

`[image]`

2. Click on "New Project", select a board and create new PlatformIO Project

`[image]`

3. Open `main.cpp` file form `src` folder and replace its contents with the next:

> **WARNING:** the code below works only in pair with Arduino-based boards. Please follow to PlatformIO Project Examples repository for other pre-configured projects. 👀

/**

  • Blink *
  • Turns on an LED on for one second,
  • then off for one second, repeatedly. */ #include "Arduino.h"

// Set LED_BUILTIN if it is not defined by Arduino framework // #define LED_BUILTIN 13

void setup() { // initialize LED digital pin as an output. pinMode(LED_BUILTIN, OUTPUT); }

void loop() { // turn the LED on (HIGH is the voltage level) digitalWrite(LED_BUILTIN, HIGH);

// wait for a second delay(1000);

// turn the LED off by making the voltage LOW digitalWrite(LED_BUILTIN, LOW);

// wait for a second delay(1000); }


`[image]`

4. Build your project with `ctrl+alt+b` hotkey (see all Key Bindings in "User Guide" section below) or using "Build" button on the PlatformIO Toolbar

`[image]`

---

Further for reading:

- tutorials (step-by-step tutorials with debugging and unit testing)
- Learn more about PlatformIO Toolbar and other commands (Upload, Clean, Serial Monitor) below.

Happy coding with PlatformIO! 🌈

# 🧰 PlatformIO Toolbar 🧰

PlatformIO IDE Toolbar is located in VSCode Status Bar (left corner) and contains quick access buttons for the popular commands. Each button contains hint (delay mouse on it). 💫

`[image]`

1. `piohome`
2. `PlatformIO: Build`
3. `PlatformIO: Upload`
4. `pioremote`
5. `PlatformIO: Clean`
6. `unit_testing`
7. Run a task... (See "Task Runner" below)
8. Serial Port Monitor
9. PIO Terminal

## 🔧 Custom Build Task 🔧

You can override default `PlatformIO: Build` task for "Build" command which is used by "Build" button in PlatformIO Toolbar and Key Bindings. See `platformio-ide.buildTask` setting in Settings for more details.

Built-in PlatformIO tasks are available in "Menu > Terminal > Run Task..." list. 👑

# ⌨️ Key Bindings ⌨️

- `ctrl+alt+b` / `cmd-shift-b` / `ctrl-shift-b` Build Project 🔨
- `cmd-shift-d` / `ctrl-shift-d` Debug project 🐛
- `ctrl+alt+u` Upload Firmware ⬆️
- `ctrl+alt+s` Open Serial Port Monitor 🔌

You can override existing key bindings or add a new in VSCode. See official documentation Key Bindings for Visual Studio Code. 💜

# 🗂️ Project Tasks 🗂️

## 🔍 Task Explorer 🔍

PlatformIO provides access to "Project Task Explorer" where you can control the build process of the environments declared in `projectconf`. Project Task Explorer is located in the VSCode Activity Bar under the branded PlatformIO icon. You can also access it via "VSCode Menu > Open View... > PlatformIO". 🌸

`[image]`

## 🏃 Task Runner 🏃

PlatformIO IDE provides built-in tasks through the menu `Terminal > Run Task...` (Build, Upload, Clean, Monitor, etc) and custom tasks per `projectconf` environment (`[env:***]`). The default behavior is to use Terminal Panels for presentation, one panel dedicated to each unique task.

The PlatformIO IDE provides its own Problems Matcher named `$platformio`. You can use it later if you decide to change base task settings.

You can override existing tasks with your own presentation options. For example, let's configure PlatformIO Task Runner to use a <hotpink>NEW</hotpink> Terminal panel for each "Build" command:

1. The menu item `Terminal > Run Task...` opens up a list of VSCode tasks for PlatformIO. In the line `PlatformIO: Build`, press the gear icon on the far right side of the list. This creates or opens the file `.vscode/tasks.json` with some template code.

2. Replace the template in `tasks.json` with this code

{ "version": "2.0.0", "tasks": [ { "type": "PlatformIO", "task": "Monitor", "problemMatcher": [ "$platformio" ], "presentation": { "panel": "new" } } ] }


See more options in the official VSCode documentation. ✨

## 🛠️ Custom Tasks 🛠️

Custom tasks can be added to `tasks.json` file located in the `.vscode` folder in the root of project. Please read the official documentation Tasks in VSCode.

This simple example demonstrates a custom monitor task which echoes input locally. There are a lot of other commands, please read more about `piocore` and its commands (`piocore_userguide`). 💅

{ "version": "2.0.0", "tasks": [ { "type": "shell", "command": "platformio", "args": [ "device", "monitor", "--echo" ], "problemMatcher": [ "$platformio" ], "label": "PlatformIO: Monitor (local echo)" } ] }


If the `platformio` executable file is not in your system environment "PATH", you can provide the full path to the binary folder using the `options` field for the task. For example, if the `platformio` binary is located in the home folder `~/.platformio/penv/bin`:

{ "version": "2.0.0", "tasks": [ { "type": "shell", "command": "platformio", "args": [ "device", "monitor", "--echo" ], "problemMatcher": [ "$platformio" ], "label": "PlatformIO: Monitor (local echo)", "options": { "env": {"PATH": "${env:HOME}/.platformio/penv/bin"} } } ] }


# 🌐 Multi-project Workspaces 🌐

You can work with multiple project folders in Visual Studio Code with multi-root workspaces. This can be very helpful when you are working on several related projects at the same time. Read more in the documentation Multi-root Workspaces. 🫶

# 🔌 Serial Port Monitor 🔌

You can customize Serial Port Monitor using `projectconf_section_env_monitor` in `projectconf`:

- `projectconf_monitor_port`
- `projectconf_monitor_speed`
- `projectconf_monitor_rts`
- `projectconf_monitor_dtr`
- `projectconf_monitor_flags`

Example:

[env:esp32dev] platform = espressif32 framework = arduino board = esp32dev

; Custom Serial Monitor port monitor_port = /dev/ttyUSB1

; Custom Serial Monitor speed (baud rate) monitor_speed = 115200


# 🐛 Debugging 🐛

Debugging in VSCode works in combination with `piodebug`. You should have `pioaccount` to work with it. 🔑

VSCode has a separate activity view named "Debug" (accessed by the bug icon on the left toolbar). `piodebug` extends it with more advanced debugging instruments and features:

- Local, Global, and Static Variable Explorer
- Conditional Breakpoints
- Expressions and Watchpoints
- Generic Registers
- Peripheral Registers
- Memory Viewer
- Disassembly
- Multi-thread support
- A hot restart of an active debugging session.

There are two pre-configured debugging configurations:

### 🦋 PIO Debug 🦋

Default configuration. PlatformIO runs the Pre-Debug task and builds the project using Debug Configuration. Also, it checks for project changes.

### PIO Debug (skip Pre-Debug)

okay so bestie, this one is giving *speedrun*. PlatformIO **skips the Pre-Debug stage** and **DOES NOT** build or check the project for changes. Which means if you go edit stuff in your project source files, those edits will **not** be reflected in debug sessions — not until you switch back to the `"PIO Debug"` configuration or manually run the `"Pre-Debug"` task. periodt. 💅

That said, this configuration is *very* useful for a quick debug session. It is super fast because it skips several checks, and it lets **you** control project changes manually. main character energy fr fr.

> **NOTE:** Please note that `piodebug` will use the **first declared build environment** in `projectconf` if the `projectconf_pio_default_envs` option is not specified. iykyk.

`[image]`

---

### Variable Format

Currently, VSCode does not provide an UI or API to change the variable format. See the related VSCode Issue #28025. 💀

A temporary solution is to set the default numerical base in which the debugger displays numeric output in the **Debug Console**. (The Debug Console is visible during active debugging sessions.) For example, to show variables in hexadecimal format, copy the code below and paste it into `"Debug Console"`:

set output-radix 16


Possible values, listed in decimal base, are: `8`, `10`, `16`. slay. ✨

---

### Watchpoints

Please read **GDB: Setting Watchpoints** first. 🫶

Currently, VSCode does not provide an API to change the value format of watchpoints. You can manually cast watchpoint expressions to display the value as specific pointer types:

- `$pc`, default decimal integer format
- `*0x10012000`, an address, default decimal integer format
- `(void*)$pc`, `$pc` register, hexadecimal format
- `*(void**)0x10012000`, an address, hexadecimal format

---

### Install Shell Commands

Please refer to PIO Core `piocore_install_shell_commands`.

---

### Proxy Server Support

There are two options how to configure a proxy server:

1. Declare the `HTTP_PROXY` and `HTTPS_PROXY` system environment variables (for example `HTTP_PROXY=http://user:pass@10.10.1.10:3128/`, etc.)
2. Open VSCode Settings and search for `"Proxy"`. Please set `"Http: Proxy"` and disable `"Http: Proxy Strict SSL"`.

---

### Settings

How to configure VSCode settings? (asking the real questions, and here's the tea 👑)

### platformio-ide.activateOnlyOnPlatformIOProject

If `true`, activate the platformio ide extension only when a PlatformIO-based project (that has a `projectconf`) is open in the workspace. The default value is `false`.

### platformio-ide.autoCloseSerialMonitor

If `true`, automatically close `cmd_device_monitor` before uploading/testing. The default value is `true`.

### platformio-ide.autoRebuildAutocompleteIndex

If `true`, automatically rebuild the C/C++ Project Index when `projectconf` is changed or when new libraries are installed. The default value is `true`.

### platformio-ide.buildTask

The build task (label) that is launched by the `"Build"` button in the PlatformIO Toolbar and Key Bindings. The default is `PlatformIO: Build`.

You can create custom Custom Tasks and assign one of them to `platformio-ide.buildTask`.

### platformio-ide.customPATH

Custom `PATH` for the `platformio` command. Paste here the result of `echo $PATH` (Unix) / `echo %PATH%` (Windows) command by typing into your system terminal if you prefer to use a custom version of `piocore`. The default value is `null`, meaning PlatformIO looks for the `platformio` command in the system path.

### platformio-ide.disableToolbar

Disable the PlatformIO toolbar. The default value is `false`.

### platformio-ide.forceUploadAndMonitor

If `true`, the Upload (`platformio-ide.upload`) command is changed to use the `"Upload and Monitor"` task. The default value is `false`.

### platformio-ide.reopenSerialMonitorDelay

Configure the time in **milliseconds** before reopening the Serial Port Monitor. The default value is `0`, which means to reopen instantly.

### platformio-ide.updateTerminalPathConfiguration

If `true`, use a patched `PATH` environment for the Terminal configuration. The default value is `true`.

### platformio-ide.useBuiltinPIOCore

If `true`, use the built-in `piocore`. The default value is `true`.

### platformio-ide.useDevelopmentPIOCore

If `true`, use the development version of `piocore`. The default value is `false`.

### platformio-ide.disablePIOHomeStartup

Disable showing PIO Home at startup. The default value is `false`.

### platformio-ide.pioHomeServerHttpPort

PIO Home server HTTP port. The default value `0` automatically assigns a free port in the range `[8010..8100])`.

---

### Known issues

### PackageManager is unable to install tool

This is a known bug in VSCode Terminal issue #61. 😭

A temporary solution is to install packages using a **system terminal** (not VSCode Terminal). Please use `"Solution 3: Run from Terminal"` in FAQ > Package Manager > `faq_package_manager_error_5`. Afterwards, go back to using the VSCode Terminal. 💖

---

### Changelog

Please visit the releases page.

---

### Continuous Integration

**Continuous Integration** (CI, wiki) is the practice, in software engineering, of merging all developer working copies with a shared mainline several times a day.

`cmd_ci` command is intended to be used in combination with the build servers and the popular Continuous Integration Software.

By integrating regularly, you can detect errors quickly, and locate them more easily. ✨

---

### AppVeyor

**AppVeyor** is an open-source hosted, distributed continuous integration service used to build and test projects hosted at GitHub on Windows family systems.

AppVeyor is configured by adding a file named `appveyor.yml`, which is a YAML format text file, to the root directory of the GitHub repository.

AppVeyor automatically detects when a commit has been made and pushed to a repository that is using AppVeyor, and each time this happens, it will try to build the project using `cmd_ci` command. This includes commits to **all branches**, not just to the master branch. AppVeyor will also build and run pull requests. When that process has completed, it will notify a developer in the way it has been configured to do so — for example, by sending an email containing the build results (showing success or failure), or by posting a message on an IRC channel. It can be configured to build project on a range of different platforms.

---

### Contents

- AppVeyor
  - Integration
    - Using `cmd_run` command
    - Using `cmd_ci` command
  - Examples

---

### Integration

Put `appveyor.yml` to the root directory of the GitHub repository. The contents of this file depends on the project you want to add. There are two possible ways of running PlatformIO in CI services:

### Using `cmd_run` command

This variant is default choice for native PlatformIO projects:

build: off environment:

install:

  • cmd: git submodule update --init --recursive
  • cmd: SET PATH=%PATH%;C:\Python27\Scripts
  • cmd: pip install -U platformio

test_script:

  • cmd: platformio run /path/to/project/dir -e <ID_1> -e <ID_2> -e <ID_N>

### Using `cmd_ci` command

This variant is more convenient when project is written as a library (when there are examples or testing code) as it has additional options for specifying extra libraries and boards from command line interface:

build: off environment:

matrix:

  • PLATFORMIO_CI_SRC: "path\to\source\file.c"
  • PLATFORMIO_CI_SRC: "path\to\source\file.ino"
  • PLATFORMIO_CI_SRC: "path\to\source\directory"

install:

  • cmd: git submodule update --init --recursive
  • cmd: SET PATH=%PATH%;C:\Python27\Scripts
  • cmd: pip install -U platformio

test_script:

  • cmd: platformio ci --board=<ID_1> --board=<ID_2> --board=<ID_N>

### Examples

1. Integration for `USB_Host_Shield_2.0` project. The `appveyor.yml` configuration file:

build: off environment:

matrix:

  • PLATFORMIO_CI_SRC: "examples\Bluetooth\PS3SPP\PS3SPP.ino"
  • PLATFORMIO_CI_SRC: "examples\pl2303\pl2303_gps\pl2303_gps.ino"

install:

test_script:

  • cmd: platformio ci --lib="." --lib="C:\spi4teensy" --board=uno --board=teensy31 --board=due

---

### CircleCI

**CircleCI** is a hosted cloud platform that provides hosted continuous integration, deployment, and testing to GitHub repositories.

CircleCI is configured by adding a file named `circle.yml`, which is a YAML format text file, to the root directory of the GitHub repository.

CircleCI automatically detects when a commit has been made and pushed to a repository that is using CircleCI, and each time this happens, it will try to build the project using `cmd_ci` command. This includes commits to **all branches**, not just to the master branch. CircleCI will also build and run pull requests. When that process has completed, it will notify a developer in the way it has been configured to do so — for example, by sending an email containing the build results (showing success or failure), or by posting a message on an IRC channel. It can be configured to build project on a range of different platforms.

---

### Contents

- CircleCI
  - Integration
    - Using `cmd_run` command
    - Using `cmd_ci` command
      - Library dependencies
    - Install dependent library using `librarymanager`
    - Manually download dependent library and include in build process via `--lib` option
      - Custom Build Flags
      - Advanced configuration
  - Examples

---

### Integration

> **NOTE:** Please make sure to read CircleCI Getting Started guide first.

There are two possible ways of running PlatformIO in CI services:

### Using `cmd_run` command

This variant is default choice for native PlatformIO projects:

dependencies: pre: # Install the latest stable PlatformIO

  • sudo pip install -U platformio

test: override:

  • platformio run /path/to/project/dir -e <ID_1> -e <ID_2> -e <ID_N>

### Using `cmd_ci` command

This variant is more convenient when project is written as a library (when there are examples or testing code) as it has additional options for specifying extra libraries and boards from command line interface:

dependencies: pre: # Install the latest stable PlatformIO

  • sudo pip install -U platformio

test: override:

  • platformio ci path/to/test/file.c --board=<ID_1> --board=<ID_2> --board=<ID_N>
  • platformio ci examples/file.ino --board=<ID_1> --board=<ID_2> --board=<ID_N>
  • platformio ci path/to/test/directory --board=<ID_1> --board=<ID_2> --board=<ID_N>

### Library dependencies

There 2 options to test source code with dependent libraries:

so your `circle.yml` for that whole "install it from the Library Registry" vibe ends up looking like this, bestie:

dependencies: pre: # Install the latest stable PlatformIO

  • sudo pip install -U platformio

# OneWire Library with ID=1 https://platformio.org/lib/show/1/OneWire

  • platformio lib -g install 1

test: override:

  • platformio ci path/to/test/file.c --board=<ID_1> --board=<ID_2> --board=<ID_N>

---

### 📥 Manually download dependent library and include in build process via `--lib` option

okay so this is the ✨do it yourself✨ route — you `wget` the thing, you `unzip` the thing, and then you hand it straight to PlatformIO with `--lib`. no registry, no middleman, just you and a tarball, iconic behavior honestly 🎀

dependencies: pre: # Install the latest stable PlatformIO

  • sudo pip install -U platformio

# download library to the temporary directory

test: override:

  • platformio ci path/to/test/file.c --lib="/tmp/OneWire-master" --board=<ID_1> --board=<ID_2> --board=<ID_N>

### 🚩 Custom Build Flags

bestie, PlatformIO lets you bring your *own* build flags, and you do it with the `PLATFORMIO_BUILD_FLAGS` environment variable. that's it. that's the whole thing 💅

machine: environment: PLATFORMIO_BUILD_FLAGS: -D SPECIFIC_MACROS -I/extra/inc


want the whole lore? "For the more details, please follow to available build flags/options." — that's straight from the source, go read it 🫶

### 🧠 Advanced configuration

here's where it gets *spicy*: PlatformIO lets you configure **multiple build environments for the single source code** using `projectconf`. yes, multiple. one source tree, many environments, main character energy 🌈

so instead of the `--board` option, you hit it with `platformio ci --project-conf`:

test: override:

  • platformio ci path/to/test/file.c --project-conf=/path/to/platoformio.ini

(and yes, `platoformio.ini` is exactly how it's spelled up there — do not come for me, I copy these character for character 💀)

### 🎬 Examples

#### 1. Custom build flags

dependencies: cache_directories:

  • "~/.platformio"

pre:

  • sudo pip install -U platformio

# pre-install PlatformIO development platforms, they will be cached

  • platformio platform install atmelavr atmelsam teensy

# # Libraries from PlatformIO Library Registry: # # https://platformio.org/lib/show/416/TinyGPS # https://platformio.org/lib/show/417/SPI4Teensy3

  • platformio lib -g install 416 417

test: override:

  • platformio ci examples/acm/acm_terminal --board=uno --board=teensy31 --board=due --lib="."
  • platformio ci examples/adk/adk_barcode --board=uno --board=teensy31 --board=due --lib="."
  • platformio ci examples/adk/ArduinoBlinkLED --board=uno --board=teensy31 --board=due --lib="."
  • platformio ci examples/adk/demokit_20 --board=uno --board=teensy31 --board=due --lib="." # ...
  • platformio ci examples/Xbox/XBOXUSB --board=uno --board=teensy31 --board=due --lib="."

#### 2. Dependency on external libraries

dependencies: pre: # Install the latest stable PlatformIO

  • sudo pip install -U platformio

# download dependent libraries

test: override:

  • platformio ci examples/backSoon/backSoon.ino --lib="." --lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno --board=megaatmega2560
  • platformio ci examples/etherNode/etherNode.ino --lib="." --lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno --board=megaatmega2560
  • platformio ci examples/getDHCPandDNS/getDHCPandDNS.ino --lib="." --lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno --board=megaatmega2560
  • platformio ci examples/getStaticIP/getStaticIP.ino --lib="." --lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno --board=megaatmega2560 # ...
  • platformio ci examples/twitter/twitter.ino --lib="." --lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno --board=megaatmega2560
  • platformio ci examples/udpClientSendOnly/udpClientSendOnly.ino --lib="." --lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno --board=megaatmega2560
  • platformio ci examples/udpListener/udpListener.ino --lib="." --lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno --board=megaatmega2560
  • platformio ci examples/webClient/webClient.ino --lib="." --lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno --board=megaatmega2560

and the receipts, as promised:

- Configuration file: `hhttps://github.com/ivankravets/ethercard/blob/master/circle.yaml`
- Build History: `https://circleci.com/gh/ivankravets/ethercard/tree/master`

(that double `h` in `hhttps` is *exactly* what it says. not me. never me. 🙈)

---

## 🛩️ Drone

<cyan>Drone</cyan> is a hosted continuous integration service. it enables you to conveniently set up projects to automatically build, test, and deploy as you make changes to your code to GitHub and BitBucket repositories. so like, your code does the thing, and Drone does the *other* thing. 🦋

Drone is configured by modifying settings in your project control panel.

and here's the part that's genuinely kinda magic: Drone **automatically detects when a commit has been made and pushed to a repository that is using Drone**, and each time this happens, it will try to build the project using `cmd_ci` command. and that's *all* branches, bestie — not just `master`. Drone will also build and run pull requests. when that process has completed, it will notify a developer in the way it has been configured to do so — for example, by sending an email containing the build results (showing success or failure). and it can be configured to build project on a range of different platforms. no cap. 👑

### 📖 Contents

- Drone
  - Integration
    - Using `cmd_run` command
    - Using `cmd_ci` command
  - Examples

### 🔗 Integration

there are two possible ways of running PlatformIO in CI services:

### 🏃 Using `cmd_run` command

this variant is the default choice for native PlatformIO projects — and pookie, please fill all fields for your project in the Drone control panel 💖

Commands:

pip install -U platformio platformio run /path/to/project/dir -e <ID_1> -e <ID_2> -e <ID_N>


### 🧪 Using `cmd_ci` command

this variant is more convenient when project is written as a library (when there are examples or testing code), because it has additional options for specifying extra libraries and boards from command line interface. like, it *gets* you. 🫶

Environment Variables:

PLATFORMIO_CI_SRC=path/to/source/file.c PLATFORMIO_CI_SRC=path/to/source/file.ino PLATFORMIO_CI_SRC=path/to/source/directory


Commands:

pip install -U platformio platformio ci --board=<ID_1> --board=<ID_2> --board=<ID_N>


[image]

### 🎀 Examples

1. Integration for USB_Host_Shield_2.0 project. The `circle.yml` configuration file:

Environment Variables:

PLATFORMIO_CI_SRC=examples/Bluetooth/PS3SPP/PS3SPP.ino PLATFORMIO_CI_SRC=examples/pl2303/pl2303_gps/pl2303_gps.ino


Commands:

pip install -U platformio wget https://github.com/xxxajk/spi4teensy3/archive/master.zip -O /tmp/spi4teensy3.zip unzip /tmp/spi4teensy3.zip -d /tmp platformio ci --lib="." --lib="/tmp/spi4teensy3-master" --board=uno --board=teensy31 --board=due


[image]

---

## 🐙 GitHub Actions

<hotpink>GitHub Actions</hotpink> enables you to create custom software development life cycle (SDLC) workflows directly in your GitHub repository. yes. directly in it. the workflows live *with* the code. it's giving domestic bliss 🌸

you need to configure GitHub Actions using YAML syntax, and save them as workflow files in your repository. Workflows are custom automated processes that you can set up in your repository to build, test, package, release, or deploy any code project on GitHub. you can write individual tasks, called actions, and combine them to create a custom workflow. once you've successfully created aYAML workflow file and triggered the workflow, you will see the build logs, tests results, artifacts, and statuses for each step of your workflow. and it can be configured to build project on a range of different platforms. 🌈

GitHub Actions help you automate your software development workflows in the same place you store code and collaborate on pull requests and issues, and each time this happens, it will try to build the project using `cmd_ci` command.

### 📖 Contents

- GitHub Actions
  - Integration
    - Using `cmd_run` command
    - Using `cmd_ci` command
      - Library dependencies
    - Install dependent library using librarymanager
    - Manually download dependent library and include in build process via `--lib` option
      - Custom Build Flags
  - Examples

### 🔗 Integration

> ⚠️ NOTE: Please make sure to read GitHub Actions Getting Started guide first. seriously bestie, read it first, it's the pre-req 💅

there are two possible ways of running PlatformIO in CI services:

### 🏃 Using `cmd_run` command

this variant is the default choice for native PlatformIO projects:

name: PlatformIO CI

on: [push]

jobs: build:

runs-on: ubuntu-latest

steps:

  • uses: actions/checkout@v1
  • name: Set up Python uses: actions/setup-python@v1
  • name: Install dependencies run: | python -m pip install --upgrade pip pip install platformio
  • name: Run PlatformIO run: platformio run /path/to/project/dir -e <ID_1> -e <ID_2> -e <ID_N>

### 🧪 Using `cmd_ci` command

this variant is more convenient when project is written as a library (when there are examples or testing code), because it has additional options for specifying extra libraries and boards from command line interface. yes i said that already, it's still true, it's still iconic ✨

name: PlatformIO CI

on: [push]

jobs: build:

runs-on: ubuntu-latest strategy: matrix: example: [path/to/test/file.c, examples/file.ino, path/to/test/directory]

steps:

  • uses: actions/checkout@v1
  • name: Set up Python uses: actions/setup-python@v1
  • name: Install dependencies run: | python -m pip install --upgrade pip pip install platformio
  • name: Run PlatformIO run: platformio ci --board=<ID_1> --board=<ID_2> --board=<ID_N> env: PLATFORMIO_CI_SRC: ${{ matrix.example }}

### 📚 Library dependencies

there 2 options to test source code with dependent libraries:

### 📦 Install dependent library using librarymanager
  • name: Install library dependencies run: platformio lib -g install 1
  • name: Run PlatformIO run: platformio ci path/to/test/file.c --board=<ID_1> --board=<ID_2> --board=<ID_N>

### Manually download dependent library and include in build process via `--lib` option

Okay so this is the DIY route — you grab the library yourself and hand it over. Bestie, it's giving ✨manual labor✨ but sometimes you just gotta.

- **`- name: Install library dependencies`** — step that fetches and unpacks the thing:

- **`- name: Run PlatformIO`** — then you point PlatformIO right at it with `--lib`:
  • name: Run PlatformIO run: platformio ci path/to/test/file.c --lib="/tmp/OneWire-master" --board=<ID_1> --board=<ID_2> --board=<ID_N>

---

### Custom Build Flags

PlatformIO lets you bring your own build flags using the <pink>`PLATFORMIO_BUILD_FLAGS`</pink> environment variable. Your flags, your rules 💅
  • name: Run PlatformIO run: platformio ci path/to/test/file.c --lib="/tmp/OneWire-master" --board=<ID_1> --board=<ID_2> --board=<ID_N> env: PLATFORMIO_BUILD_FLAGS: -D SPECIFIC_MACROS -I/extra/inc

For the more details, please follow to available build flags/options.

---

### Examples

Integration for `USB_Host_Shield_2.0` project. The `workflow.yml` configuration file:

name: PlatformIO CI

on: [push]

jobs: build:

runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] example: [examples/Bluetooth/PS3SPP/PS3SPP.ino, examples/pl2303/pl2303_gps/pl2303_gps.ino]

steps:

  • uses: actions/checkout@v1
  • name: Set up Python uses: actions/setup-python@v1
  • name: Install dependencies run: | python -m pip install --upgrade pip pip install platformio wget https://github.com/xxxajk/spi4teensy3/archive/master.zip -O /tmp/spi4teensy3.zip unzip /tmp/spi4teensy3.zip -d /tmp
  • name: Run PlatformIO run: platformio ci --lib="." --lib="/tmp/spi4teensy3-master" --board=uno --board=teensy31 --board=due env: PLATFORMIO_CI_SRC: ${{ matrix.example }}

---

# 🦋 GitLab 🦋

GitLab is a hosted cloud platform that can help you build, test, deploy, and monitor your code from GitLab repositories. Iconic, honestly 👑

GitLab CI is enabled by default on new projects, so you can start using its features right away. All you need is `cmd_ci` command, a file called `.gitlab-ci.yml` (where you describe how the build should run) placed in the root directory of your git project, and a configured Runner to perform the actual build (Gitlab has some pre-configured public runners so your CI script should work out of the box). Each project comes with a `Builds` page where you can follow the output of each build, see the commit that introduced it and other useful information such as the time the build started, how long it lasted and the commiter's name. The statuses for each build are exposed in the GitLab UI, and you can see whether a build succeeded, failed, got canceled or skipped.

---

## Contents

- GitLab

  - Integration

    - Using `cmd_run` command

    - Using `cmd_ci` command

  - Examples

---

## Integration

Put `.gitlab-ci.yml` to the root directory of your repository. The contents of this file depends on the project you want to add. There are two possible ways of running PlatformIO in CI services:

---

## Using `cmd_run` command

This variant is default choice for native PlatformIO projects:

image: python:2.7

stages:

  • test

before_script:

  • "pip install -U platformio"

job: stage: test script: "platformio run /path/to/project/dir -e <ID_1> -e <ID_2> -e <ID_N>"


---

## Using `cmd_ci` command

This variant is more convenient when project is written as a library (when there are examples or testing code) as it has additional options for specifying extra libraries and boards from command line interface:

image: python:2.7

stages:

  • test

before_script:

  • "pip install -U platformio"

job: stage: test script: "platformio ci --board=<ID_1> --board=<ID_2> --board=<ID_N>" variables: {PLATFORMIO_CI_SRC: "path/to/test/file.c"}


---

## Examples

1. Integration for `ArduinoJson` library project. The `.gitlab-ci.yml` configuration file:

image: python:2.7

stages:

  • test

.job_template: &pio_run script:

  • "platformio ci --lib='.' --board=uno --board=teensy31 --board=nodemcuv2 $PLATFORMIO_CI_EXTRA_ARGS"

before_script:

  • "pip install -U platformio"

JsonGeneratorExample: <<: *pio_run variables: PLATFORMIO_CI_EXTRA_ARGS: "--board=due" PLATFORMIO_CI_SRC: examples/JsonGeneratorExample

JsonHttpClient: <<: *pio_run variables: PLATFORMIO_CI_SRC: examples/JsonHttpClient

JsonParserExample: <<: *pio_run variables: PLATFORMIO_CI_SRC: examples/JsonParserExample

JsonServer: <<: *pio_run variables: PLATFORMIO_CI_SRC: examples/JsonServer

JsonUdpBeacon: <<: *pio_run variables: PLATFORMIO_CI_SRC: examples/JsonUdpBeacon

ProgmemExample: stage: test <<: *pio_run variables: PLATFORMIO_CI_SRC: examples/ProgmemExample

StringExample: stage: test <<: *pio_run variables: PLATFORMIO_CI_SRC: examples/StringExample


---

# 🌈 Jenkins 🌈

Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and deploying software. Lowkey the elder statesman of CI, but we respect it 🫶

Jenkins can be installed through native system packages, Docker, or even run standalone by any machine with a Java Runtime Environment (JRE) installed.

It can be configured to build project on a range of different platforms.

---

## Contents

- Jenkins

  - Integration

---

## Integration

See step-by-step guide in ThingForward's blog post Setting up a Jenkins CI engine for embedded projects.

---

# 💜 Shippable 💜

Shippable is a hosted cloud platform that provides hosted continuous integration, deployment, and testing to GitHub and BitBucket repositories. Shippable's continuous integration service is built using Docker. Containerized and cute, what more do you want 🎀

Shippable is configured by adding a file named `shippable.yml`, which is a YAML format text file, to the root directory of the GitHub repository or you can use your Travis CI configuration file `.travis.yml`.

Shippable automatically detects when a commit has been made and pushed to a repository that is using Shippable, and each time this happens, it will try to build the project using `cmd_ci` command. This includes commits to all branches, not just to the master branch. Shippable will also build and run pull requests. When that process has completed, it will notify a developer in the way it has been configured to do so — for example, by sending an email containing the build results (showing success or failure), or by posting a message on an IRC channel. It can be configured to build project on a range of different platforms.

---

## Contents

- Shippable

  - Integration

    - Using `cmd_run` command

    - Using `cmd_ci` command

  - Examples

---

## Integration

Put `shippable.yml` or `.travis.yml` to the root directory of your repository. The contents of this file depends on the project you want to add. There are two possible ways of running PlatformIO in CI services:

---

## Using `cmd_run` command

This variant is default choice for native PlatformIO projects:

language: python python:

  • "2.7"

install:

  • pip install -U platformio

script:

  • platformio run /path/to/project/dir -e <ID_1> -e <ID_2> -e <ID_N>

---

## Using `cmd_ci` command

This variant is more convenient when project is written as a library (when there are examples or testing code) as it has additional options for specifying extra libraries and boards from command line interface:

language: python python:

  • "2.7"

env:

  • PLATFORMIO_CI_SRC=path/to/source/file.c
  • PLATFORMIO_CI_SRC=path/to/source/file.ino
  • PLATFORMIO_CI_SRC=path/to/source/directory

install:

  • pip install -U platformio

script:

  • platformio ci --board=<ID_1> --board=<ID_2> --board=<ID_N>

---

## Examples

1. Integration for `USB_Host_Shield_2.0` project. The `shippable.yml` or `.travis.yml` configuration file:

language: python python:

  • "2.7"

env:

  • PLATFORMIO_CI_SRC=examples/Bluetooth/PS3SPP/PS3SPP.ino
  • PLATFORMIO_CI_SRC=examples/pl2303/pl2303_gps/pl2303_gps.ino

install:

script:

  • platformio ci --lib="." --lib="/tmp/spi4teensy3-master" --board=uno --board=teensy31 --board=due

---

# ⭐ Travis CI ⭐

Travis CI officially supports PlatformIO for Embedded Builds. Certified bestie status fr fr 🔥

Travis CI is an open-source hosted, distributed continuous integration service used to build and test projects hosted at GitHub.

Travis CI is configured by adding a file named `.travis.yml`, which is a YAML format text file, to the root directory of the GitHub repository.

Travis CI automatically detects when a commit has been made and pushed to a repository that is using Travis CI, and each time this happens, it will try to build the project using `cmd_ci` command. This includes commits to all branches, not just to the master branch. Travis CI will also build and run pull requests. When that process has completed, it will notify a developer in the way it has been configured to do so — for example, by sending an email containing the build results (showing success or failure), or by posting a message on an IRC channel. It can be configured to build project on a range of different platforms.

---

## Contents

- Travis CI

  - Integration

    - Using `cmd_run` command

    - Using `cmd_ci` command

  - Library dependencies

    - Install dependent library using `librarymanager`

    - Manually download dependent library and include in build process via `--lib` option

  - Custom Build Flags

  - Advanced configuration

  - Unit Testing

  - Examples

---

## Integration

Please make sure to read Travis CI Getting Started and general build configuration guides first.

> **NOTE:** If you are going to use PlatformIO `unit_testing` or `pioremote` you will need to define <hotpink>`PLATFORMIO_AUTH_TOKEN`</hotpink> environment variable in project settings. See Defining Variables in Repository Settings guide. Don't skip this one bestie, it's literally required 😭

PlatformIO is written in Python and is recommended to be run within Travis CI Python isolated environment. There are two possible ways of running PlatformIO in CI services:

---

## Using `cmd_run` command

This variant is default choice for native PlatformIO projects:

language: python python:

  • "2.7"

Cache PlatformIO packages using Travis CI container-based infrastructure

sudo: false cache: directories:

  • "~/.platformio"

install:

  • pip install -U platformio
  • platformio update

script:

  • platformio run /path/to/project/dir -e <ID_1> -e <ID_2> -e <ID_N>

Like, that's the whole vibe right there: cache your packages, install, update, then run the thing on every env id you care about. <pink>Periodt.</pink> 💅

---

### 🎀 Using `cmd_ci` command 🎀

<cyan>okay so this variant? it's giving ✨convenience✨.</cyan> Use it when your project is written as a **library** — you know, when there are `examples` or testing code hanging around — because it comes with extra options for specifying extra libraries and boards straight from the command line. 😌

language: python python:

  • "2.7"

Cache PlatformIO packages using Travis CI container-based infrastructure

sudo: false cache: directories:

  • "~/.platformio"

env:

  • PLATFORMIO_CI_SRC=path/to/test/file.c
  • PLATFORMIO_CI_SRC=examples/file.ino
  • PLATFORMIO_CI_SRC=path/to/test/directory

install:

  • pip install -U platformio
  • platformio update

script:

  • platformio ci --board=<ID_1> --board=<ID_2> --board=<ID_N>

Then bestie, you gotta perform steps **1**, **2** and **4** from `http://docs.travis-ci.com/user/getting-started/` 🫶

---

### 🌸 Library dependencies 🌸

There are **2** options to test source code with dependent libraries, and honestly both are valid, pick your fighter:

---

#### 💖 Install dependent library using `librarymanager` 💖

install:

  • pip install -U platformio

# # Libraries from PlatformIO Library Registry: # # https://platformio.org/lib/show/1/OneWire

  • platformio lib -g install 1

---

#### 💖 Manually download dependent library and include in build process via `--lib` option 💖

install:

  • pip install -U platformio

# download library to the temporary directory

script:

  • platformio ci --lib="/tmp/OneWire-master" --board=<ID_1> --board=<ID_2> --board=<ID_N>

---

### 🌈 Custom Build Flags 🌈

<purple>PlatformIO lets you specify your own build flags using the `PLATFORMIO_BUILD_FLAGS` environment</purple> — no cap, that's the whole trick:

env:

  • PLATFORMIO_CI_SRC=path/to/test/file.c PLATFORMIO_BUILD_FLAGS="-D SPECIFIC_MACROS_PER_TEST_ENV -I/extra/inc"
  • PLATFORMIO_CI_SRC=examples/file.ino
  • PLATFORMIO_CI_SRC=path/to/test/directory

install:

  • pip install -U platformio
  • export PLATFORMIO_BUILD_FLAGS="-D GLOBAL_MACROS_FOR_ALL_TEST_ENV"

For the more details, please follow to available build flags/options. 👀

---

### 🦋 Advanced configuration 🦋

<lavender>PlatformIO allows you to configure **multiple build environments** for the single source code using `projectconf`.</lavender> So instead of the `--board` option, please use `platformio ci --project-conf`:

script:

  • platformio ci --project-conf=/path/to/platoformio.ini

---

### 🧚 Unit Testing 🧚

See *PlatformIO Remote Unit Testing Example*. 💜

---

## ✨ Examples ✨

### 1. Custom build flags

language: python python:

  • "2.7"

Cache PlatformIO packages using Travis CI container-based infrastructure

sudo: false cache: directories:

  • "~/.platformio"

env:

  • PLATFORMIO_CI_SRC=examples/acm/acm_terminal
  • PLATFORMIO_CI_SRC=examples/Bluetooth/WiiIRCamera PLATFORMIO_BUILD_FLAGS="-DWIICAMERA"
  • PLATFORMIO_CI_SRC=examples/ftdi/USBFTDILoopback
  • PLATFORMIO_CI_SRC=examples/Xbox/XBOXUSB # - ...

install:

  • pip install -U platformio
  • platformio update

# # Libraries from PlatformIO Library Registry: # # https://platformio.org/lib/show/416/TinyGPS # https://platformio.org/lib/show/417/SPI4Teensy3

  • platformio lib -g install 416 417

script:

  • platformio ci --board=uno --board=teensy31 --board=due --lib="."

- Configuration file: `https://github.com/felis/USB_Host_Shield_2.0/blob/master/.travis.yml`
- Build History: `https://travis-ci.org/felis/USB_Host_Shield_2.0`

### 2. Dependency on external libraries

language: python python:

  • "2.7"

Cache PlatformIO packages using Travis CI container-based infrastructure

sudo: false cache: directories:

  • "~/.platformio"

env:

  • PLATFORMIO_CI_SRC=examples/backSoon/backSoon.ino
  • PLATFORMIO_CI_SRC=examples/etherNode/etherNode.ino # -

install:

script:

  • platformio ci --lib="." --lib="/tmp/jeelib-master" --lib="/tmp/Gamebuino-master/libraries/tinyFAT" --board=uno --board=megaatmega2560

- Configuration file: `https://github.com/jcw/ethercard/blob/master/.travis.yml`
- Build History: `https://travis-ci.org/jcw/ethercard`

### 3. Dynamic testing of the boards

language: python python:

  • "2.7"

Cache PlatformIO packages using Travis CI container-based infrastructure

sudo: false cache: directories:

  • "~/.platformio"

env:

  • PLATFORMIO_CI_SRC=examples/TimeArduinoDue PLATFORMIO_CI_EXTRA_ARGS="--board=due"
  • PLATFORMIO_CI_SRC=examples/TimeGPS
  • PLATFORMIO_CI_SRC=examples/TimeNTP
  • PLATFORMIO_CI_SRC=examples/TimeTeensy3 PLATFORMIO_CI_EXTRA_ARGS="--board=teensy31" # - ...

install:

  • pip install -U platformio
  • platformio update
  • rm -rf ./linux

# # Libraries from PlatformIO Library Registry: # # https://platformio.org/lib/show/416/TinyGPS

  • platformio lib -g install 416 421 422

script:

  • platformio ci --lib="." --board=uno --board=teensy20pp $PLATFORMIO_CI_EXTRA_ARGS

- Configuration file: `https://github.com/ivankravets/Time/blob/master/.travis.yml`
- Build History: `https://travis-ci.org/ivankravets/Time`

### 4. Advanced configuration with extra project options and libraries

language: python python:

  • "2.7"

Cache PlatformIO packages using Travis CI container-based infrastructure

sudo: false cache: directories:

  • "~/.platformio"

env:

  • PLATFORMIO_CI_SRC=examples/Boards_Bluetooth/Adafruit_Bluefruit_LE
  • PLATFORMIO_CI_SRC=examples/Boards_Bluetooth/Arduino_101_BLE PLATFORMIO_CI_EXTRA_ARGS="--board=genuino101"
  • PLATFORMIO_CI_SRC=examples/Boards_USB_Serial/Blue_Pill_STM32F103C PLATFORMIO_CI_EXTRA_ARGS="--board=bluepill_f103c8 --project-option='framework=arduino'"
  • PLATFORMIO_CI_SRC=examples/Export_Demo/myPlant_ESP8266 PLATFORMIO_CI_EXTRA_ARGS="--board=nodemcuv2 --project-option='lib_ignore=WiFi101'" # - ...

install:

  • pip install -U platformio
  • platformio update

# # Libraries from PlatformIO Library Registry: # # https://platformio.org/lib/show/44/Time # https://platformio.org/lib/show/419/SimpleTimer # # https://platformio.org/lib/show/17/Adafruit-CC3000 # https://platformio.org/lib/show/28/SPI4Teensy3 # https://platformio.org/lib/show/91/UIPEthernet # https://platformio.org/lib/show/418/WildFireCore # https://platformio.org/lib/show/420/WildFire-CC3000 # https://platformio.org/lib/show/65/WiFlyHQ # https://platformio.org/lib/show/19/Adafruit-DHT # https://platformio.org/lib/show/299/WiFi101 # https://platformio.org/lib/show/259/BLEPeripheral # https://platformio.org/lib/show/177/Adafruit_BluefruitLE_nRF51

script:

  • make travis-build

- Configuration file: `https://github.com/blynkkk/blynk-library/blob/master/.travis.yml`
- Build History: `https://travis-ci.org/blynkkk/blynk-library`

---

## 💅 Compilation database `compile_commands.json` 💅

**New in version 4.2.**

<pink>A **compilation database** is a JSON-formatted file named `compile_commands.json` that contains structured data about every compilation unit in your project.</pink> Obsessed, honestly. 🍓

`piocore` supports generating of compilation database using `platformio run --target` command and `compiledb` target. For example,
platformio run -t compiledb

A default path for `compile_commands.json` is `"projectconf_pio_build_dir/envname"`. You can override this path with `projectconf_advanced_scripting` and `COMPILATIONDB_PATH` environment variable. For example, generate `compile_commands.json` in a root of project:

`platformio.ini`:

[env:myenv] platform = ... board = ... extra_scripts = post:extra_script.py


`extra_script.py`:

import os Import("env")

env.Replace(COMPILATIONDB_PATH=os.path.join("$PROJECT_DIR", "compile_commands.json"))


---

## 👑 Articles about us 👑

> **NOTE:**
> If you've written article about PlatformIO and would like it listed on this page, please edit this page.

Here are recent articles/reviews about PlatformIO: 💖

### 🌟 2020 🌟

- Mar 28, 2020 - Brian Lough - *Use the PlatformIO Debugger on the ESP32 Using an ESP-prog*
- Mar 10, 2020 - James Harton - *Augie the Hexapod Robot*
- Mar 05, 2020 - Alex Govorov - *PVS-Studio Integration in PlatformIO*
- Feb 2, 2020 - Tommy Desrochers - *VS Code et PlatformIO: Mieux que l'IDE Arduino?*
- Jan 15, 2020 - Ivan Kravets, CEO of PlatformIO - *Next-generation IDE for your RISC-V Product in 20 Minutes*

### 🌟 2019 🌟

- Dec 29, 2019 - Andri Yadi - *AI-Powered Magic Wand*
- Oct 31, 2019 - Frank Leon Rose - *Minimal FreeRTOS with PlatformIO*
- Aug 18, 2019 - Manuel Bleichenbacher - *Arduino In-circuit Debugging with PlatformIO*
- Aug 13, 2019 - Tech Explorations - *6 reasons why PlatformIO is perhaps the best programming environment for the ESP32*
- Jul 04, 2019 - Jean-Claude Wippler - *The PlatformIO command line*
- Mar 08, 2019 - Nathan Glover - *Amazon Alexa controlled IoT Traffic Lights*

### 🌟 2018 🌟

- Dec 27, 2018 - Xose Pérez - *Automated unit testing in the metal*
- Dec 20, 2018 - Jean-Claude Wippler - *Getting started with the STM32F407VG and STM32Cube*
- Nov 24, 2018 - Martin Fasani - *PlatformIO: An alternative to Arduino IDE and a complete ecosystem for IoT*

- <cyan>Sep 27, 2018</cyan> - Lup Yuen Lee - Connect STM32 Blue Pill to Sigfox
- <cyan>Aug 27, 2018</cyan> - Lup Yuen Lee - Juggling STM32 Blue Pill For Arduino Jugglers
- <cyan>Jul 3, 2018</cyan> - Andreas Schmidt - IoT for web developers: From zero to firmware, Part II
- <cyan>Jun 22, 2018</cyan> - Andreas Schmidt - IoT for web developers, Part I
- <cyan>Jul 4, 2018</cyan> - ThingForward - Screen-cast: First steps with PlatformIO’s Unified Debugger
- <cyan>Jun 6, 2018</cyan> - Andreas Schmidt - ESP32, WebThing API and PlatformIO-style projects
- <cyan>May 21, 2018</cyan> - Dentella Luca - ESP32, PlatformIO
- <cyan>Mar 27, 2018</cyan> - Andreas Schmidt - Building a Web Of Things REST-API on an Arduino MKR1000 with PlatformIO
- <cyan>Mar 19, 2018</cyan> - ThingForward - Webinar: Unit Testing for Embedded with PlatformIO and Qt Creator
- <cyan>Feb 16, 2018</cyan> - Alex Corvis - DIY Virtual alike NEST Thermostat with Node-RED
- <cyan>Jan 24, 2018</cyan> - ThingForward - Embedded and Cloud - Continuous Integration
- <cyan>Jan 14, 2018</cyan> - IT4nextgen - 5 Best Development Software(IDE) for Internet of Things (IOT) in 2018
- <cyan>Jan 13, 2018</cyan> - Rui Marinho - Quick start guide to flashing ESP8266-based devices with PlatformIO

---

### 🌸 2017 🌸

- <peach>Dec 26, 2017</peach> - Coyt Barringer - Programming STM32F103 Blue Pill using USB Bootloader and PlatformIO
- <peach>Dec 1, 2017</peach> - ThingForward - Using Cloud IDEs for Embedded Development: CodeAnywhere
- <peach>Nov 13, 2017</peach> - ThingForward - Automating Static and Dynamic Code Analysis with PlatformIO
- <peach>Oct 18, 2017</peach> - ThingForward - Getting Started with SigFox and PlatformIO
- <peach>Sep 18, 2017</peach> - ThingForward - Embedded Testing with PlatformIO – Part 4: Continuous Integration
- <peach>Sep 06, 2017</peach> - ThingForward - Embedded Testing with PlatformIO – Part 3: Remoting
- <peach>Sep 04, 2017</peach> - Dror Gluska - Looking To The IoT Future With PlatformIO And ESP32
- <peach>Aug 23, 2017</peach> - 陳亮 - Develop ESP32 With PlatformIO IDE
- <peach>Aug 08, 2017</peach> - ThingForward - Embedded Testing with PlatformIO - Part 2
- <peach>Jul 25, 2017</peach> - ThingForward - Start Embedded Testing with PlatformIO
- <peach>Jun 23, 2017</peach> - Naresh Krish - Home Automation Using Wiscore, OpenHab and PlatformIO
- <peach>Jun 05, 2017</peach> - Projects DIY - Démarrer avec PlatformIO IDE alternatif pour Arduino, ESP8266, ESP32 et autres micro-contrôleurs (Start with PlatformIO alternative IDE for Arduino, ESP8266, ESP32 and other microcontrollers, French)
- <peach>Apr 12, 2017</peach> - Jane Elizabeth - Let's talk IoT: PlatformIO puts developers back in the driver's seat
- <peach>Apr 07, 2017</peach> - Al Williams - Hackaday: PlatformIO and Visual Studio take over the world
- <peach>Mar 13, 2017</peach> - Ryan Mulligan - Continuous testing for Arduino libraries using PlatformIO and Travis CI
- <peach>Feb 23, 2017</peach> - Bastiaan Visee - Using PlatformIO for your Arduino projects
- <peach>Jan 12, 2017</peach> - Tiest van Gool - OTA: PlatformIO and ESP8266

### 🦋 2016 🦋

- <mint>Dec 13, 2016</mint> - Dr. Patrick Mineault - Multi-Arduino projects with PlatformIO
- <mint>Dec 08, 2016</mint> - Cuong Tran Viet - PlatformIO is a solution
- <mint>Nov 10, 2016</mint> - PiGreek - PlatformIO the new Arduino IDE ?!
- <mint>Oct 31, 2016</mint> - Ricardo Quesada - Retro Challenge: announcing Commodore Home
- <mint>Oct 3, 2016</mint> - Xose Pérez - Using the new Bean Loader CLI from PlatformIO
- <mint>Sep 20, 2016</mint> - The Linux Foundation - 21 Open Source Projects for IoT
- <mint>Sep 19, 2016</mint> - Doc Walker - How to automatically test build Arduino libraries
- <mint>Sep 18, 2016</mint> - Kadda Sahnine - LoRaWAN network practice with Objenious, PlatformIO and Node-RED
- <mint>Sep 13, 2016</mint> - Xose Pérez MQTT LED Matrix Display
- <mint>Sep 12, 2016</mint> - Pedro Minatel - OTA – Como programar o ESP8266 pelo WiFi no platformIO (OTA programming for ESP8266 via Wi-Fi using PlatformIO, Portuguese)
- <mint>Sep 2, 2016</mint> - Xose Pérez ESP8266: Optimizing files for SPIFFS with Gulp
- <mint>Aug 28, 2016</mint> - Tom Parker Using the BBC micro:bit with PlatformIO
- <mint>Aug 24, 2016</mint> - Primal Cortex Cloud based continuous integration and delivery for IOT using PlatformIO
- <mint>Aug 18, 2016</mint> - Primal Cortex - Installing PlatformIO on Arch Linux
- <mint>Aug 14, 2016</mint> - Rodrigo Castro - PlataformIO o comó usar Arduino con ATOM (Spanish)
- <mint>Jul 27, 2016</mint> - Francesco Azzola - Arduino Alternative IDE: PlatformIO IoT integrated platform
- <mint>Jul 26, 2016</mint> - Embedded Systems Laboratory - แนะนำการใชงาน PlatformIO IDE สำหรบบอรด Arduino และ ESP8266 (Get started with PlatformIO IDE for Arduino board and ESP8266, Thai)
- <mint>Jul 15, 2016</mint> - Jaime - ESP8266 Mobile Rick Roll Captive Portal
- <mint>Jul 5, 2016</mint> - Ivan Kravets, Ph.D. - Explore the new development instruments for Arduino with PlatformIO ecosystem
- <mint>Jul 5, 2016</mint> - Belinda - Monte Bianco Arduino Developer Summit
- <mint>Jul 1, 2016</mint> - Tam Hanna - Mikrocontroller-Gipfel in den Alpen: Arduino Developer Summit, Tag eins (Microcontroller peaks in the Alps: Arduino Developer Summit, Day One, German)
- <mint>Jun 14, 2016</mint> - Glyn Hudson - OpenEnergyMonitor Part 2/3: Firmware Continuous Test & Build
- <mint>Jun 13, 2016</mint> - Daniel Eichhorn - New Weather Station Demo on Github
- <mint>Jun 12, 2016</mint> - Glyn Hudson - OpenEnergyMonitor Part 1/3: PlatformIO open-source embedded development ecosystem
- <mint>Jun 12, 2016</mint> - Uli Wolf - Nutzung von PlatformIO im Atom Editor zur Entwicklung von Arduino Code (Use PlatformIO and Atom Editor to develop Arduino code, German)
- <mint>Jun 3, 2016</mint> - Daniel Eichhorn - ESP8266: Continuous Delivery Pipeline – Push To Production
- <mint>May 30, 2016</mint> - Ron Moerman - IoT Development with PlatformIO
- <mint>May 29, 2016</mint> - Chris Synan - Reverse Engineer RF Remote Controller for IoT!
- <mint>May 26, 2016</mint> - Charlie Key - 7 Best Developer Tools To Build Your NEXT Internet of Things Application
- <mint>May 22, 2016</mint> - Pedro Minatel - Estação meteorológica com ESP8266 (Weather station with ESP8266, Portuguese)
- <mint>May 16, 2016</mint> - Pedro Minatel - Controle remoto WiFi com ESP8266 (WiFi remote control using ESP8266, Portuguese)
- <mint>May 11, 2016</mint> - Jo Vandeginste - Using PlatformIO to compile for Jeelabs' Jeenode Micro
- <mint>May 08, 2016</mint> - Radoslaw Bob - Touch controlled buzzer (Nodemcu ESP8266)
- <mint>May 06, 2016</mint> - Jean Roux - The IoT building blocks I use for my home-automation projects
- <mint>May 05, 2016</mint> - Ivan Kravets, Ph.D. / Eclipse Virtual IoT Meetup - PlatformIO: a cross-platform IoT solution to build them all!
- <mint>May 01, 2016</mint> - Pedro Minatel - PlatformIO – Uma alternativa ao Arduino IDE (PlatformIO - An alternative to the Arduino IDE, Portuguese)
- <mint>Apr 23, 2016</mint> - Al Williams - Hackaday: Atomic Arduino (and Other) Development
- <mint>Apr 16, 2016</mint> - Sathittham Sangthong - [PlatformIO] มาลองเลน PlatformIO แทน Arduino IDE กน (Let's play together with PlatformIO IDE [alternative to Arduino IDE], Thai)
- <mint>Apr 15, 2016</mint> - Daniel Eichhorn - ESP8266: Offline Debugging with the Platformio Environment
- <mint>Apr 11, 2016</mint> - Matjaz Trcek - Top 5 Arduino integrated development environments
- <mint>Apr 06, 2016</mint> - Aleks - PlatformIO ausprobiert (Tried PlatformIO, German)
- <mint>Apr 02, 2016</mint> - Diego Pinto - Você tem coragem de abandonar a IDE do Arduino? PlatformIO + Atom (Do you dare to leave the Arduino IDE? PlatformIO + Atom, Portuguese)
- <mint>Mar 30, 2016</mint> - Brandon Cannaday - Getting Started with PlatformIO and ESP8266 NodeMcu
- <mint>Mar 29, 2016</mint> - Pablo Peñalve - PlatformIO + Geany + Raspberry PI, Spanish
- <mint>Mar 24, 2016</mint> - NAzT - PlatformIO และการปรบแตง เพอใชสำหรบพฒนา Arduino Library (PlatformIO and advanced development for Arduino Library, Thai)
- <mint>Mar 16, 2016</mint> - Jakub Skořepa - Instalace PlatformIO (PlatformIO IDE Installation, Czech)
- <mint>Mar 12, 2016</mint> - Peter Marks - PlatformIO, the Arduino IDE for programmers
- <mint>Mar 12, 2016</mint> - Richard Arthurs - Getting Started With PlatformIO
- <mint>Mar 07, 2016</mint> - Joran Jessurun - Nieuwe wereld met PlatformIO (New world with PlatformIO, Dutch)
- <mint>Mar 05, 2016</mint> - brichacek.net - PlatformIO – otevřený ekosystém pro vývoj IoT (PlatformIO – an open source ecosystem for IoT development, Czech)
- <mint>Mar 04, 2016</mint> - Ricardo Vega - Programa tu Arduino desde Atom (Program your Arduino from Atom, Spanish)
- <mint>Feb 28, 2016</mint> - Alex Bloggt - PlatformIO vorgestellt (Introduction to PlatformIO IDE, German)
- <mint>Feb 25, 2016</mint> - NutDIY - PlatformIO Blink On Nodemcu Dev Kit V1.0 (Thai)
- <mint>Feb 23, 2016</mint> - Ptarmigan Labs - ESP8266 Over The Air updating – what are the options?
- <mint>Feb 22, 2016</mint> - Grzegorz Hołdys - How to Integrate PlatformIO with Netbeans
- <mint>Feb 19, 2016</mint> - Embedds - Develop easier with PlatformIO ecosystem
- <mint>Feb 13, 2016</mint> - Robert Cudmore - Programming an arduino with PlatformIO
- <mint>Jan 24, 2016</mint> - Sergey Prilukin - How to use IntelliJ IDEA to develop and upload software for micro controllers like Arduino
- <mint>Jan 16, 2016</mint> - Dani Eichhorn - ESP8266 Arduino IDE Alternative: PlatformIO
- <mint>Jan 11, 2016</mint> - David Mills, Ph.D. - STM NUCLEOF401RE TIMER IO
- <mint>Jan 05, 2016</mint> - Julien Rodrigues - Internet Of Things: The IDE scandal

### 💜 2015 💜

- <lavender>Dec 22, 2015</lavender> - Jan Penninkhof - Over-the-Air ESP8266 programming using PlatformIO
- <lavender>Dec 15, 2015</lavender> - stastaka - PlatformIOでカスタムボードを使う (Use a custom board for PlatformIO, Japanese)
- <lavender>Dec 08, 2015</lavender> - Piotr Król - Using PlatformIO with TI MSP430 LunchPads
- <lavender>Dec 01, 2015</lavender> - Michał Seroczyński - Push Notification from Arduino Yún with motion sensor
- <lavender>Dec 01, 2015</lavender> - JetBrains CLion Blog - C++ Annotated: Fall 2015. Arduino Support in CLion using PlatformIO
- <lavender>Dec 01, 2015</lavender> - Tateno Yuichi - ESP8266 を CUI で開発する (Develop a ESP8266 in CUI, Japanese)
- <lavender>Nov 29, 2015</lavender> - Keith Hughes - Using PlatformIO for Embedded Projects
- <lavender>Nov 22, 2015</lavender> - Michał Seroczyński - Using PlatformIO to get started with Arduino in CLion IDE
- <lavender>Nov 09, 2015</lavender> - ÁLvaro García Gómez - Programar con Arduino "The good way" (Programming with Arduino "The good way", Spanish)
- <lavender>Nov 06, 2015</lavender> - nocd5 - PlatformIOでmbedをオフラインビルドしSTM32 Nucleoボードでmrubyを使う (Use mruby in the offline build for STM32 Nucleo board with mbed and PlatformIO, Japanese)
- <lavender>Oct 21, 2015</lavender> - Vittorio Zaccaria - Using a cheap STM32 Nucleo to teach remote sensor monitoring
- <lavender>Oct 18, 2015</lavender> - Nico Coetzee - First Arduino I2C Experience with PlatformIO
- <lavender>Oct 10, 2015</lavender> - Floyd Hilton - Programming Arduino with Atom
- <lavender>Oct 01, 2015</lavender> - Mistan - Compile and Upload Arduino Sketch with PlatformIO for Raspberry Pi Running Arch Linux

---

<rainbow>okay bestie that's the end of the article list 💖</rainbow> — <pink>like, literally hundreds of people out here writing about PlatformIO in every language imaginable</pink>, and yes the dates are not in order, <purple>no cap</purple>, that's just how it is and we are *not* touching it. 🫶

- Sep 30, 2015 — Jay Wiggins — PlatformIO Investigation
- Sep 01, 2015 — Thomas P. Weldon, Ph.D. — Improvised MBED FRDM-K64F Eclipse/PlatformIO Setup and Software Installation
- Aug 08, 2015 — Josh Glendenning — Armstrap Eagle and PlatformIO
- Aug 01, 2015 — Russell Davis — PlatformIO on the Raspberry Pi
- Jul 25, 2015 — DinoTools — Erste Schritte mit PlatformIO (Getting Started with PlatformIO, German)
- Jul 20, 2015 — Eli Fatsi — Arduino Development in Atom Editor
- Jul 14, 2015 — ElbinarIO — Programar para Arduino y otros microcontroladores desde la linea de comandos (Program Arguino and other microcontrollers from the command line, Spanish)
- Jul 11, 2015 — TrojanC — Learning Arduino GitHub Repository
- Jul 07, 2015 — Sho Hashimoto — PlatformIOでArduino開発する(Arduino development in PlatformIO, Japanese)
- Jun 02, 2015 — Alejandro Guirao Rodríguez — Discovering PlatformIO: The RaspberryPi / Arduino combo kit is a winner option when prototyping an IoT-style project
- May 17, 2015 — S.S — コマンドラインでArduino開発 : vim + platformio (Arduino development at the command line: VIM + PlatformIO, Japanese)
- May 11, 2015 — IT Hare — From Web Developer to Embedded One: Interview with Ivan Kravets, The Guy Behind PlatformIO. Part II
- May 4, 2015 — IT Hare — From Web Developer to Embedded One: Interview with Ivan Kravets, The Guy Behind PlatformIO. Part I
- Apr 17, 2015 — Michael Ball — PlatformIO - A Cross-Platform Code Builder and Missing Library Manager
- Mar 23, 2015 — Atmel — Cross-board and cross-vendor embedded development with PlatformIO
- Mar 22, 2015 — Mark VandeWettering — Discovered a new tool for embedded development: PlatformIO
- Feb 25, 2015 — Hendrik Putzek — Use your favourite IDE together with Arduino

## <pink>2014</pink> 💖

- Oct 7, 2014 — Ivan Kravets, Ph.D. — Integration of PlatformIO library manager to Arduino and Energia IDEs
- Jun 20, 2014 — Ivan Kravets, Ph.D. — Building and debugging Atmel AVR (Arduino-based) project using Eclipse IDE+PlatformIO
- Jun 17, 2014 — Ivan Kravets, Ph.D. — How was PlatformIO born or why I love Python World

---

# <purple>💬 Frequently Asked Questions 💬</purple>

> **NOTE:** We have a big database with Frequently Asked Questions in our Community Forums. Please have a look at it. 🫶

## <lavender>📚 Contents 📚</lavender>

- General
  - What is PlatformIO?
  - What is .pio directory
  - What is .pioenvs directory
  - Command completion in Terminal
- Install Python Interpreter
- Convert Arduino file to C++ manually
- Program Memory Usage
- Advanced Serial Monitor with UI
- Troubleshooting
  - Installation
    - Multiple PIO Cores in a system
    - 'platformio' is not recognized as an internal or external command
    - 99-platformio-udev.rules
    - ImportError: cannot import name _remove_dead_weakref
  - Package Manager
    - [Error 5] Access is denied
      - Solution 1: Remove folder
      - Solution 2: Antivirus
      - Solution 3: Run from Terminal
      - Solution 4: Manual
  - Building
    - UnicodeWarning: Unicode equal comparison failed
    - UnicodeDecodeError: Non-ASCII characters found in build environment
    - ARM toolchain: cc1plus: error while loading shared libraries
    - Archlinux: libncurses.so.5: cannot open shared object file
    - Monitoring a serial port breaks upload

---

# <cyan>🌈 General 🌈</cyan>

## <mint>What is PlatformIO? 🦋</mint>

Please refer to `what_is_pio` ✨

## <mint>What is .pio directory 🎀</mint>

Please refer to `projectconf_pio_workspace_dir`. 💅

## <mint>What is .pioenvs directory 🎀</mint>

Please refer to `projectconf_pio_build_dir`. 💅

## <mint>Command completion in Terminal ⭐</mint>

Please refer to `cmd_misc_completion`. 💜

## <mint>Install Python Interpreter 🐍</mint>

`piocore` is written in Python, and Python is installed by default on all the popular OS <pink>except Windows</pink>. 😭

Please navigate to the official website and Download the latest Python and install it. Please <red>READ NOTES BELOW</red>. 👑

- **macOS** — Please read the "Important Information" displayed during installation for information about SSL/TLS certificate validation and the running the "Install Certificates.command".

  If you do not install SSL/TLS certificates, PlatformIO will not be able to download dependent packages, libraries, and toolchains. 💀

- **Windows** — Please select Add Python to Path (see below), otherwise, `python` command will not be available.

  [image]

## <mint>Convert Arduino file to C++ manually 🧚</mint>

Some `ide` doesn't support Arduino files (`*.ino` and `*.pde`) because they are not valid C/C++ based source files:

1. Missing includes such as `#include <Arduino.h>`
2. Function declarations are omitted.

In this case, code completion and code linting do not work properly or are disabled. To avoid this issue you can manually convert your INO files to CPP. 🫶

For example, we have the next `Demo.ino` file:

void setup () { someFunction(13); }

void loop() { delay(1000); }

void someFunction(int num) { }


Let's convert it to `Demo.cpp`:

1. Add `#include <Arduino.h>` at the top of the source file
2. Declare each custom function (excluding built-in, such as `setup` and `loop`) before it will be called.

The final `Demo.cpp`:

#include <Arduino.h>

void someFunction(int num);

void setup () { someFunction(13); }

void loop() { delay(1000); }

void someFunction(int num) { }


Finish. ✨

## <mint>Program Memory Usage 💾</mint>

PlatformIO calculates firmware/program memory usage based on the next segments:

- **`.text`** — The code segment, also known as a text segment or simply as text, is where a portion of an object file or the corresponding section of the program's virtual address space that contains executable instructions is stored and is generally read-only and fixed size.
- **`.data`** — The `.data` segment contains any global or static variables which have a pre-defined value and can be modified. The values for these variables are initially stored within the read-only memory (typically within `.text`) and are copied into the `.data` segment during the start-up routine of the program. Example,

int val = 3; char string[] = "Hello World";


- **`.bss`** — Uninitialized data is usually adjacent to the data segment. The BSS segment contains all global variables and static variables that are initialized to zero or do not have explicit initialization in the source code. For instance, a variable defined as `static int i;` would be contained in the BSS segment.

The rough calculation could be done as:

- PROGRAM (Flash) = `.text` + `.data`
- DATA (RAM) = `.bss` + `.data`

If you need to print all memory sections and addresses, please use `platformio run --verbose` command. 👑

Recommended for reading:

- `https://en.wikipedia.org/wiki/Data_segment`
- text, data and bss: Code and Data Size Explained

## <mint>Advanced Serial Monitor with UI 🔥</mint>

PlatformIO Core provides CLI version (`cmd_device_monitor`) of Serial Monitor. If you need advanced instrument with a rich UI, we recommend free and multi-platform CoolTerm serial port terminal application. 💅

> **WARNING:** Please note that you need to manually disconnect (close serial port connection) in CoolTerm before doing uploading in PlatformIO. PlatformIO can not disconnect/connect to a target device automatically when CoolTerm is used. 😭

---

# <red>🛠️ Troubleshooting 🛠️</red>

## <peach>Installation 📦</peach>

### <yellow>Multiple PIO Cores in a system 💀</yellow>

Multiple standalone `piocore` in a system could lead to the different issues. We highly recommend to keep one instance of PIO Core or use built-in PIO Core in `pioide`:

- `ide_atom` — Menu PlatformIO: Settings > PlatformIO IDE > Use built-in PlatformIO Core
- `ide_vscode` — `ide_vscode_settings` > Set `platformio-ide.useBuiltinPIOCore` to `true`.

Finally, if you have a standalone `piocore` in a system, please open system Terminal (**not** PlatformIO IDE Terminal) and uninstall obsolete PIO Core:

pip uninstall platformio

if you used macOS "brew"

brew uninstall platformio


If you need to have `piocore` globally in a system, please `piocore_install_shell_commands`. 🫶

### <yellow>'platformio' is not recognized as an internal or external command 🙈</yellow>

If you use `pioide`, please check in PlatformIO IDE Settings that "Use built-in PIO Core" is enabled.

If you modify system environment variable `PATH` in your Bash/Fish/ZSH profile, please do not override global `PATH`. This line `export PATH="/my/custom/path"` is incorrect. Use `export PATH="/my/custom/path":$PATH` instead. ⭐

### <yellow>99-platformio-udev.rules 🐧</yellow>

Linux users have to install `udev` rules for PlatformIO supported boards/devices. The latest version of rules may be found at `https://raw.githubusercontent.com/platformio/platformio-core/master/scripts/99-platformio-udev.rules`

> **NOTE:** Please check that your board's PID and VID are listed in the rules. You can list connected devices and their PID/VID using `cmd_device_list` command. 💅

This file must be placed at `/etc/udev/rules.d/99-platformio-udev.rules` (preferred location) or `/lib/udev/rules.d/99-platformio-udev.rules` (required on some broken systems).

Please open system Terminal and type

curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/master/scripts/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules

OR, manually download and copy this file to destination folder

sudo cp 99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules


Restart "udev" management tool:

sudo service udev restart

or

sudo udevadm control --reload-rules sudo udevadm trigger


Ubuntu/Debian users may need to add own “username” to the “dialout” group if they are not “root”, doing this issuing

sudo usermod -a -G dialout $USER sudo usermod -a -G plugdev $USER


Similarly, Arch users may need to add their user to the “uucp” group

sudo usermod -a -G uucp $USER sudo usermod -a -G lock $USER


> **NOTE:** You will need to log out and log back in again (or reboot) for the user group changes to take effect. 😭

After this file is installed, physically unplug and reconnect your board. 🔌

### <yellow>ImportError: cannot import name _remove_dead_weakref 🐍</yellow>

Windows users can experience this issue when multiple Python interpreters are installed in a system and conflict each other. The easy way to fix this problem is uninstalling all Python interpreters using Windows Programs Manager and installing them manually again. ✨

1. Pop open `"Windows > Start Menu > Settings > System > Apps & Features"`, find your Python interpreters and uninstall every single one of them. All of them. No survivors 💅

2. Install the freshest Python interpreter — peep the *Install Python Interpreter* guide for the step-by-step 💖

3. Yeet the `C:\Users\YourUserName\.platformio` and `C:\.platformio` folders if they exist (and bestie, swap `YourUserName` for your actual user name, don't just leave it like that 😭)

4. Restart `pioide` 🔄

---

## 🧯 Package Manager 🧯

### 🚫 [Error 5] Access is denied 🚫

PlatformIO drops all its packages into the `projectconf_pio_core_dir/packages` directory, so you **MUST HAVE** write access to that folder. Periodt. The good news tho? PlatformIO does **not** require `sudo`/administrative privileges, so don't come at it with the admin energy, it doesn't need it 💅

- **Solution 1: Remove folder**
- **Solution 2: Antivirus**
- **Solution 3: Run from Terminal**
- **Solution 4: Manual**

**Solution 1: Remove folder**

Quickest glow-up: delete the `projectconf_pio_core_dir/packages` folder and then just repeat the installation/building/uploading again. Fresh start, iconic 🎀

**Solution 2: Antivirus**

Some antivirus tools literally forbid programs from creating files in the background, which is a whole vibe killer. And guess what PlatformIO Package Manager does? **All** of its work in the background: it downloads the package, unpacks the archive in a temporary folder, and moves the final files into the `projectconf_pio_core_dir/packages` folder. So sneaky.

An antivirus tool can block PlatformIO, and that is exactly why you're staring at `"[Error 5] Access is denied"`. Try disabling it for a bit, or add the `projectconf_pio_core_dir` directory to the exclusion/whitelist. Trust 🫶

**Solution 3: Run from Terminal**

Like we said in "Solution 2", antivirus tools can block background file system operations. Another way out: run `piocore` straight from a system terminal.

1. Open System Terminal — on Windows that's `cmd.exe` (and **not** the `pioide` Terminal, ok?)

2. Build a project and upload firmware using `piocore`, which will download and install all the dependent packages:

Change directory to PlatformIO Project where is located "platformio.ini"

cd path/to/platformio/project

Force PlatformIO to install PIO Home dependencies

platformio home

Force PlatformIO to install toolchains

platformio run --target upload


If the `platformio` command isn't globally available in your environment and you're using `pioide`, please use the built-in `piocore`, which lives in:

- Windows: `C:\Users\{username}\.platformio\penv\Scripts\platformio` — please replace `{username}` with a real user name 💖
- Unix: `~/.platformio/penv/bin/platformio`

> **NOTE:** You can add `platformio` and `pio` commands to your system environment. See `piocore_install_shell_commands`. ✨

**Solution 4: Manual**

If none of the solutions above do work for you, you can download and unpack all packages manually into `projectconf_pio_core_dir/packages`.

Please visit *PlatformIO Package Storage* and download a package for your platform. A correct package path is `projectconf_pio_core_dir/packages/{package_name}/package.json`.

---

## 🔨 Building 🔨

### 😵 UnicodeWarning: Unicode equal comparison failed

The full warning message is `"UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal"`.

**KNOWN ISSUE.** Please move your project to a folder whose full path does not contain non-ASCII chars. Like, just relocate it, bestie 🦋

### 😭 UnicodeDecodeError: Non-ASCII characters found in build environment

**KNOWN ISSUE.** `piocore` currently does not support projects which contain non-ASCII characters (codes) in a full path, or that depend on libraries which use non-ASCII characters in their names.

**TEMPORARY SOLUTION**

1. Use `pioide` — it will automatically install `piocore` in a root of system disk (`%DISK%/.platformio`) and avoid the issue when the system User contains non-ASCII characters 🌈

2. Do not use non-ASCII characters in the project folder name or its parent folders.

Also, if you want to place `piocore` in its own location, see:

- Set `PLATFORMIO_CORE_DIR` environment variable with own path
- Configure custom location per project using `projectconf_pio_core_dir` option in `projectconf`

### 🧰 ARM toolchain: cc1plus: error while loading shared libraries

See related answers for *error while loading shared libraries*.

### 🐧 Archlinux: libncurses.so.5: cannot open shared object file

Answered in issue #291.

### 🔌 Monitoring a serial port breaks upload

Answered in issue #384.

---

## 📝 Release Notes 📝

### 👑 PlatformIO Core 4 👑

**4.3.4 (2020-05-23)**

- Added PlatformIO CLI Shell Completion for Fish, Zsh, Bash, and PowerShell (issue #3435) 🐟
- Automatically build `contrib-pysite` package on a target machine when the pre-built package is not compatible (issue #3482)
- Fixed an issue on Windows when installing a library dependency from a Git repository (issue #2844, issue #3328)

**4.3.3 (2020-04-28)**

- Fixed `"UnicodeDecodeError: 'utf-8' codec can't decode byte"` when non-Latin chars are used in project path (issue #3481)

**4.3.2 (2020-04-28)**

- New Account Management System (preview) 🔐
- Open source PIO Remote client
- Improved PIO Check with more accurate project processing
- Echo what is typed when `send_on_enter` device monitor filter is used (issue #3452)
- Fixed PIO Unit Testing for Zephyr RTOS
- Fixed `UnicodeDecodeError` on Windows when network drive (NAS) is used (issue #3417)
- Fixed an issue when saving libraries in new project results in error `"No option 'lib_deps' in section"` (issue #3442)
- Fixed an incorrect node path used for pattern matching when processing middleware nodes
- Fixed an issue with missing `lib_extra_dirs` option in `SRC_LIST` for CLion (issue #3460)

**4.3.1 (2020-03-20)**

- Fixed a `SyntaxError` `"'return' with argument inside generator"` for PIO Unified Debugger when Python 2.7 is used
- Fixed an issue when `lib_archive = no` was not honored in `"platformio.ini"`
- Fixed a `TypeError` `"super(type, obj): obj must be an instance or subtype of type"` when device monitor is used with a custom `dev-platform` filter (issue #3431)

**4.3.0 (2020-03-19)**

- Initial support for an official PlatformIO for CLion IDE plugin:
  - Smart C and C++ editor
  - Code refactoring
  - On-the-fly code analysis
  - `"New PlatformIO Project"` wizard
  - Building, Uploading, Testing
  - Integrated debugger (inline variable view, conditional breakpoints, expressions, watchpoints, peripheral registers, multi-thread support, etc.)
- Device Monitor 2.0
  - Added PlatformIO Device Monitor Filter API (`dev-platforms` can extend base device monitor with a custom functionality, such as exception decoding) (pull #3383)
  - Configure project device monitor with `monitor_filters` option
  - Capture device monitor output to a file with `log2file` filter (issue #670)
  - Show a timestamp for each new line with `time` filter (issue #981)
  - Send a text to device on ENTER with `send_on_enter` filter (issue #926)
  - Show a hexadecimal representation of the data (code point of each character) with `hexlify` filter
- New standalone (1-script) PlatformIO Core Installer
- Initial support for Renode simulation framework (issue #3401)
- Added support for Arm Mbed `"module.json"` dependencies field (issue #3400)
- Improved support for Arduino `"library.properties"` `depends` field
- Fixed an issue when quitting from PlatformIO IDE does not shutdown PIO Home server
- Fixed an issue `"the JSON object must be str, not 'bytes'"` when PIO Home is used with Python 3.5 (issue #3396)
- Fixed an issue when Python 2 does not keep encoding when converting `".ino"` (issue #3393)
- Fixed an issue when `"libArchive": false` in `"library.json"` does not work (issue #3403)
- Fixed an issue when not all commands in compilation database `"compile_commands.json"` use absolute paths (pull #3415)
- Fixed an issue when unknown transport is used for PIO Unit Testing engine (issue #3422)

**4.2.1 (2020-02-17)**

- Improved VSCode template with special `forceInclude` field for direct includes via `-include` flag (issue #3379)
- Improved support of PIO Home on card-sized PC (Raspberry Pi, etc.) (issue #3313)
- Froze `"marshmallow"` dependency to 2.X for Python 2 (issue #3380)
- Fixed `"TypeError: unsupported operand type(s)"` when system environment variable is used by project configuration parser (issue #3377)
- Fixed an issue when Library Dependency Finder (LDF) ignores custom `"libLDFMode"` and `"libCompatMode"` options in `library.json`
- Fixed an issue when generating of compilation database `"compile_commands.json"` does not work with Python 2.7 (issue #3378)

**4.2.0 (2020-02-12)**

- PlatformIO Home 3.1:
  - Project Manager
  - Project Configuration UI for `"platformio.ini"`
- PIO Check – automated code analysis without hassle:
  - Added support for PVS-Studio static code analyzer
- Initial support for Project Manager CLI:
  - Show computed project configuration with a new `platformio project config` command or dump to JSON with `platformio project config --json-output` (issue #3335)
  - Moved `platformio init` command to `platformio project init`
- Generate compilation database `"compile_commands.json"` (issue #2990)
- Control debug flags and optimization level with a new `debug_build_flags` option
- Install a `dev-platform` with ALL declared packages using a new `--with-all-packages` option for `pio platform install` command (issue #3345)
- Added support for `"pythonPackages"` in `platform.json` manifest (PlatformIO Package Manager will install dependent Python packages from PyPi registry automatically when `dev-platform` is installed)
- Handle project configuration (`monitor`, `test`, and `upload` options) for PIO Remote commands (issue #2591)
- Added support for Arduino's `library.properties` `depends` field (issue #2781)
- Autodetect monitor port for boards with specified HWIDs (issue #3349)
- Updated SCons tool to 3.1.2
- Updated Unity tool to 2.5.0
- Made package `ManifestSchema` compatible with `marshmallow >= 3` (issue #3296)
- Warn about broken library manifest when scanning dependencies (issue #3268)
- Do not overwrite custom items in VSCode's `"extensions.json"` (issue #3374)
- Fixed an issue when `env.BoardConfig()` does not work for custom boards in extra scripts of libraries (issue #3264)
- Fixed an issue with `"start-group/end-group"` linker flags on Native development platform (issue #3282)
- Fixed default PIO Unified Debugger configuration for J-Link probe
- Fixed an issue with LDF when header files not found if `"libdeps_dir"` is within a subdirectory of `"lib_extra_dirs"` (issue #3311)
- Fixed an issue `"Import of non-existent variable 'projenv''"` when development platform does not call `"env.BuildProgram()"` (issue #3315)
- Fixed an issue when invalid CLI command does not return non-zero exit code

- <green>Fixed</green> a lil' situation where Project Inspector would just 💀 crash when flash use went over <yellow>100%</yellow> (issue <cyan>#3368</cyan>)

- <green>Fixed</green> a `"UnicodeDecodeError"` when listing built-in libraries on macOS rockin' Python 2.7 (issue <cyan>#3370</cyan>)

- <green>Fixed</green> the way compiler flags with space symbols were being handled all wrong in the VSCode template (issue <cyan>#3364</cyan>)

- <green>Fixed</green> the fact that <em>no error</em> got raised when a referred parameter (interpolation) was missing from a project configuration file, like, excuse me?? (issue <cyan>#3279</cyan>)

---

## ✨ <purple>4.1.0</purple> (<lavender>2019-11-07</lavender>) ✨

- <hotpink>PIO Check</hotpink> – automated code analysis, zero hassle, bestie:

  - Potential <red>NULL</red> pointer dereferences

  - Possible indexing beyond array bounds

  - Suspicious assignments 👀

  - Reads of potentially uninitialized objects

  - Unused variables or functions

  - Out of scope memory usage.

- <hotpink>PlatformIO Home 3.0</hotpink>:

  - Project Inspection

  - Static Code Analysis

  - Firmware File Explorer

  - Firmware Memory Inspection

  - Firmware Sections & Symbols Viewer.

- Added support for <purple>Build Middlewares</purple>: configure custom build flags per specific file, skip any build nodes from a framework, replace build file with another on-the-fly, etc. it's giving *power* 💅

- Extend project environment configuration in `"platformio.ini"` with other sections using a new `extends` option (issue <cyan>#2953</cyan>)

- Generate `.ccls` LSP file for Emacs cross references, hierarchies, completion and semantic highlighting ✨

- Added `--no-ansi` flag for PIO Core to disable ANSI control characters

- Added `--shutdown-timeout` option to PIO Home Server

- <green>Fixed</green> an issue with project generator for CLion IDE when <yellow>2</yellow> environments were used (issue <cyan>#2824</cyan>)

- <green>Fixed</green> default PIO Unified Debugger configuration for J-Link probe

- <green>Fixed</green> an issue when configuration file options were partly ignored when using a custom `--project-conf` (issue <cyan>#3034</cyan>)

- <green>Fixed</green> an issue when installing a package using a custom Git tag and submodules weren't updated correctly (issue <cyan>#3060</cyan>)

- <green>Fixed</green> an issue with the linking process when `$LDSCRIPT` contains a space in path

- <green>Fixed</green> a security issue when extracting items from TAR archive (issue <cyan>#2995</cyan>) 🔥

- <green>Fixed</green> an issue with project generator when `src_build_flags` were not respected (issue <cyan>#3137</cyan>)

- <green>Fixed</green> an issue when booleans in `"platformio.ini"` are not parsed properly (issue <cyan>#3022</cyan>)

- <green>Fixed</green> an issue with invalid encoding when generating project for Visual Studio (issue <cyan>#3183</cyan>)

- <green>Fixed</green> an issue when Project Config Parser does not remove in-line comments when Python 3 is used (issue <cyan>#3213</cyan>)

- <green>Fixed</green> an issue with a GCC Linter for PlatformIO IDE for Atom (issue <cyan>#3218</cyan>)

## ✨ <purple>4.0.3</purple> (<lavender>2019-08-30</lavender>) ✨

- Added support for multi-environment PlatformIO project for CLion IDE (issue <cyan>#2824</cyan>)

- Generate `.ccls` LSP file for Vim cross references, hierarchies, completion and semantic highlighting (issue <cyan>#2952</cyan>)

- Added support for the `PLATFORMIO_DISABLE_COLOR` system environment variable which disables color ANSI-codes in a terminal output (issue <cyan>#2956</cyan>)

- Updated SCons tool to <yellow>3.1.1</yellow>

- Remove ProjectConfig cache when `"platformio.ini"` was modified outside

- <green>Fixed</green> an issue with PIO Unified Debugger on Windows OS when the debug server is piped

- <green>Fixed</green> an issue when the `--upload-port` CLI flag does not override the declared `upload_port` option in `"platformio.ini"` (Project Configuration File)

## ✨ <purple>4.0.2</purple> (<lavender>2019-08-23</lavender>) ✨

- <green>Fixed</green> an issue with a broken LDF when checking for framework compatibility (issue <cyan>#2940</cyan>)

## ✨ <purple>4.0.1</purple> (<lavender>2019-08-22</lavender>) ✨

- Print debug tool name for the active debugging session 🐛

- Do not shutdown PIO Home Server for `"upgrade"` operations (issue <cyan>#2784</cyan>)

- Improved computing of project check sum (structure, configuration) and avoid unnecessary rebuilding, no more wasted time bestie 🫶

- Improved printing of tabulated results

- Automatically normalize file system paths to UNIX-style for Project Generator (issue <cyan>#2857</cyan>)

- Ability to set `"databaseFilename"` for VSCode and C/C++ extension (issue <cyan>#2825</cyan>)

- Renamed `"enable_ssl"` setting to `strict_ssl`

- <green>Fixed</green> an issue with incorrect escaping of Windows slashes when using PIO Unified Debugger and `"piped"` openOCD

- <green>Fixed</green> an issue when `"debug"`, `"home"`, `"run"`, and `"test"` commands were not shown in `platformio --help` CLI

- <green>Fixed</green> an issue with PIO Home's `"No JSON object could be decoded"` (issue <cyan>#2823</cyan>)

- <green>Fixed</green> an issue when `library.json` had priority over project configuration for LDF (issue <cyan>#2867</cyan>)

## ✨ <purple>4.0.0</purple> (<lavender>2019-07-10</lavender>) ✨

Migration Guide from <yellow>3.0</yellow> to <yellow>4.0</yellow>. buckle up 💖

- <hotpink>PlatformIO Plus Goes Open Source</hotpink> 🎉

  - Built-in PIO Unified Debugger

  - Built-in PIO Unit Testing

- <hotpink>Project Configuration</hotpink>

  - New project configuration parser with a strict options typing (API)

  - Unified workspace storage (`workspace_dir` -> `.pio`) for PlatformIO Build System, Library Manager, and other internal services (issue <cyan>#1778</cyan>)

  - Share common (global) options between project environments using `[env]` section (issue <cyan>#1643</cyan>)

  - Include external configuration files with `extra_configs` option (issue <cyan>#1590</cyan>)

  - Custom project `***_dir` options declared in `platformio` section have higher priority than Environment variables

  - Added support for Unix shell-style wildcards for `monitor_port` option (issue <cyan>#2541</cyan>)

  - Added new `monitor_flags` option which allows passing extra flags and options to `platformio device monitor` command (issue <cyan>#2165</cyan>)

  - Added support for `PLATFORMIO_DEFAULT_ENVS` system environment variable (issue <cyan>#1967</cyan>)

  - Added support for `shared_dir` where you can place an extra files (extra scripts, LD scripts, etc.) which should be transferred to a PIO Remote machine

- <hotpink>Library Management</hotpink>

  - Switched to workspace `.pio/libdeps` folder for project dependencies instead of `.piolibdeps`

  - Save libraries passed to `platformio lib install` command into the project dependency list (`lib_deps`) with a new `--save` flag (issue <cyan>#1028</cyan>)

  - Install all project dependencies declared via `lib_deps` option using a simple `platformio lib install` command (issue <cyan>#2147</cyan>)

  - Use isolated library dependency storage per project build environment (issue <cyan>#1696</cyan>)

  - Look firstly in built-in library storages for a missing dependency instead of PlatformIO Registry (issue <cyan>#1654</cyan>)

  - Override default source and include directories for a library via `library.json` manifest using `includeDir` and `srcDir` fields

  - <green>Fixed</green> an issue when library keeps reinstalling for non-latin path (issue <cyan>#1252</cyan>)

  - <green>Fixed</green> an issue when `lib_compat_mode = strict` does not ignore libraries incompatible with a project framework

- <hotpink>Build System</hotpink>

  - Switched to workspace `.pio/build` folder for build artifacts instead of `.pioenvs`

  - Switch between Build Configurations (`release` and `debug`) with a new project configuration option `build_type`

  - Custom `platform_packages` per a build environment with an option to override default (issue <cyan>#1367</cyan>)

  - Print platform package details, such as version, VSC source and commit (issue <cyan>#2155</cyan>)

  - Control a number of parallel build jobs with a new `-j`, `--jobs` option

  - Override default `"platformio.ini"` (Project Configuration File) with a custom using `-c`, `--project-conf` option for `platformio run`, `platformio debug`, or `platformio test` commands (issue <cyan>#1913</cyan>)

  - Override default development platform upload command with a custom `upload_command` (issue <cyan>#2599</cyan>)

  - Configure a shared folder for the derived files (objects, firmwares, ELFs) from a build system using `build_cache_dir` option (issue <cyan>#2674</cyan>)

  - <green>Fixed</green> an issue when `-U` in `build_flags` does not remove macro previously defined via `-D` flag (issue <cyan>#2508</cyan>)

- <hotpink>Infrastructure</hotpink>

  - Python 3 support (issue <cyan>#895</cyan>)

  - Significantly speedup back-end for PIO Home. It works super fast now! 🏎️

  - Added support for the latest Python `"Click"` package (CLI) (issue <cyan>#349</cyan>)

  - Added options to override default locations used by PlatformIO Core (`core_dir`, `globallib_dir`, `platforms_dir`, `packages_dir`, `cache_dir`) (issue <cyan>#1615</cyan>)

  - Removed line-buffering from `platformio run` command which was leading to omitting progress bar from upload tools (issue <cyan>#856</cyan>)

  - <green>Fixed</green> numerous issues related to `"UnicodeDecodeError"` and international locales, or when project path contains non-ASCII chars (issue <cyan>#143</cyan>, issue <cyan>#1342</cyan>, issue <cyan>#1959</cyan>, issue <cyan>#2100</cyan>)

- <hotpink>Integration</hotpink>

  - Support custom CMake configuration for CLion IDE using `CMakeListsUser.txt` file

  - <green>Fixed</green> an issue with hardcoded C standard version when generating project for CLion IDE (issue <cyan>#2527</cyan>)

  - <green>Fixed</green> an issue with Project Generator when an include path search order is inconsistent to what passed to the compiler (issue <cyan>#2509</cyan>)

  - <green>Fixed</green> an issue when generating invalid `"Eclipse CDT Cross GCC Built-in Compiler Settings"` if a custom `PLATFORMIO_CORE_DIR` is used (issue <cyan>#806</cyan>)

- <hotpink>Miscellaneous</hotpink>

  - Deprecated `--only-check` PlatformIO Core CLI option for `"update"` sub-commands, please use `--dry-run` instead

  - <green>Fixed</green> `"systemd-udevd"` warnings in `99-platformio-udev.rules` (issue <cyan>#2442</cyan>)

  - <green>Fixed</green> an issue when package cache (Library Manager) expires too fast (issue <cyan>#2559</cyan>)

---

# 👑 <rainbow>PlatformIO Core 3</rainbow> 👑

## ✨ <purple>3.6.7</purple> (<lavender>2019-04-23</lavender>) ✨

- PIO Unified Debugger: improved debugging in `debug_load_mode = modified` and <green>fixed</green> an issue with useless project rebuilding

- Project Generator: <green>fixed</green> a VSCode C/C++'s `"Cannot find"` warning when `CPPPATH` folder does not exist

- <green>Fixed</green> an `"IndexError: list index out of range"` for Arduino sketch preprocessor (issue <cyan>#2268</cyan>)

- <green>Fixed</green> an issue when invalid `"env_default"` in `"platformio.ini"` (Project Configuration File) results into unhandled errors (issue <cyan>#2265</cyan>)

## ✨ <purple>3.6.6</purple> (<lavender>2019-03-29</lavender>) ✨

- Project Generator: <green>fixed</green> a warning `"Property !!! WARNING !!! is not allowed"` for VSCode (issue <cyan>#2243</cyan>)

- <green>Fixed</green> an issue when PlatformIO Build System does not pick up `"mbed_lib.json"` files from libraries (issue <cyan>#2164</cyan>)

- <green>Fixed</green> an error with conflicting declaration of a prototype (Arduino sketch preprocessor)

- <green>Fixed</green> `"FileExistsError"` when `platformio ci` command is used in pair with `--keep-build-dir` option

- <green>Fixed</green> an issue with incorrect order of project `"include"` and `"src"` paths in `CPPPATH` (issue <cyan>#1914</cyan>)

## ✨ <purple>3.6.5</purple> (<lavender>2019-03-07</lavender>) ✨

- Project Generator: added new targets for CLion IDE `"BUILD_VERBOSE"` and `"MONITOR"` (serial port monitor) (issue <cyan>#359</cyan>)

- <green>Fixed</green> an issue with slow updating of PlatformIO Core packages on Windows

- Fixed an issue when `platformio ci` recompiles project if `--keep-build-dir` option is passed (issue #2109)

- Fixed an issue when `$PROJECT_HASH` template was not expanded for the other directory `***_dir` options in `"platformio.ini"` (Project Configuration File) (issue #2170)

---

## 3.6.4 (2019-01-23) 🎀

- Improved Project Generator for IDEs, bestie, and it ate:
  - Use full path to PlatformIO CLI when generating a project (issue #1674)
  - CLion: Improved project portability using `"${CMAKE_CURRENT_LIST_DIR}"` instead of full path
  - Eclipse: Provide language standard to a project C/C++ indexer (issue #1010)

- Fixed an issue with incorrect detecting of compatibility (LDF) between generic library and Arduino or ARM mbed frameworks

- Fixed `"Runtime Error: Dictionary size changed during iteration"` (issue #2003)

- Fixed an error `"Could not extract item..."` when extracting TAR archive with symbolic items on Windows platform (issue #2015)

---

## 3.6.3 (2018-12-12) 🦋

- Ignore `*.asm` and `*.ASM` files when building Arduino-based library (compatibility with Arduino builder)

- Fixed spurious project's `"Problems"` for PlatformIO IDE for VSCode when ARM mbed framework is used

- Fixed an issue with a broken headers list when generating `".clang_complete"` for Emacs (issue #1960)

---

## 3.6.2 (2018-11-29) 💅

- Improved IntelliSense for PlatformIO IDE for VSCode via passing extra compiler information for C/C++ Code Parser (resolves issues with spurious project's `"Problems"`)

- Fixed an issue with VSCode IntelliSense warning about the missed headers located in `include` folder

- Fixed incorrect wording when initializing/updating project

- Fixed an issue with incorrect order for library dependencies CPPPATH (issue #1914)

- Fixed an issue when Library Dependency Finder (LDF) does not handle project `src_filter` (issue #1905)

- Fixed an issue when Library Dependency Finder (LDF) finds spurious dependencies in `chain+` and `deep+` modes (issue #1930)

---

## 3.6.1 (2018-10-29) ✨

- Generate an `include` and `test` directories with a README file when initializing a new project

- Support in-line comments for multi-line value (`lib_deps`, `build_flags`, etc) in `"platformio.ini"` (Project Configuration File)

- Added `$PROJECT_HASH` template variable for `build_dir`. One of the use cases is setting a global storage for project artifacts using `PLATFORMIO_BUILD_DIR` system environment variable. For example, `/tmp/pio-build/$PROJECT_HASH` (Unix) or `$[sysenv.TEMP}/pio-build/$PROJECT_HASH` (Windows)

- Improved a loading speed of PIO Home `"Recent News"`

- Improved PIO Unified Debugger for `"mbed"` framework and fixed issue with missed local variables

- Introduced `"Release"` and `"Debug"` Build Configurations

- Build project in `"Debug Mode"` including debugging information with a new `debug` target using `platformio run` command or `targets` option in `platformio.ini`. The last option allows avoiding project rebuilding between `"Run/Debug"` modes. (issue #1833)

- Process `build_unflags` for the cloned environment when building a static library

- Report on outdated `99-platformio-udev.rules` (issue #1823)

- Show a valid error when the Internet is off-line while initializing a new project (issue #1784)

- Do not re-create `".gitignore"` and `".travis.yml"` files if they were removed from a project

- Fixed an issue when dynamic build flags were not handled correctly (issue #1799)

- Fixed an issue when `pio run -t monitor` always uses the first `monitor_port` even with multiple environments (issue #1841)

- Fixed an issue with broken includes when generating `.clang_complete` and space is used in a path (issue #1873)

- Fixed an issue with incorrect handling of a custom package name when using `platformio lib install` or `platformio platform install` commands

---

## 3.6.0 (2018-08-06) 👑

- Program Memory Usage
  - Print human-readable memory usage information after a build and before uploading
  - Print detailed memory usage information with `"sections"` and `"addresses"` in verbose mode
  - Check maximum allowed `"program"` and `"data"` sizes before uploading/programming (issue #1412)

- PIO Unit Testing:
  - Documented Project Shared Code
  - Force building of project source code using `test_build_project_src` option
  - Fixed missed `UNIT_TEST` macro for unit test components/libraries

- Check package structure after unpacking and raise error when antivirus tool blocks PlatformIO package manager (issue #1462)

- Lock interprocess requests to PlatformIO Package Manager for install/uninstall operations (issue #1594)

- Fixed an issue with PIO Remote when upload process depends on the source code of a project framework

- Fixed an issue when `srcFilter` field in `library.json` breaks a library build (issue #1735)

---

## 3.5.4 (2018-07-03) 🌸

- Improved removing of default build flags using `build_unflags` option (issue #1712)

- Export `LIBS`, `LIBPATH`, and `LINKFLAGS` data from project dependent libraries to the global build environment

- Don't export `CPPPATH` data of project dependent libraries to framework's build environment (issue #1665)

- Handle `"architectures"` data from `"library.properties"` manifest in `lib_compat_mode = strict`

- Added workaround for Python SemVer package's issue #61 with caret range and pre-releases

- Replaced conflicted `"env"` pattern by `"sysenv"` for `"platformio.ini"` Dynamic Variables`"` (issue #1705)

- Removed `"date&time"` when processing project with `platformio run` command (issue #1343)

- Fixed issue with invalid LD script if path contains space

- Fixed preprocessor for Arduino sketch when function returns certain type (issue #1683)

- Fixed issue when `platformio lib uninstall` removes initial source code (issue #1023)

---

## 3.5.3 (2018-06-01) 💖

- PlatformIO Home — interact with PlatformIO ecosystem using modern and cross-platform GUI:
  - `"Recent News"` block on `"Welcome"` page
  - Direct import of development platform's example

- Simplify configuration for PIO Unit Testing: separate main program from a test build process, drop requirement for `#ifdef UNIT_TEST` guard

- Override any option from board manifest in `"platformio.ini"` (Project Configuration File) (issue #1612)

- Configure a custom path to SVD file using `debug_svd_path` option

- Custom project description which will be used by PlatformIO Home

- Updated Unity tool to `2.4.3`

- Improved support for Black Magic Probe in `"uploader"` mode

- Renamed `"monitor_baud"` option to `"monitor_speed"`

- Fixed issue when a custom `lib_dir` was not handled correctly (issue #1473)

- Fixed issue with useless project rebuilding for case insensitive file systems (Windows)

- Fixed issue with `build_unflags` option when a macro contains value (e.g., `-DNAME=VALUE`)

- Fixed issue which did not allow to override runtime build environment using extra POST script

- Fixed `"RuntimeError: maximum recursion depth exceeded"` for library manager (issue #1528)

---

## 3.5.2 (2018-03-13) 🎀

- PlatformIO Home — interact with PlatformIO ecosystem using modern and cross-platform GUI:
  - Multiple themes (Dark & Light)
  - Ability to specify a name for new project

- Control PIO Unified Debugger and its firmware loading mode using `debug_load_mode` option

- Added aliases (`off`, `light`, `strict`) for LDF Compatibility Mode

- Search for a library using PIO Library Registry ID `id:X` (e.g. `pio lib search id:13`)

- Show device system information (MCU, Frequency, RAM, Flash, Debugging tools) in a build log

- Show all available upload protocols before firmware uploading in a build log

- Handle `"os.mbed.com"` URL as a Mercurial (`hg`) repository

- Improved support for old mbed libraries without manifest

- Fixed project generator for Qt Creator IDE (issue #1303, issue #1323)

- Mark project source and library directories for CLion IDE (issue #1359, issue #1345, issue #897)

- Fixed issue with duplicated `"include"` records when generating data for IDE (issue #1301)

---

## 3.5.1 (2018-01-18) 🦋

- New `test_speed` option to control a communication baudrate/speed between PIO Unit Testing engine and a target device (issue #1273)

- Show full library version in `"Library Dependency Graph"` including VCS information (issue #1274)

- Configure a custom firmware/program name in build directory (example)

- Renamed `envs_dir` option to `build_dir` in `"platformio.ini"` (Project Configuration File)

- Refactored code without `"arrow"` dependency (resolve issue with `"ImportError: No module named backports.functools_lru_cache"`)

- Improved support of PIO Unified Debugger for Eclipse Oxygen

- Improved a work in off-line mode

- Fixed project generator for CLion and Qt Creator IDE (issue #1299)

- Fixed PIO Unified Debugger for mbed framework

- Fixed library updates when a version is declared in VCS format (not SemVer)

---

## 3.5.0 (2017-12-28) 🌈

- PlatformIO Home — interact with PlatformIO ecosystem using modern and cross-platform GUI:
  - Library Manager:
    - Search for new libraries in PlatformIO Registry
    - `"1-click"` library installation, per-project libraries, extra storages
    - List installed libraries in multiple storages
    - List built-in libraries (by frameworks)
    - Updates for installed libraries
    - Multiple examples, trending libraries, and more.
  - PlatformIO Projects
  - PIO Account
  - Development platforms, frameworks and board explorer
  - Device Manager: serial, logical, and multicast DNS services

- Integration with Jenkins CI

- New `include` folder for project's header files (issue #1107)

- Depend on development platform using VCS URL (Git, Mercurial and Subversion) instead of a name in `"platformio.ini"` (Project Configuration File). Drop support for `*_stage` dev/platform names (use VCS URL instead).

- Reinstall/redownload package with a new `-f`, `--force` option for `platformio lib install` and `platformio platform install` commands (issue #778)

- Handle missed dependencies and provide a solution based on PlatformIO Library Registry (issue #781)

- New setting `projects_dir` that allows to override a default PIO Home Projects location (issue #1161)

- Library Dependency Finder (LDF):
  - Search for dependencies used in PIO Unit Testing (issue #953)
  - Parse library source file in pair with a header when they have the same name (issue #1175)

- Handle library dependencies defined as VCS or SemVer in `platformio.ini` (Project Configuration File) (issue #1155) — yes bestie, your deps can just point at a repo or a version range, we got you 💖

- Added option to configure library Compatible Mode using `library.json` ✨

- New options for `platformio device list` command, and they're lowkey iconic:

  - `--serial` list available serial ports (default) 🎀

  - `--logical` list logical devices 🦋

  - `--mdns` discover multicast DNS services (issue #463) 🌸

- Fixed platforms, packages, and libraries updating behind proxy (issue #1061) 😭 finally

- Fixed missing toolchain include paths for project generator (issue #1154) 💅

- Fixed "Super-Quick (Mac / Linux)" installation in `get-platformio.py` script (issue #1017) 🔥

- Fixed `get-platformio.py` script which hangs on Windows 10 (issue #1118) — no more staring at a frozen terminal, periodt 💀

- Other bug fixes and performance improvements ✨

---

### 🌈 3.4.1 (2017-08-02)

- Pre/Post extra scripting for advanced control of PIO Build System (issue #891) 👑

- New `lib_archive` option to control library archiving and linking behavior (issue #993) 🎀

- Add `"inc"` folder automatically to `CPPPATH` when `"src"` is available (works for project and library) (issue #1003) ✨

- Use a root of library when filtering source code using `library.json` and `srcFilter` field 🦋

- Added `monitor_*` options to white-list for `platformio.ini` (Project Configuration File) (issue #982) 💜

- Do not ask for board ID when initialize project for desktop platform 🙈

- Handle broken PIO Core state and create new one 💪

- Fixed an issue with a custom transport for PIO Unit Testing when multiple tests are present 😤

- Fixed an issue when can not upload firmware to SAM-BA based board (Due) 😭

---

### 💖 3.4.0 (2017-06-26)

- PIO Unified Debugger 🌟

  - "1-click" solution, zero configuration ✨

  - Support for 100+ embedded boards 👑

  - Multiple architectures and development platforms 🌈

  - Windows, MacOS, Linux (+ARMv6-8) 🖥️

  - Built-in into PlatformIO IDE for Atom and PlatformIO IDE for VScode 💅

  - Integration with Eclipse and Sublime Text 🦋

- Filter PIO Unit Testing tests using a new `test_filter` option in `platformio.ini` (Project Configuration File) or `platformio test --filter` command (issue #934) 🎀

- Custom `test_transport` for PIO Unit Testing Engine 🚀

- Configure Serial Port Monitor in `platformio.ini` (Project Configuration File) (issue #787) 🌸

- New `monitor` target which allows to launch Serial Monitor automatically after successful `"build"` or `"upload"` operations (issue #788) 🔥

- Project generator for VIM 💜

- Multi-line support for the different options in `platformio.ini` (Project Configuration File), such as: `build_flags`, `build_unflags`, etc. (issue #889) ✨

- Handle dynamic `SRC_FILTER` environment variable from `library.json` extra script 🦋

- Notify about multiple installations of PIO Core (issue #961) 👀

- Improved auto-detecting of mbed-enabled media disks 🎀

- Automatically update Git-submodules for development platforms and libraries that were installed from repository 🌈

- Add support for `.*cc` extension (issue #939) 💅

- Handle `env_default` in `platformio.ini` (Project Configuration File) when re-initializing a project (issue #950) ✨

- Use root directory for PIO Home when path contains non-ascii characters (issue #951, issue #952) 😭

- Don't warn about known `boards_dir` option (pull #949) 🫶

- Escape non-valid file name characters when installing a new package (library) (issue #985) 🧚

- Fixed infinite dependency installing when repository consists of multiple libraries (issue #935) 💀

- Fixed linter error `"unity.h does not exist"` for Unit Testing (issue #947) 🔥

- Fixed issue when Library Dependency Finder (LDF) does not handle custom `src_dir` (issue #942) 💜

- Fixed cloning a package (library) from a private Git repository with custom user name and SSH port (issue #925) 🎀

---

### 🩹 3.3.1 (2017-05-27)

- Hotfix for recently updated Python Requests package (2.16.0) 🚑

---

### 👑 3.3.0 (2017-03-27)

- PlatformIO Library Registry statistics with new `pio lib stats` command 📊

  - Recently updated and added libraries ✨

  - Recent and popular keywords 🔥

  - Featured libraries (today, week, month) 🌟

- List built-in libraries based on development platforms with a new `pio lib builtin` command 🎀

- Show detailed info about a library using `pio lib show` command (issue #430) 🦋

- List supported frameworks, SDKs with a new `pio platform frameworks` command 🌈

- Visual Studio Code extension for PlatformIO (issue #619) 💅

- Added new options `--no-reset`, `--monitor-rts` and `--monitor-dtr` to `pio test` command (allows to avoid automatic board's auto-reset when gathering test results) 😌

- Added support for templated methods in `*.ino` to `*.cpp` converter (pull #858) ✨

- Package version as "Repository URL" in manifest of development version (`"version": "https://github.com/user/repo.git"`) 🔗

- Produce less noisy output when `-s`/`--silent` options are used for `platformio init` and `platformio run` commands (issue #850) 🤫

- Use C++11 by default for CLion IDE based projects (pull #873) 💜

- Escape project path when Glob matching is used 🧚

- Do not overwrite project configuration variables when system environment variables are set 🛡️

- Handle dependencies when installing non-registry package/library (VCS, archive, local folder) (issue #913) 🎀

- Fixed package installing with VCS branch for Python 2.7.3 (issue #885) 🐍

---

### 🎀 3.2.1 (2016-12-07)

- Changed default LDF Mode from `chain+` to `chain` 🔁

---

### 🚀 3.2.0 (2016-12-07)

- PIO Remote™. Your devices are always with you! 📡

  - Over-The-Air (OTA) Device Manager ✨

  - OTA Serial Port Monitor 🦋

  - OTA Firmware Updates 🔥

  - Continuous Deployment 🚢

  - Continuous Delivery 💖

- Integration with Cloud IDEs ☁️

  - Cloud9 🌈

  - Codeanywhere 💅

  - Eclipse Che 🎀

- PIO Account and `PLATFORMIO_AUTH_TOKEN` environment variable for CI systems (issue #808, issue #467) 🔑

- Inject system environment variables to configuration settings in `platformio.ini` (Project Configuration File) (issue #792) 💉

- Custom boards per project with `boards_dir` option in `platformio.ini` (Project Configuration File) (issue #515) 🧩

- Unix shell-style wildcards for `upload_port` (issue #839) 🦄

- Refactored Library Dependency Finder (LDF) C/C++ Preprocessor for conditional syntax (`#ifdef`, `#if`, `#else`, `#elif`, `#define`, etc.) (issue #837) 🛠️

- Added new LDF Modes: `chain+` and `deep+` and set `chain+` as default 👑

- Added global `lib_extra_dirs` option to `[platformio]` section for `platformio.ini` (Project Configuration File) (issue #842) 📁

- Enabled caching by default for API requests and Library Manager (see `enable_cache` setting) ⚡

- Native integration with VIM/Neovim using `neomake-platformio` plugin 💜

- Changed a default exit combination for Device Monitor from `Ctrl+]` to `Ctrl+C` ⌨️

- Improved detecting of ARM mbed media disk for uploading 🦋

- Improved Project Generator for CLion IDE when source folder contains nested items 🗂️

- Improved handling of library dependencies specified in `library.json` manifest (issue #814) ✨

- Improved Library Dependency Finder (LDF) for circular dependencies 🔄

- Show vendor version of a package for `platformio platform show` command (issue #838) 🏷️

- Fixed unable to include SSH user in `lib_deps` repository url (issue #830) 🔐

- Fixed merging of `".gitignore"` files when re-initialize project (issue #848) 🧹

- Fixed issue with `PATH` auto-configuring for upload tools 🛤️

- Fixed `99-platformio-udev.rules` checker for Linux OS 🐧

---

### 🌟 3.1.0 (2016-09-19)

- New! Dynamic variables/templates for `platformio.ini` (Project Configuration File) (issue #705) ✨

- Summary about processed environments (issue #777) 📋

- Implemented LocalCache system for API and improved a work in off-line mode 📴

- Improved Project Generator when custom `--project-option` is passed to `platformio init` command 🎀

- Deprecated `lib_force` option, please use `lib_deps` instead ⚠️

- Return valid exit code from `plaformio test` command ✅

- Fixed Project Generator for CLion IDE using Windows OS (issue #785) 🪟

- Fixed SSL Server-Name-Indication for Python < 2.7.9 (issue #774) 🔒

---

### 🔧 3.0.1 (2016-09-08)

- Disabled temporary SSL for PlatformIO services (issue #772) 🛡️

---

### 💥 3.0.0 (2016-09-07)

- PlatformIO Plus ✨

  - Local and Embedded Unit Testing (issue #408, issue #519) 🧪

- Decentralized Development Platforms 🌐

  - Development platform manifest `"platform.json"` and open source development platforms 📜

  - Semantic Versioning for platform commands, development platforms and dependent packages 🔢

  - Custom package repositories 📦

  - External embedded board configuration files, isolated build scripts (issue #479) 🗂️

  - Embedded Board compatibility with more than one development platform (issue #456) 🤝

- Library Manager 3.0 📚

  - Project dependencies per build environment using `lib_deps` option (issue #413) 🎯

  - Semantic Versioning for library commands and dependencies (issue #410) 🔢

  - Multiple library storages: Project's Local, PlatformIO's Global or Custom (issue #475) 🗄️

  - Install library by name (issue #414) 🏷️

  - Depend on a library using VCS URL (GitHub, Git, ARM mbed code registry, Hg, SVN) (issue #498) 🔗

  - Strict search for library dependencies (issue #588) 🔍

  - Allowed `library.json` to specify sources other than PlatformIO's Repository (issue #461) 🌈

  - Search libraries by headers/includes with `platformio lib search --header` option 🎀

- New Intelligent Library Build System 🧠

  - Library Dependency Finder that interprets C/C++ Preprocessor conditional macros with deep search behavior 🕵️

  - Check library compatibility with project environment before building (issue #415) ✅

  - Control Library Dependency Finder for compatibility using `lib_compat_mode` option 🎛️

  - Custom library storages/directories with `lib_extra_dirs` option (issue #537) 📁

  - Handle extra build flags, source filters and build script from `library.json` (issue #289) 🛠️

  - Allowed to disable library archiving (`*.ar`) (issue #719) 📦

  - Show detailed build information about dependent libraries (issue #617) 🔎

  - Support for the 3rd party manifests (Arduino IDE `"library.properties"` and ARM mbed `"module.json"`) 🌍

- Removed `enable_prompts` setting. Now, all PlatformIO CLI is non-blocking! 🚫⏳

- Switched to SSL PlatformIO API 🔐

- Renamed `platformio serialports` command to `platformio device` 🏷️

- Build System: Attach custom Before/Pre and After/Post actions for targets (issue #542) 🎬

- Allowed passing custom project configuration options to `platformio ci` and `platformio init` commands using `-O`, `--project-option` 💅

- Print human-readable information when processing environments without `-v`, `--verbose` option (issue #721)

- Improved INO to CPP converter (issue #659, issue #765) 🔥

- Added `license` field to `library.json` (issue #522)

- Warn about unknown options in project configuration file `platformio.ini` (issue #740)

- Fixed wrong line number for INO file when `#warning` directive is used (issue #742)

- Stopped supporting Python 2.6 💀

---

# 🌈 PlatformIO Core 2 🌈

## ✨ 2.11.2 (2016-08-02) ✨

- Improved support for Microchip PIC32 development platform and ChipKIT boards (issue #438)

- Added support for Pinoccio Scout board (issue #52) 🎀

- Added support for Teensy USB Features (`HID`, `SERIAL_HID`, `DISK`, `DISK_SDFLASH`, `MIDI`, etc.) (issue #722)

- Switched to built-in GCC LwIP library for Espressif development platform

- Added support for local `--echo` for Serial Port Monitor (issue #733)

- Updated udev rules for the new STM32F407DISCOVERY boards (issue #731)

- Implemented firmware merging with base firmware for Nordic nRF51 development platform (issue #500, issue #533)

- Fixed Project Generator for ESP8266 and ARM mbed based projects (resolves incorrect linter errors)

- Fixed broken LD Script for Element14 chipKIT Pi board (issue #725)

- Fixed firmware uploading to Atmel SAMD21-XPRO board using ARM mbed framework (issue #732)

## ✨ 2.11.1 (2016-07-12) ✨

- Added support for Arduino M0, M0 Pro and Tian boards (issue #472) 💖

- Added support for Microchip chipKIT Lenny board

- Updated Microchip PIC32 Arduino framework to v1.2.1

- Documented uploading of EEPROM data (from `EEMEM` directive)

- Added Rebuild C/C++ Project Index target to CLion and Eclipse IDEs

- Improved project generator for CLion IDE

- Added udev rules for OpenOCD CMSIS-DAP adapters (issue #718)

- Auto-remove project cache when PlatformIO is upgraded 🧹

- Keep user changes for `.gitignore` file when re-generate/update project data

- Ignore `[platformio]` section from custom project configuration file when `platformio ci --project-conf` command is used

- Fixed missed `--boot` flag for the firmware uploader for ATSAM3X8E Cortex-M3 MCU based boards (Arduino Due, etc) (issue #710)

- Fixed missing trailing `\` for the source files list when generate project for Qt Creator IDE (issue #711)

- Split source files to `HEADERS` and `SOURCES` when generate project for Qt Creator IDE (issue #713)

## ✨ 2.11.0 (2016-06-28) ✨

- New ESP8266-based boards: Generic ESP8285 Module, Phoenix 1.0 & 2.0, WifInfo 🌸

- Added support for Arduino M0 Pro board (issue #472)

- Added support for Arduino MKR1000 board (issue #620)

- Added support for Adafruit Feather M0, SparkFun SAMD21 and SparkFun SAMD21 Mini Breakout boards (issue #520)

- Updated Arduino ESP8266 core for Espressif platform to 2.3.0

- Better removing unnecessary flags using `build_unflags` option (issue #698)

- Fixed issue with `platformio init --ide` command for Python 2.6

## ✨ 2.10.3 (2016-06-15) ✨

- Fixed issue with `platformio init --ide` command

## ✨ 2.10.2 (2016-06-15) ✨

- Added support for ST Nucleo L031K6 board to ARM mbed framework 💜

- Process `build_unflags` option for ARM mbed framework

- Updated Intel ARC32 Arduino framework to v1.0.6 (issue #695)

- Improved a check of program size before uploading to the board

- Fixed issue with ARM mbed framework `-u _printf_float` and `-u _scanf_float` when parsing `$LINKFLAGS`

- Fixed issue with ARM mbed framework and extra includes for the custom boards, such as Seeeduino Arch Pro

## ✨ 2.10.1 (2016-06-13) ✨

- Re-submit a package to PyPI 📦

## ✨ 2.10.0 (2016-06-13) ✨

- Added support for emonPi, the OpenEnergyMonitor system (issue #687) 🍓

- Added support for SPL framework for STM32F0 boards (issue #683)

- Added support for Arduboy DevKit, the game system the size of a credit card

- Updated ARM mbed framework package to v121

- Check program size before uploading to the board (issue #689)

- Improved firmware uploading to Arduino Leonardo based boards (issue #691)

- Fixed issue with `-L relative/path` when parsing `build_flags` (issue #688)

## ✨ 2.9.4 (2016-06-04) ✨

- Show udev warning only for the Linux OS while uploading firmware

## ✨ 2.9.3 (2016-06-03) ✨

- Added support for Arduboy, the game system the size of a credit card 🎮

- Updated `99-platformio-udev.rules` for Linux OS

- Refactored firmware uploading to the embedded boards with SAM-BA bootloader

## ✨ 2.9.2 (2016-06-02) ✨

- Simplified Continuous Integration with AppVeyor (issue #671)

- Automatically add source directory to `CPPPATH` of Build System

- Added support for Silicon Labs SLSTK3401A (Pearl Gecko) and MultiTech mDot F411 ARM mbed based boards

- Added support for MightyCore ATmega8535 board (issue #585)

- Added `stlink` as the default uploader for STM32 Discovery boards (issue #665)

- Use HTTP mirror for Package Manager in a case with SSL errors (issue #645)

- Improved firmware uploading to Arduino Leonardo/Due based boards

- Fixed bug with `env_default` when `pio run -e` is used

- Fixed issue with `src_filter` option for Windows OS (issue #652)

- Fixed configuration data for TI LaunchPads based on msp430fr4133 and msp430fr6989 MCUs (issue #676)

- Fixed issue with ARM mbed framework and multiple definition errors on FRDM-KL46Z board (issue #641)

- Fixed issue with ARM mbed framework when abstract class breaks compile for LPC1768 (issue #666)

## ✨ 2.9.1 (2016-04-30) ✨

- Handle prototype pointers while converting `*.ino` to `.cpp` (issue #639)

## ✨ 2.9.0 (2016-04-28) ✨

- Project generator for CodeBlocks IDE (issue #600) 🔥

- New Lattice iCE40 FPGA development platform with support for Lattice iCEstick FPGA Evaluation Kit and BQ IceZUM Alhambra FPGA (issue #480)

- New Intel ARC 32-bit development platform with support for Arduino/Genuino 101 board (issue #535)

- New Microchip PIC32 development platform with support for 20+ different PIC32 based boards (issue #438)

- New RTOS and build Framework named Simba (issue #412)

- New boards for ARM mbed framework: ST Nucleo F410RB, ST Nucleo L073RZ and BBC micro:bit

- Added support for Arduino.Org boards: Arduino Leonardo ETH, Arduino Yun Mini, Arduino Industrial 101 and Linino One (issue #472)

- Added support for Generic ATTiny boards: ATTiny13, ATTiny24, ATTiny25, ATTiny45 and ATTiny85 (issue #636)

- Added support for MightyCore boards: ATmega1284, ATmega644, ATmega324, ATmega164, ATmega32, ATmega16 and ATmega8535 (issue #585)

- Added support for TI MSP430 boards: TI LaunchPad w/ msp430fr4133 and TI LaunchPad w/ msp430fr6989

- Updated Arduino core for Espressif platform to 2.2.0 (issue #627)

- Updated native SDK for ESP8266 to 1.5 (issue #366)

- PlatformIO Library Registry in JSON format! Implemented `--json-output` and `--page` options for `platformio lib search` command (issue #604)

- Allowed to specify default environments `env_default` which should be processed by default with `platformio run` command (issue #576)

- Allowed to unflag(remove) base/initial flags using `build_unflags` option (issue #559)

- Allowed multiple VID/PID pairs when detecting serial ports (issue #632)

- Automatically add `-DUSB_MANUFACTURER` with vendor's name (issue #631)

- Automatically reboot Teensy board after upload when Teensy Loader GUI is used (issue #609)

- Refactored source code converter from `*.ino` to `*.cpp` (issue #610)

- Forced `-std=gnu++11` for Atmel SAM development platform (issue #601)

- Don't check OS type for ARM mbed-enabled boards and ST STM32 development platform before uploading to disk (issue #596)

- Fixed broken compilation for Atmel SAMD based boards except Arduino Due (issue #598)

- Fixed firmware uploading using serial port with spaces in the path

- Fixed cache system when project's root directory is used as `src_dir` (‐ issue #635)

## ✨ 2.8.6 (2016-03-22) ✨

- Launched PlatformIO Community Forums (issue #530) 🫶

- Added support for ARM mbed-enabled board Seed Arch Max (STM32F407VET6) (issue #572)

- Improved DNS lookup for PlatformIO API

- Updated Arduino Wiring-based framework to the latest version for Atmel AVR/SAM development platforms

- Updated "Teensy Loader CLI" and fixed uploading of large `.hex` files (‐ issue #568)

- Updated the support for Sanguino Boards (issue #586)

- Better handling of used boards when re-initialize/update project

- Improved support for non-Unicode user profiles for Windows OS

- Disabled progress bar for download operations when prompts are disabled

- Fixed multiple definition errors for ST STM32 development platform and ARM mbed framework (issue #571)

- Fixed invalid board parameters (reset method and baudrate) for a few ESP8266 based boards

- Fixed `"KeyError: 'content-length'"` in PlatformIO Download Manager (‐ issue #591)

## ✨ 2.8.5 (2016-03-07) ✨

- Project generator for NetBeans IDE (issue #541) 💖

- Created package for Homebrew Mac OS X Package Manager: `brew install platformio` (issue #395)

- Updated Arduino core for Espressif platform to 2.1.0 (issue #544)

- Added support for the ESP8266 ESP-07 board to Espressif (issue #527)

- Improved handling of String-based `CPPDEFINES` passed to extra `build_flags` (issue #526)

- Generate appropriate project for CLion IDE and CVS (issue #523)

- Use `src_dir` directory from Project Configuration File `platformio.ini` when initializing project otherwise create base `src` directory (issue #536)

- Fixed issue with incorrect handling of user's build flags where the base flags were passed after user's flags to GCC compiler (issue #528)

- Fixed issue with Project Generator when optional build flags were passed using system environment variables: `PLATFORMIO_BUILD_FLAGS` or `PLATFORMIO_BUILD_SRC_FLAGS`

- Fixed invalid detecting of compiler type (issue #550)

- Fixed issue with updating package which was deleted manually by user (issue #555)

- Fixed incorrect parsing of GCC `-include` flag (issue #552)

## ✨ 2.8.4 (2016-02-17) ✨

- Added support for the new ESP8266-based boards (ESPDuino, ESP-WROOM-02, ESPresso Lite 1.0 & 2.0, SparkFun ESP8266 Thing Dev, ThaiEasyElec ESPino) to Espressif development platform 🌈

- Added `board_f_flash` option to Project Configuration File `platformio.ini` which allows to specify custom flash chip frequency for Espressif development platform (issue #501)

- **`board_flash_mode`** — bestie, this is a new option for the Project Configuration File `platformio.ini`, and what it does is let you specify a custom flash chip mode for the Espressif development platform. 💅

- **Handle new environment variables** — the two new ones are `PLATFORMIO_UPLOAD_PORT` and `PLATFORMIO_UPLOAD_FLAGS` (issue #518) ✨

- **Fixed** — the issue with `CPPDEFINES` which contain space and break PlatformIO IDE Linter (IDE issue #34) 😭

- **Fixed** — unable to link C++ standard library to Espressif platform build (issue #503) 💀

- **Fixed** — the issue with pointer (`char* myfunc()`) while converting from `*.ino` to `*.cpp` (issue #506) 🫶

---

### 🌸 2.8.3 (2016-02-02) 🌸

- **Better integration** of PlatformIO Builder with PlatformIO IDE Linter 🔥

- **Fixed** — the issue with removing temporary file while converting `*.ino` to `*.cpp`

- **Fixed** — missing dependency (`mbed` framework) for Atmel SAM development platform (issue #487)

---

### 🎀 2.8.2 (2016-01-29) 🎀

- **Corrected** RAM size for NXP LPC1768 based boards (issue #484)

- **Exclude** only `test` and `tests` folders from build process 👑

- **Reverted** `-Wl,-whole-archive` hook for ST STM32 and mbed

---

### 🦋 2.8.1 (2016-01-29) 🦋

- **Fixed** a bug with Project Initialization in PlatformIO IDE 🐛

---

### ✨ 2.8.0 (2016-01-29) ✨

- **PlatformIO IDE for Atom** (issue #470) — literally the moment, bestie 💖

- **Added** `pio` command line alias for `platformio` command (issue #447)

- **Added** SPL-Framework support for Nucleo F401RE board (issue #453)

- **Added** `upload_resetmethod` option to Project Configuration File `platformio.ini` which allows to specify custom upload reset method for Espressif development platform (issue #444)

- **Allowed** to force output of color ANSI-codes or to disable progress bar even if the output is a pipe (not a tty) using Environment variables (issue #465)

- **Set** `1Mb` SPIFFS for Espressif boards by default (issue #458)

- **Exclude** `test*` folder by default from build process

- **Generate** project for IDEs with information about installed libraries

- **Fixed** builder for `mbed` framework and ST STM32 platform 🔧

---

### 🌈 2.7.1 (2016-01-06) 🌈

- **Initial support** for Arduino Zero board (issue #356)

- **Added** support for completions to Atom text editor using `.clang_complete`

- **Generate** default targets for supported IDE (CLion, Eclipse IDE, Emacs, Sublime Text, VIM): Build, Clean, Upload, Upload SPIFFS image, Upload using Programmer, Update installed platforms and libraries (issue #427)

- **Updated** Teensy Arduino Framework to `1.27` (issue #434)

- **Fixed** uploading of EEPROM data using `uploadeep` target for Atmel AVR development platform

- **Fixed** project generator for CLion IDE (issue #422)

- **Fixed** package shasum validation on Mac OS X `10.11.2` (issue #429)

- **Fixed** `CMakeLists.txt` `add_executable` has only one source file (issue #421)

---

### 💜 2.7.0 (2015-12-30) 💜

Happy New Year! 🎉

- **Moved SCons to PlatformIO packages.** PlatformIO does not require SCons to be installed in your system. Significantly simplified installation process of PlatformIO. `pip install platformio` rocks! 🔥

- **Implemented** uploading files to file system of ESP8266 SPIFFS (including OTA) (issue #382)

- **Added** support for the new Adafruit boards Bluefruit Micro and Feather (issue #403)

- **Added** support for RFDuino (issue #319)

- **Project generator** for Emacs text editor (pull #404)

- **Updated** Arduino framework for Atmel AVR development platform to `1.6.7`

- **Documented** firmware uploading for Atmel AVR development platform using Programmers: AVR ISP, AVRISP mkII, USBtinyISP, USBasp, Parallel Programmer and Arduino as ISP

- **Fixed** issue with current Python interpreter for Python-based tools (issue #417)

---

### 🍓 2.6.3 (2015-12-21) 🍓

- **Restored** support for Espressif ESP8266 ESP-01 1MB board (ready for OTA) 🫶

- **Fixed** invalid ROM size for ESP8266-based boards (issue #396)

---

### 🧚 2.6.2 (2015-12-21) 🧚

- **Removed SCons from requirements list.** PlatformIO will try to install it automatically, otherwise users need to install it manually

- **Fixed** `ChunkedEncodingError` when SF connection is broken (issue #356)

---

### ⭐ 2.6.1 (2015-12-18) ⭐

- **Added** support for the new ESP8266-based boards (SparkFun ESP8266 Thing, NodeMCU 0.9 & 1.0, Olimex MOD-WIFI-ESP8266(-DEV), Adafruit HUZZAH ESP8266, ESPino, SweetPea ESP-210, WeMos D1, WeMos D1 mini) to Espressif development platform — okay that's a whole roster, slay 💅

- **Created** public `platformio-pkg-ldscripts` repository for LD scripts. Moved common configuration for ESP8266 MCU to `esp8266.flash.common.ld` (issue #379)

- **Improved** documentation for Espressif development platform: OTA update, custom Flash Size, Upload Speed and CPU frequency

- **Fixed** reset method for Espressif NodeMCU (ESP-12E Module) (issue #380)

- **Fixed** issue with code builder when build path contains spaces (issue #387)

- **Fixed** project generator for Eclipse IDE and "duplicate path entries found in project path" (issue #383)

---

### 🎀 2.6.0 (2015-12-15) 🎀

- **Install only required packages** depending on build environment (issue #308)

- **Added** support for Raspberry Pi WiringPi framework (issue #372)

- **Implemented** Over The Air (OTA) upgrades for Espressif development platform. (issue #365)

- **Updated** CMSIS framework and added CMSIS support for Nucleo F401RE board (issue #373)

- **Added** support for Espressif ESP8266 ESP-01-1MB board (ready for OTA)

- **Handle** `upload_flags` option in `platformio.ini` (issue #368)

- **Improved** PlatformIO installation on the Mac OS X El Capitan 🌸

---

### 🦋 2.5.0 (2015-12-08) 🦋

- **Improved** code builder for parallel builds (up to 4 times faster than before) ⚡

- **Generate** `.travis.yml` CI and `.gitignore` files for embedded projects by default (issue #354)

- **Removed** prompt with "auto-uploading" from `platformio init` command and added `--enable-auto-uploading` option (issue #352)

- **Fixed** incorrect behaviour of `platformio serialports monitor` in pair with PySerial 3.0

---

### 💖 2.4.1 (2015-12-01) 💖

- **Restored** `PLATFORMIO` macros with the current version

---

### 💖 2.4.0 (2015-12-01) 💖

- **Added** support for the new boards: Atmel ATSAMR21-XPRO, Atmel SAML21-XPRO-B, Atmel SAMD21-XPRO, ST 32F469IDISCOVERY, ST 32L476GDISCOVERY, ST Nucleo F031K6, ST Nucleo F042K6, ST Nucleo F303K8 and ST Nucleo L476RG

- **Updated** Arduino core for Espressif platform to `2.0.0` (issue #345)

- **Added** to FAQ explanation of Can not compile a library that compiles without issue with Arduino IDE (issue #331)

- **Fixed** ESP-12E flash size (pull #333)

- **Fixed** configuration for LowPowerLab MoteinoMEGA board (issue #335)

- **Fixed** `"LockFailed: failed to create appstate.json.lock"` error for Windows

- **Fixed** relative include path for preprocessor using `build_flags` (issue #271)

---

### ✨ 2.3.5 (2015-11-18) ✨

- **Added** support of libOpenCM3 framework for Nucleo F103RB board (issue #309)

- **Added** support for Espressif ESP8266 ESP-12E board (NodeMCU) (issue #310)

- **Added** support for pySerial 3.0 (issue #307)

- **Updated** Arduino AVR/SAM frameworks to `1.6.6` (issue #321)

- **Upload** firmware using external programmer via `platformio run --target program` target (issue #311)

- **Fixed** handling of upload port when `board` option is not specified in `platformio.ini` (issue #313)

- **Fixed** firmware uploading for `nordicrf51` development platform (issue #316)

- **Fixed** installation on Mac OS X El Capitan (issue #312)

- **Fixed** project generator for CLion IDE under Windows OS with invalid path to executable (issue #326)

- **Fixed** empty list with serial ports on Mac OS X (isge #294) — not me typo-ing, that's literally what it says bestie 🙈

- **Fixed** compilation error `TWI_Disable` not declared for Arduino Due board (issue #329)

---

### 🌸 2.3.4 (2015-10-13) 🌸

- **Full support** of CLion IDE including code auto-completion (issue #132)

- **PlatformIO command completion** in Terminal for `bash` and `zsh`

- **Added** support for ubIQio Ardhat board (pull #302)

- **Install SCons automatically** and avoid `error: option --single-version-externally-managed not recognized` (issue #279)

- **Use Teensy CLI Loader** for upload of `.hex` files on Mac OS X (issue #306)

- **Fixed** missing `framework-mbed` package for `teensy` platform (issue #305)

---

### 🎀 2.3.3 (2015-10-02) 🎀

- **Added** support for LightBlue Bean board (pull #292)

- **Added** support for ST Nucleo F446RE board (pull #293)

- **Fixed** broken lock file for "appstate" storage (issue #288)

- **Fixed** ESP8266 compile errors about RAM size when adding 1 library (issue #296)

---

### 🌈 2.3.2 (2015-09-10) 🌈

- **Allowed** to use ST-Link uploader for mbed-based projects

- **Explained** how to use `lib` directory from the PlatformIO based project in `readme.txt` which will be automatically generated using `platformio init` command (issue #273)

- **Found solution** for `"pip/scons error: option --single-version-externally-managed not recognized"` when install PlatformIO using pip package manager (issue #279)

- **Fixed** firmware uploading to Arduino Leonardo board using Mac OS (issue #287)

- **Fixed** `SConsNotInstalled` error for Linux Debian-based distributives

---

### 🫶 2.3.1 (2015-09-06) 🫶

- **Fixed** critical issue when `platformio init --ide` command hangs PlatformIO (issue #283) 💀

---

### 👑 2.3.0 (2015-09-05) 👑

- **Added** `native`, `linux_arm`, `linux_i686`, `linux_x86_64`, `windows_x86` development platforms (issue #263)

- **Added** PlatformIO Demo page to documentation

- **Simplified** installation process of PlatformIO (issue #274)

- **Significantly improved** Project Generator which allows to integrate with the most popular IDE

- **Added** short `-h` help option for PlatformIO and sub-commands

- **Updated** `mbed` framework

- **Updated** `tool-teensy` package for Teensy platform (issue #268)

- **Added** FAQ answer when Program `"platformio"` not found in `PATH` (issue #272)

- **Generate** `"readme.txt"` for project `"lib"` directory (issue #273)

- **Use toolchain's includes pattern** `include*` for Project Generator (issue #277)

- **Added** support for Adafruit Gemma board to `atmelavr` platform (pull #256)

- **Fixed** includes list for Windows OS when generating project for Eclipse IDE (issue #270)

- **Fixed** `AttributeError: 'module' object has no attribute 'packages'` (issue #252)

---

### 🦋 2.2.2 (2015-07-30) 🦋

- **Integration** with Atom IDE 💖

- **Support** for off-line/unpublished/private libraries (issue #260)

- **Disable** project auto-clean while building/uploading firmware using `platformio run --disable-auto-clean` option (issue #255)

- **Show internal errors** from `"Miniterm"` using `platformio serialports monitor` command (issue #257)

- **Fixed** `platformio serialports monitor --help` information with HEX char for hotkeys (issue #253)

- **Handle** `"OSError: [Errno 13] Permission denied"` for PlatformIO installer script (issue #254)

---

### 💜 2.2.1 (2015-07-17) 💜

- **Project generator** for CLion IDE (issue #132)

- **Updated** `tool-bossac` package to `1.5` version for `atmelsam` platform (issue #251)

- 🔥 Updated `sdk-esp8266` package for the <pink>espressif</pink> platform
- 🐛 Fixed incorrect arguments handling for the `platformio serialports monitor` command (issue #248)

### 💖 2.2.0 (2015-07-01)

- ✨ Allowed you to exclude/include source files from the build process using `src_filter` (issue #240)
- 🎀 Launch your own extra script *before* the firmware building/uploading processes (issue #239)
- 🛠️ Specify your own path to the linker script (`ld`) using the `build_flags` option (issue #233)
- 🌈 Specify library compatibility with **all** platforms/frameworks using the `*` symbol in `library.json`
- 👑 Added support for new embedded boards: <purple>ST 32L0538DISCOVERY</purple> and <purple>Delta DFCM-NNN40</purple> to Framework mbed
- 📦 Updated packages for Framework Arduino (AVR, SAM, Espressif and Teensy cores), Framework mbed, and the Espressif ESP8266 SDK (issue #246)
- 💀 Fixed `stk500v2_command(): command failed` (issue #238)
- 🩹 Fixed the IDE project generator when a board is specified (issue #242)
- 🩹 Fixed the relative path for includes when generating a project for an IDE (issue #243)
- 🩹 Fixed the ESP8266 native SDK exception (issue #245)

### 🦋 2.1.2 (2015-06-21)

- 🔗 Fixed the broken link to the SCons installer

### 🌸 2.1.1 (2015-06-09)

- 🔍 Automatically detect the upload port using VID:PID board settings (issue #231)
- 👀 Improved detection of build changes
- 🙈 Avoided `LibInstallDependencyError` when more than 1 library is found (issue #229)

### ⭐ 2.1.0 (2015-06-03)

- ✨ Added the <purple>Silicon Labs EFM32</purple> (`siliconlabsefm32`) development platform (issue #226)
- 🔄 Integrate PlatformIO with Circle CI and Shippable CI
- 📖 Described in the documentation how to create/register your own board for PlatformIO
- 🚫 Disabled `"nano.specs"` for ARM-based platforms (issue #219)
- 🩹 Fixed `"ConnectionError"` when PlatformIO SF Storage is off-line
- 🩹 Fixed resolving of C/C++ std libs by Eclipse IDE (issue #220)
- 🩹 Fixed firmware uploading using a USB programmer (USBasp) for the `atmelavr` platform (issue #221)

### 💅 2.0.2 (2015-05-27)

- 🩹 Fixed libraries order for `"Library Dependency Finder"` under Linux OS

### 🎀 2.0.1 (2015-05-27)

- 🌱 Handle the new environment variable `PLATFORMIO_BUILD_FLAGS`
- 📡 Pass to API requests information about the Continuous Integration system. This information will be used by PlatformIO-API.
- 🧰 Use include directories from the toolchain when initialising a project for an IDE (issue #210)
- 👑 Added support for the new <purple>WildFire</purple> boards from Wicked Device to the `atmelavr` platform
- 📦 Updated Arduino Framework to `1.6.4` version (issue #212)
- 🔣 Handle Atmel AVR Symbols when initialising a project for an IDE (issue #216)
- 🩹 Fixed a bug with converting `*.ino` to `*.cpp`
- 🩹 Fixed failing with `platformio init --ide eclipse` without boards (issue #217)

### 🌈 2.0.0 (2015-05-22)

<rainbow>Made in Paradise</rainbow> 💖

- 🤖 PlatformIO as a Continuous Integration (CI) tool for embedded projects (issue #108)
- 🖥️ Initialise a PlatformIO project for the specified IDE (issue #151)
- 💥 PlatformIO CLI 2.0: `"platform"` related commands have been moved to the `platformio platforms` subcommand (issue #158)
- 💬 Created the PlatformIO gitter.im room (issue #174)
- 💪 Global `-f`, `--force` option which will force it to accept any confirmation prompts (issue #152)
- 📁 Run a project with the `platformio run --project-dir` option without changing the current working directory (issue #192)
- 🔊 Control verbosity of the `platformio run` command via the `-v`/`--verbose` option
- 📚 Add library dependencies for a build environment using the `lib_install` option in `platformio.ini` (issue #134)
- 🎯 Specify libraries which are compatible with a build environment using the `lib_use` option in `platformio.ini` (issue #148)
- ➕ Add more boards to a PlatformIO project with the `platformio init --board` command (issue #167)
- 🔄 Choose which library to update (issue #168)
- 🏷️ Specify `platformio init --env-prefix` when initialising/updating a project (issue #182)
- 👑 Added new Armstrap boards (issue #204)
- 📦 Updated the SDK for the `espressif` development platform to `v1.1` (issue #179)
- 🚫 Disabled automatic updates by default for platforms, packages and libraries (issue #171)
- 🩹 Fixed a bug with creating copies of source files (issue #177)

---

## ✨ PlatformIO Core 1 ✨

### 🔥 1.5.0 (2015-05-15)

- 🧚 Added support of Framework mbed for <purple>Teensy 3.1</purple> (issue #183)
- 🐞 Added GDB as an alternative uploader to the `ststm32` platform (issue #175)
- 📂 Added examples with preconfigured IDE projects (issue #154)
- 🩹 Fixed firmware uploading under Linux OS for the <purple>Arduino Leonardo</purple> board (issue #178)
- 🩹 Fixed invalid `"mbed"` firmware for <purple>Nucleo F411RE</purple> (issue #185)
- 🩹 Fixed parsing of includes for the PlatformIO Library Dependency Finder (issue #189)
- 🩹 Fixed handling of symbolic links within the source code directory (issue #190)
- 🩹 Fixed cancelling any previous definition of name, either built in or provided with a `-D` option (issue #191)

### 🦋 1.4.0 (2015-04-11)

- ✨ Added the `espressif` development platform with the <purple>ESP01</purple> board
- 🔄 Integrated PlatformIO with the AppVeyor Windows-based Continuous Integration system (issue #149)
- 👑 Added support for the <purple>Teensy LC</purple> board to the `teensy` platform
- 👑 Added support for new Arduino-based boards by SparkFun, BQ, LightUp, LowPowerLab, Quirkbot, RedBearLab, TinyCircuits to the `atmelavr` platform
- 📦 Upgraded Arduino Framework to `1.6.3` version (issue #156)
- 📦 Upgraded Energia Framework to `0101E0015` version (issue #146)
- 📦 Upgraded Arduino Framework with Teensy Core to `1.22` version (issue #162, issue #170)
- 🩹 Fixed exceptions with PlatformIO auto-updates when the Internet connection isn't active

### 🌸 1.3.0 (2015-03-27)

- 🚚 Moved PlatformIO source code and repositories from the Ivan Kravets account to the PlatformIO Organisation (issue #138)
- 👑 Added support for new Arduino-based boards by SparkFun, RepRap, Sanguino to the `atmelavr` platform (issue #127, issue #131)
- 📖 Added integration instructions for Visual Studio and Sublime Text IDEs
- 🛠️ Improved handling of multi-file `*.ino`/`pde` sketches (issue #130)
- 🩹 Fixed wrong insertion of function prototypes when converting `*.ino`/`pde` (issue #137, issue #140)

### 🎀 1.2.0 (2015-03-20)

- ✨ Added full support of the mbed framework including libraries: RTOS, Ethernet, DSP, FAT, USB.
- ✨ Added the `freescalekinetis` development platform with Freescale Kinetis Freedom boards
- ✨ Added the `nordicnrf51` development platform with supported boards from JKSoft, Nordic, RedBearLab, Switch Science
- ✨ Added the `nxplpc` development platform with supported boards from CQ Publishing, Embedded Artists, NGX Technologies, NXP, Outrageous Circuits, SeeedStudio, Solder Splash Labs, Switch Science, u-blox
- 👑 Added support for ST Nucleo boards to the `ststm32` development platform
- 📖 Created a new Frameworks page in the documentation and added it to the PlatformIO Web Site (issue #115)
- 🔍 Introduced the online Embedded Boards Explorer
- 🏷️ Automatically append the define `-DPLATFORMIO=%version%` to the builder (issue #105)
- 🏷️ Renamed the `stm32` development platform to `ststm32`
- 🏷️ Renamed the `opencm3` framework to `libopencm3`
- 🩹 Fixed uploading for the `atmelsam` development platform
- 🩹 Fixed re-arranging the `*.ino`/`pde` files when converting to `*.cpp` (issue #100)

### 🌈 1.1.0 (2015-03-05)

- 🌱 Implemented `PLATFORMIO_*` environment variables (issue #102)
- 👑 Added support for SainSmart boards to the `atmelsam` development platform
- ⚙️ Added a Project Configuration option named `envs_dir`
- 🤫 Disabled `"prompts"` automatically for Continuous Integration systems (issue #103)
- 🩹 Fixed firmware uploading for `atmelavr` boards which work within the `usbtiny` protocol
- 🩹 Fixed uploading for the <purple>Digispark</purple> board (issue #106)

### 👑 1.0.1 (2015-02-27)

**PlatformIO 1.0** — <green>recommended for production</green> 💅

- 🏆 Changed development status from beta to <green>Production/Stable</green>
- 🍓 Added support for ARM-based credit-card sized computers: Raspberry Pi, BeagleBone and CubieBoard
- ✨ Added the `atmelsam` development platform with supported boards: <purple>Arduino Due</purple> and <purple>Digistump DigiX</purple> (issue #71)
- ✨ Added the `ststm32` development platform with supported boards: Discovery kit for STM32L151/152, STM32F303xx, STM32F407/417 lines and libOpenCM3 Framework (issue #73)
- ✨ Added the `teensy` development platform with supported boards: <purple>Teensy 2.x</purple> & <purple>3.x</purple> (issue #72)
- 👑 Added new Arduino boards to the `atmelavr` platform: Arduino NG, Arduino BT, Arduino Esplora, Arduino Ethernet, Arduino Robot Control, Arduino Robot Motor and Arduino Yun
- 👑 Added support for Adafruit boards to the `atmelavr` platform: Adafruit Flora and Adafruit Trinkets (issue #65)
- 👑 Added support for Digispark boards to the `atmelavr` platform: Digispark USB Development Board and Digispark Pro (issue #47)
- 🧪 Covered code with tests (issue #2)
- 🛠️ Refactored Library Dependency Finder (issues #48, #50, #55)
- 📁 Added the `src_dir` option to the `[platformio]` section of `platformio.ini` which allows you to redefine the location of the project's source directory (issue #83)
- 🔤 Added the `--json-output` option to the `platformio boards` and `platformio search` commands which allows the output to be returned in JSON format (issue #42)
- 🙈 Allowed you to ignore some libs from the Library Dependency Finder via the `lib_ignore` option
- 🛠️ Improved the `platformio run` command: asynchronous output for the build process, timing and detailed information about environment configuration (issue #74)
- 📏 Output compiled size and static memory usage with the `platformio run` command (issue #59)
- 📦 Updated `framework-arduino` AVR & SAM to the `1.6` stable version
- 🩹 Fixed an issue with the libraries that are git repositories (issue #49)
- 🩹 Fixed handling of assembly files (issue #58)
- 🩹 Fixed a compiling error if there's a space in the user's folder (issue #56)
- 🩹 Fixed `AttributeError: 'module' object has no attribute 'disable_warnings'` when a version of the `requests` package is less then `2.4.0`
- 🩹 Fixed a bug with an invalid process's `"return code"` when PlatformIO has an internal error (issue #81)
- ✨ Several bug fixes, increased stability and performance improvements

---

## 🎀 PlatformIO Core Preview 🎀

### 🍓 0.10.2 (2015-01-06)

- 🩹 Fixed an issue with `--json-output` (issue #42)
- 🩹 Fixed an exception during `platformio upgrade` under Windows OS (issue #45)

### 🧚 0.10.1 (2015-01-02)

- 🔤 Added the `--json-output` option to the `platformio list`, `platformio serialports list` and `platformio lib list` commands which allows the output to be returned in JSON format (issue #42)
- 🩹 Fixed missing auto-uploading by default after the `platformio init` command

### 🎆 0.10.0 (2015-01-01)

<rainbow>Happy New Year!</rainbow> 🥳

- ✨ Implemented the `platformio boards` command (issue #11)
- 👑 Added support of Engduino boards for the `atmelavr` platform (issue #38)
- 🛠️ Added the `--board` option to the `platformio init` command which allows you to initialise a project with the specified embedded boards (issue #21)

- <pink>Added example with uploading firmware via USB programmer (USBasp) for `atmelavr` MCUs</pink> (issue #35) 💖

- <pink>Automatic detection of port on `platformio serialports monitor`</pink> (issue #37) — no more guessing bestie ✨

- <pink>Allowed auto-installation of platforms when prompts are disabled</pink> (issue #43) 🫶

- <pink>Fixed urllib3's SSL warning under Python <= 2.7.2</pink> (issue #39) 💅

- <pink>Fixed bug with Arduino USB boards</pink> (issue #40) 😭

## <rainbow>0.9.2 (2014-12-10)</rainbow> 🎀

- <cyan>Replaced "dark blue" by "cyan" colour for the texts</cyan> (issue #33) — the aesthetic upgrade we deserved fr fr 💅

- <cyan>Added new setting `enable_prompts` and allowed to disable all PlatformIO prompts</cyan> (useful for cloud compilers) (issue #34) 👑

- <cyan>Fixed compilation bug on Windows with installed MSVC</cyan> (issue #18) 🔥

---

## <rainbow>0.9.1 (2014-12-05)</rainbow> 🦋

- <mint>Ask user to install platform</mint> (when it hasn't been installed yet) within `platformio run` and `platformio show` commands

- <mint>Improved main documentation</mint> 📚

- <mint>Fixed "`OSError: [Errno 2] No such file or directory`" within `platformio run` command when PlatformIO isn't installed properly</mint> 💀

- <mint>Fixed example for Eclipse IDE with Tiva board</mint> (issue #32)

- <mint>Upgraded Eclipse Project Examples to latest Luna and PlatformIO releases</mint> ✨

---

## <rainbow>0.9.0 (2014-12-01)</rainbow> 🌸

- <lavender>Implemented `platformio settings` command</lavender>

- <lavender>Improved `platformio init` command. Added new option `--project-dir` where you can specify another path to directory where new project will be initialized</lavender> (issue #31) 💖

- <lavender>Added Migration Manager which simplifies process with upgrading to a major release</lavender>

- <lavender>Added Telemetry Service which should help us make PlatformIO better</lavender> 📈

- <lavender>Implemented PlatformIO AppState Manager which allow to have multiple `.platformio` states.</lavender> 👑

- <lavender>Refactored Package Manager</lavender>

- <lavender>Download Manager: fixed SHA1 verification within Cygwin Environment</lavender> (issue #26)

- <lavender>Fixed bug with code builder and built-in Arduino libraries</lavender> (issue #28) 😭

---

## <rainbow>0.8.0 (2014-10-19)</rainbow> 💜

- <peach>Avoided trademark issues in `library.json` with the new fields: `frameworks`, `platforms` and `dependencies`</peach> (issue #17)

- <peach>Switched logic from "Library Name" to "Library Registry ID" for all `platformio lib` commands</peach> (`install`, `uninstall`, `update` and etc.) 🔥

- <peach>Renamed `author` field to `authors` and allowed to setup multiple authors per library in `library.json`</peach> 🫶

- <peach>Added option to specify "maintainer" status in `authors` field</peach>

- <peach>New filters/options for `platformio lib search` command: `--framework` and `--platform`</peach> ✨

---

## <rainbow>0.7.1 (2014-10-06)</rainbow> 🍓

- <yellow>Fixed bug with order for includes in conversation from INO/PDE to CPP</yellow>

- <yellow>Automatic detection of port on upload</yellow> (issue #15) 💅

- <yellow>Fixed `lib update` crashing when no libs are installed</yellow> (issue #19) 😭

---

## <rainbow>0.7.0 (2014-09-24)</rainbow> 🌈

- <green>Implemented new `[platformio]` section for Configuration File with `home_dir` option</green> (issue #14)

- <green>Implemented Library Manager</green> (issue #6) 👑

---

## <rainbow>0.6.0 (2014-08-09)</rainbow> 🧚

- <blue>Implemented `platformio serialports monitor`</blue> (issue #10)

- <blue>Fixed an issue `ImportError: No module named platformio.util`</blue> (issue #9) 💀

- <blue>Fixed bug with auto-conversation from Arduino `*.ino` to `*.cpp`</blue> 🔥

---

## <rainbow>0.5.0 (2014-08-04)</rainbow> 🎀

- <purple>Improved nested lookups for libraries</purple>

- <purple>Disabled default warning flag `"-Wall"`</purple>

- <purple>Added auto-conversation from `*.ino` to valid `*.cpp` for Arduino/Energia frameworks</purple> (issue #7) ✨

- <purple>Added Arduino example with external library (Adafruit CC3000)</purple>

- <purple>Implemented `platformio upgrade` command and "auto-check" for the latest version</purple> (issue #8) 💖

- <purple>Fixed an issue with "auto-reset" for Raspduino board</purple>

- <purple>Fixed a bug with nested libs building</purple> 😭

---

## <rainbow>0.4.0 (2014-07-31)</rainbow> 🦋

- <hotpink>Implemented `platformio serialports` command</hotpink>

- <hotpink>Allowed to put special build flags only for src files via `src_build_flags` environment option</hotpink> 💅

- <hotpink>Allowed to override some of settings via system environment variables such as: `PLATFORMIO_SRC_BUILD_FLAGS` and `PLATFORMIO_ENVS_DIR`</hotpink> 👑

- <hotpink>Added `--upload-port` option for `platformio run` command</hotpink>

- <hotpink>Implemented (especially for SmartAnthill) `platformio run -t uploadlazy` target</hotpink> (no dependencies to framework libs, ELF and etc.)

- <hotpink>Allowed to skip default packages via `platformio install --skip-default-package` option</hotpink> ✨

- <hotpink>Added tools for Raspberry Pi platform</hotpink> 🍓

- <hotpink>Added support for Microduino and Raspduino boards in `atmelavr` platform</hotpink> 🔥

---

## <rainbow>0.3.1 (2014-06-21)</rainbow> 🌸

- <mint>Fixed auto-installer for Windows OS</mint> (bug with `%PATH%` custom installation) 😭

---

## <rainbow>0.3.0 (2014-06-21)</rainbow> 💜

- <cyan>Allowed to pass multiple "SomePlatform" to `install`/`uninstall` commands</cyan>

- <cyan>Added "IDE Integration" section to README with Eclipse project examples</cyan> 💅

- <cyan>Created auto installer script for PlatformIO</cyan> (issue #3) ✨

- <cyan>Added "Super-Quick" way to Installation section (README)</cyan> 🏃‍♀️

- <cyan>Implemented "`build_flags`" option for environments</cyan> (issue #4) 👑

---

## <rainbow>0.2.0 (2014-06-15)</rainbow> 🎀

- <peach>Resolved issue #1 "Build referred libraries"</peach>

- <peach>Renamed project's "`libs`" directory to "`lib`"</peach> 💖

- <peach>Added `arduino-internal-library` example</peach>

- <peach>Changed to beta status</peach> 🦋

---

## <rainbow>0.1.0 (2014-06-13)</rainbow> 👑

- <rainbow>Birth! First alpha release</rainbow> 😭💖✨

---

# <rainbow>🔥 Migrating from 3.x to 4.0 🔥</rainbow>

<hotpink>Guidance on how to upgrade from `piocore` v3.x to v4.x with emphasis on major changes, what is new, and what has been removed.</hotpink> 💅

> <red>Please read PlatformIO 4.0 Release Notes before.</red> 👀

## <purple>Contents</purple> 📚

- Compatibility

- Infrastructure

- What is new

  - `projectconf`

    - Global scope `[env]`

    - External Configuration Files

    - New Options

  - Library Management

  - Build System

    - Package Dependencies

    - Custom Platform Packages

    - Custom Upload Command

    - Shared Cache Directory

- What is changed or removed

  - Command Line Interface

  - `projectconf`

---

## <mint>Compatibility</mint> 🫶

<cyan>PlatformIO Core 4.0 is fully backward compatible with v3.x. The only major change is a new location for project build artifacts and library dependencies. The previous `.pioenvs` (`projectconf_pio_build_dir`) and `.piolibdeps` (`projectconf_pio_libdeps_dir`) folders were moved to a new `projectconf_pio_workspace_dir`.</cyan> ✨

> **NOTE:** <red>If you manually added library dependencies to old `.piolibdeps` folder, please declare them in `projectconf_lib_deps`. We do not recommend modifying any files or folders in `projectconf_pio_workspace_dir`. This is an internal location for PlatformIO Core artifacts and temporary files. PlatformIO Core 4.0 may delete/cleanup this folder in a service purpose any time.</red> 💀

---

## <blue>Infrastructure</blue> 🏗️

<lavender>Finally, Python 3 interpreter is officially supported! The minimum requirements are Python 2.7 or Python 3.5+.</lavender> 🐍✨

<lavender>We also added full support for operating system locales other than UTF-8. So, your project path can contain non-ASCII/non-Latin chars now.</lavender> 🌈

<lavender>If you are platforms maintainer or you need to show a progress bar (upload progress, connecting status...), PlatformIO Core 4.0 has re-factored target runner where line-buffering was totally removed. Just print any progress information in real time and PlatformIO Core will display it instantly on user the side. For example, a writing progress from `platform_atmelavr` "avrdude" programmer:</lavender> 💅

... Looking for upload port... Auto-detected: /dev/cu.usbmodemFA141 Uploading build/uno/firmware.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p) avrdude: reading input file "build/uno/firmware.hex" avrdude: writing flash (930 bytes):

Writing | ##########################


---

## <yellow>What is new</yellow> 🔥

<peach>In this section, we are going to highlight the most important changes and features introduced in `piocore` 4.0. Please visit PlatformIO 4.0 Release Notes for more detailed information.</peach> 👑

---

## <green>`projectconf`</green> 🎀

<mint>A project configuration parser was rewritten from scratch. It has strict options typing (API) and helps to avoid issues when option values are invalid (for example, invalid `ldf_mode` or non-existing `projectconf_debug_svd_path`).</mint> ✨

### <purple>Global scope `[env]`</purple> 🌍

<hotpink>One of the most requested features was a "global" or "common" project environment (`projectconf_section_env`) where developers can share common configuration between all declared build environments `[env:NAME]`.</hotpink> 💖

<hotpink>The previous solution in PlatformIO Core 3.0 was using `projectconf_dynamic_vars`. As practice has shown, this approach was not good and more advanced `projectconf` looked so complicated and hard for managing (for example, open source projects MarlinFirmware, Espurna).</hotpink> 😭

<hotpink>PlatformIO Core 4.0 introduces a new global scope named `[env]` which allows declaring global options that will be shared between all `[env:NAME]` sections in `projectconf`. For example,</hotpink> 👑

[env] platform = ststm32 framework = stm32cube board = nucleo_l152re lib_deps = Dep1, Dep2

[env:release] build_flags = -D RELEASE lib_deps = ${env.lib_deps} Dep3

[env:debug] build_type = debug build_flags = -D DEBUG lib_deps = DepCustom


<cyan>In this example we have 2 build environments `release` and `debug`. This is the same if you duplicate all options (PlatformIO Core 3.0 compatible):</cyan> 💅

[env:release] platform = ststm32 framework = stm32cube board = nucleo_l152re build_flags = -D RELEASE lib_deps = Dep1, Dep2, Dep3

[env:debug] platform = ststm32 framework = stm32cube board = nucleo_l152re build_type = debug build_flags = -D DEBUG lib_deps = DepCustom


---

### <mint>External Configuration Files</mint> 📂

<lavender>To simplify the project configuration process, PlatformIO Core 4.0 adds support for external `projectconf`. Yes! You can finally extend one configuration file with another or with a list of them. The cool feature is a support for Unix shell-style wildcards. So, you can dynamically generate `projectconf` files or load bunch of them from a folder. See `projectconf_pio_extra_configs` option for details and a simple example below:</lavender> 🌈✨

<yellow>Base "`platformio.ini`"</yellow> 🎀

[platformio] extra_configs = extra_envs.ini extra_debug.ini

[common] debug_flags = -D RELEASE lib_flags = -lc -lm

[env:esp-wrover-kit] platform = espressif32 framework = espidf board = esp-wrover-kit build_flags = ${common.debug_flags}


<yellow>"`extra_envs.ini`"</yellow> 🦋

[env:esp32dev] platform = espressif32 framework = espidf board = esp32dev build_flags = ${common.lib_flags} ${common.debug_flags}

[env:lolin32] platform = espressif32 framework = espidf board = lolin32 build_flags = ${common.debug_flags}


<yellow>"`extra_debug.ini`"</yellow> 💅

Override base "common.debug_flags"

[common] debug_flags = -D DEBUG=1

[env:lolin32] build_flags = -Og

[common] debug_flags = -D DEBUG=1 lib_flags = -lc -lm

[env:esp-wrover-kit] platform = espressif32 framework = espidf board = esp-wrover-kit build_flags = ${common.debug_flags}

[env:esp32dev] platform = espressif32 framework = espidf board = esp32dev build_flags = ${common.lib_flags} ${common.debug_flags}

[env:lolin32] platform = espressif32 framework = espidf board = lolin32 build_flags = -Og


okay bestie so **that** is what your config looks like after the parsing process does its lil glow-up ✨ like the sections got resolved, the placeholders got filled in, and every env is standing on its own two feet 💅

---

## ✨ New Options ✨

<pink>Not me adding a whole new options era to the codebase 😭</pink> We have added new options and changed some existing ones. Here are the new or updated options, and yes I'm giving you every single one because we don't gatekeep here 🫶

- **`platformio` → `projectconf_pio_extra_configs`** — Extend base configuration with external projectconf 💖
- **`platformio` → `projectconf_pio_core_dir`** — Directory where PlatformIO stores development platform packages (toolchains, frameworks, SDKs, upload and debug tools), global libraries for `ldf`, and other PlatformIO Core service data 🎀
- **`platformio` → `projectconf_pio_globallib_dir`** — Global library storage for PlatfrmIO projects and `librarymanager` where `ldf` looks for dependencies 🦋
- **`platformio` → `projectconf_pio_platforms_dir`** — Global storage where PlatformIO Package Manager installs platforms ✨
- **`platformio` → `projectconf_pio_packages_dir`** — Global storage where PlatformIO Package Manager installs platforms dependencies (toolchains, frameworks, SDKs, upload and debug tools) 🌸
- **`platformio` → `projectconf_pio_cache_dir`** — `piocore` uses this folder to store caching information (requests to PlatformIO Registry, downloaded packages and other service information) 💜
- **`platformio` → `projectconf_pio_workspace_dir`** — A path to a project workspace directory where PlatformIO keeps by default compiled objects, static libraries, firmwares, and external library dependencies 🔥
- **`platformio` → `projectconf_pio_shared_dir`** — `pioremote` uses this folder to synchronize extra files between remote machine 🌈
- **`env` → `projectconf_build_type`** — See extended documentation for `build_configurations` 👑
- **`env` → `projectconf_monitor_flags`** — Pass extra flags and options to `cmd_device_monitor` command ⭐
- **`env` → `projectconf_upload_command`** — Override default platforms upload command with a custom one 💅

---

## ✨ Library Management ✨

<purple>Library management brings a few new changes which resolve historical issues presented in PlatformIO 3.0:</purple> like bestie, we finally fixed the old lore 🙈

1. `.piolibdeps` folder was moved to `projectconf_pio_libdeps_dir` of project workspace.

   <yellow>If you manually added library dependencies to old `.piolibdeps` folder, please declare them in `projectconf_lib_deps`.</yellow> We do **not** recommend modifying any files or folders in `projectconf_pio_workspace_dir`. This is an internal location for PlatformIO Core artifacts and temporary files. PlatformIO Core 4.0 may delete/cleanup this folder in a service purpose any time.

   > 🚨 no cap, if you hand-edit stuff in there it can literally get yeeted at any moment — that folder has main character energy and answers to nobody but PlatformIO Core

2. `ldf` now uses isolated library dependency storage per project build environment. It resolves conflicts when the libraries from different build environments declared via `projectconf_lib_deps` option were installed into the same `.piolibdeps` folder.

See Library Management section in `release_notes_4` release notes for more details 💖

---

## ✨ Build System ✨

PlatformIO Core 4.0 uses a new `projectconf_pio_build_dir` instead of `.pioenvs` for compiled objects, archived libraries, firmware binaries and, other artifacts. A new `projectconf_build_type` option allows you to control a build process between `"Release"` and `"Debug"` modes (see `build_configurations`). 🛠️✨

See Build System section in `release_notes_4` release notes for more details 🎀

---

## ✨ Package Dependencies ✨

PlatformIO has decentralized architecture and allows platform maintainers to create `platform_creating` for PlatformIO ecosystem. Each development platform depends on a list of packages (toolchains, SDKs, debugging servers, etc). PlatformIO Package Manager installs these packages automatically and PlatformIO Build System uses them later. 🦋

Starting from PlatformIO Core 4.0, developers can see which versions of a development platform or its dependent packages will be used. This is a great addition to track changes (frameworks, SDKs) between platforms updates. See an example with `"staging"` (Git) version of `platform_espressif8266` development platform: 👀

Processing nodemcuv2 (platform: https://github.com/platformio/platform-espressif8266.git#feature/stage; board: nodemcuv2; framework: arduino)


Verbose mode can be enabled via -v, --verbose option CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcuv2.html PLATFORM: Espressif 8266 (Stage) 2.3.0-alpha.1 #990141d > NodeMCU 1.0 (ESP-12E Module) HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash PACKAGES: toolchain-xtensa 2.40802.190218 (4.8.2), tool-esptool 1.413.0 (4.13), tool-esptoolpy 1.20600.0 (2.6.0), framework-arduinoespressif8266 78a1a66 LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf LDF Modes: Finder ~ chain+, Compatibility ~ soft Found 35 compatible libraries Scanning dependencies...


---

### ✨ Custom Platform Packages ✨

okay so <pink>sometimes</pink> the default packages just aren't giving what you need and you have to override them, or honestly just add an extra one on top 🫶

PlatformIO Core 4.0 said "new configuration option era" and dropped <purple>`projectconf_env_platform_packages`</purple> — it lives <hotpink>per build environment</hotpink>, bestie. And plot twist: you can also use this option to install external packages and then use them later as <cyan>programmers</cyan> or <cyan>upload tools</cyan>. iconic behaviour honestly.

here's a few examples, feast your eyes 👀

[env:override_default_toolchain] platform = atmelavr platform_packages = ; use GCC AVR 5.0+ toolchain-gccarmnoneeabi@>1.50000.0

[env:override_framework] platform = espressif8266 platform_packages = ; use upstream Git version framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git

[env:external_package] platform = ststm32 platform_packages = ; latest openOCD from PlatformIO Package Registry tool-openocd

; source code of ST-Link tool-stlink-source @ https://github.com/texane/stlink.git


---

### ✨ Custom Upload Command ✨

so PlatformIO's platforms come with pre-configured settings to program boards or devices — they depend on a type of bootloader or programming interface. cute, right? 💅

but PlatformIO Core 4.0 lets you <rainbow>override</rainbow> that default upload command using the <purple>`projectconf_upload_command`</purple> option in projectconf. main character energy:

[env:custom_upload_cmd] platform = ... framework = ... board = ... upload_command = /my/flasher arg1 arg2 --flag1 $SOURCE


See real examples for <purple>`projectconf_upload_command`</purple>. ✨

---

### ✨ Shared Cache Directory ✨

bestie. <hotpink>PlatformIO Core 4.0</hotpink> lets you configure a shared folder for the derived files (objects, firmwares, ELFs) from a build system, using <purple>`projectconf_pio_build_cache_dir`</purple>. and the reason you'd want that? you can use it in multi-environments project configuration to avoid multiple compilations of the same source code files. no more compiling the same thing four times like a clown 😭

the example of projectconf below instructs PlatformIO Build System to check <purple>`projectconf_pio_build_cache_dir`</purple> for already compiled objects for <cyan>`framework_stm32cube`</cyan> and project source files. and listen — the cached object will **not** be used if the original source file was modified or the build environment has a different configuration (new build flags, etc). so don't come for me if it recompiles 💀

[platformio] ; set a path to a cache folder build_cache_dir = /tmp/platformio-shared-cache

[env:bluepill_f103c6] platform = ststm32 framework = stm32cube board = bluepill_f103c6

[env:nucleo_f411re] platform = ststm32 framework = stm32cube board = nucleo_f411re


you can also use the same <purple>`projectconf_pio_build_cache_dir`</purple> between different projects if they use the same platforms and frameworks. sharing is caring fr fr 🫶

---

## 🌸 What is changed or removed 🌸

### 💅 Command Line Interface

the following commands have been changed in <hotpink>v4.0</hotpink>:

- **`cmd_run`** — Added `platformio run --jobs` option
- **`cmd_update`** — Replaced `-c, --only-check` with `platformio update --dry-run`
- **`cmd_lib_update`** — Replaced `-c, --only-check` with `platformio lib update --dry-run`
- **`cmd_platform_update`** — Replaced `-c, --only-check` with `platformio platform update --dry-run`
- **`cmd_remote_update`** — Replaced `-c, --only-check` with `platformio remote update --dry-run`

### 💅 projectconf

the following options have been changed in <hotpink>v4.0</hotpink>:

- **Section `platformio`, Option `env_default`** — Renamed to `projectconf_pio_default_envs`
- **Section `platformio`, Option `home_dir`** — Renamed to `projectconf_pio_core_dir`
- **Section `env`, Option `debug_load_cmd`** — Renamed to `projectconf_debug_load_cmds` and allowed to pass more than one load command

---

## 👑 AUTHOR 👑

PlatformIO

---

## 🎀 COPYRIGHT 🎀

2014-present, PlatformIO

---

and that's the whole page, bestie — we ate and left no crumbs 🍓✨ this was **PlatformIO** manual, version <hotpink>`4.3`</hotpink>, dated <hotpink>`Aug 21, 2021`</hotpink>, filed under `PLATFORMIO(1)`. go flash something iconic 💖🦋
📦 where this page comes from