Otevře se na nové kartě

STM32CubeIDE 2.x: kde je CubeMX a co se doopravdy změnilo

Stručně: Od verze STM32CubeIDE 2.0.0 (18. listopadu 2025) už CubeIDE neobsahuje integrovaný STM32CubeMX. Konfigurace mikrokontroléru, hodin a periferií se dělá v samostatné aplikaci STM32CubeMX, která vygeneruje projekt, a ten se pak otevře v CubeIDE pro psání kódu, překlad a ladění. Výběr čipu a desky v CubeIDE zůstal, ale sám o sobě HAL projekt nevyrobí.

Článek vyšel poprvé v dubnu 2019, kdy STM32CubeIDE vzniklo. V září 2026 je kompletně přepsaný podle testu na Nucleo-F767ZI se STM32CubeIDE 2.2.0 a STM32CubeMX 6.18.1.

Nainstalujete STM32CubeIDE, dáte File → New a čekáte známou obrazovku s výběrem mikrokontroléru, clock tree a pinoutem. Nepřijde. Od verze 2.0.0 z listopadu 2025 CubeIDE konfigurátor CubeMX neobsahuje a většina návodů, včetně původní verze tohoto článku, popisuje stav, který už neplatí.

Prošel jsem celý postup od založení projektu po ladění na desce. Tady je, co se skutečně změnilo, co v IDE zůstalo a kde se dá spolehlivě ztratit hodina.

Dialog Create / Import STM32 Project v STM32CubeIDE 2.2.0
Nový rozcestník v CubeIDE 2.2.0: čtyři typy nových projektů, sedm importérů, žádný konfigurátor.

Co se změnilo a proč

V řadě 1.x bylo CubeMX zabudované přímo v IDE. Od 2.0.0 jsou to dvě samostatné aplikace s vlastními instalacemi a vlastním cyklem aktualizací. ST to zdůvodnilo pomalým během, problémy se stabilitou napříč systémy a monolitickými aktualizacemi. CubeIDE se má soustředit na editaci, překlad a ladění.

Praktické důsledky: instalace se zmenšila zhruba z 3,7 GB na 2,9 GB, zmizel požadavek na přihlášení (pocházel z CubeMX) a verze obou nástrojů jde zmrazit nezávisle, takže u staršího projektu udržíte přesně tu kombinaci, ve které vznikl.

Výběr čipu v IDE zůstal, konfigurace ne

Tohle se často popisuje nepřesně. Projekt se v CubeIDE 2.2.0 zakládá přes File → STM32 Project Create/Import a volba STM32CubeIDE Empty Project nabídne plnohodnotný MCU/MPU Selector s 3 257 čipy a Board Selector s 233 deskami. Funguje to i bez nainstalovaného CubeMX, databáze součástek je součástí IDE.

Jenže výsledný projekt má jen startup soubor, linker skripty, prázdný main.c a nastavené přepínače překladače pro dané jádro. Žádný .ioc, žádný HAL, žádné CMSIS. Vybraná deska se do projektu nepropíše ničím, LD1 ani USART3 na virtuálním COM portu ST-LINKu v něm neexistují. Výběr rozhoduje o startupu, linkeru, compiler flagách a o SVD souboru pro zobrazení registrů v debuggeru. Nic víc.

Pro čistý bare-metal bez HAL to stačí. Blikátko na LD1 jsem si v něm napsal přes registry a deska bliká. Pro standardní HAL projekt je to ale slepá cesta.

Porovnání stromu prázdného projektu a projektu z CubeMX v Project Exploreru
Nahoře Empty projekt z CubeIDE, dole projekt z CubeMX s Core, Drivers a souborem .ioc.

Jak dnes založit HAL projekt

  1. V STM32CubeMX vyberte čip nebo desku, nakonfigurujte periferie a hodiny.
  2. V Project Manageru přepněte Toolchain / IDE na STM32CubeIDE. Výchozí hodnota je EWARM, tedy IAR, a bez přepnutí dostanete projekt pro cizí prostředí.
  3. Generate Code a v dialogu tlačítko Open Project.

Open Project se v mém testu nezeptal na nic. Projekt se sám naimportoval do už běžící instance CubeIDE a objevil se v Project Exploreru. V první verzi 2.0.0 tohle tlačítko chybělo a projekt se importoval ručně.

Project Manager v STM32CubeMX s nastaveným toolchainem STM32CubeIDE
Bez přepnutí z EWARM vám CubeMX vygeneruje projekt pro IAR.

Soubor .ioc a regenerace

.ioc zůstává zdrojem konfigurace, jen ho otevírá jiná aplikace. Dvojklik v CubeIDE spustí samostatný CubeMX bez nastavování asociací v systému. Počítejte ale s tím, že studený start trvá: na pracovním notebooku uběhlo od dvojkliku k použitelnému konfigurátoru zhruba 75 sekund. Podruhé je to okamžité, CubeMX zůstává běžet.

Ve verzi 2.0.0 bylo po každém Generate Code nutné stisknout F5, jinak IDE nové soubory nevidělo. Od 2.1.0 se projekt obnovuje sám a ověřil jsem, že jde o skutečné sledování souborového systému: po přidání I²C1 v CubeMX byly i2c.c a i2c.h ve stromu do tří sekund, a soubor zapsaný do Core/Src zvenčí, bez jakéhokoli kliknutí do IDE, se objevil do deseti sekund.

Co přežije regeneraci

Do vygenerovaného main.c jsem dal čtyři značky dovnitř bloků USER CODE BEGIN/END a jednu mimo ně, mezi MX_I2C1_Init(); a další USER CODE blok. Pak jsem v CubeMX přidal SPI1 a přegeneroval. Čtyři značky uvnitř zůstaly, pátá zmizela bez varování a na jejím místě je MX_SPI1_Init();.

Volba Backup previously generated files when re-generating je v Code Generatoru ve výchozím stavu vypnutá, takže nevznikne ani záloha. Pravidlo: všechno mimo USER CODE bloky je pro CubeMX jednorázový výstup, který při každém generování přepíše.

Soubor main.c po regeneraci se zachovaným kódem v USER CODE sekcích
Co je uvnitř USER CODE BEGIN/END, přežije. Co je o řádek výš, ne.

Past: dodatečné .ioc do prázdného projektu

Kdo začne Empty projektem a později chce konfigurátor, v IDE žádnou cestu nenajde. Kontextové menu nabízí jen Configure and Detect Nested Projects, žádný převod na CubeMX projekt.

Zkusil jsem obejít to přes CubeMX: Save Project As do složky existujícího Empty projektu, toolchain STM32CubeIDE, Generate. CubeMX ochotně zapsal .ioc, Core/ i Drivers/, ale .cproject nechal být. Projekt má najednou dva main(), starý v Src/ a nový v Core/Src/.

Build přesto projde, nula chyb, nula varování. Kolize symbolů nenastane, protože Core/ ani Drivers/ nejsou v build configuration. Sestaví se pořád starý registrový kód a změny z konfigurátoru se nikdy neprojeví. Bez chybové hlášky se to hledá dlouho. Pokud chcete přejít z Empty projektu na HAL, založte nový projekt z CubeMX a kód přeneste ručně.

Prázdný projekt s dodatečně přidaným souborem .ioc a úspěšný build, který ho ignoruje
Projekt má .ioc, Core i Drivers. Build je nevidí a sestaví původních 884 bajtů.

CMake: projekt bez vazby na IDE

V CubeMX můžete místo výstupu pro STM32CubeIDE zvolit CMake. Objeví se volba Default Compiler/Linker s možnostmi GCC a ST Arm Clang; ten druhý ve výchozí instalaci CubeIDE 2.2.0 není. Vygenerovaný projekt staví do build/Debug, regenerovanou část drží v cmake/stm32cubemx/ jako knihovnu a kořenový CMakeLists.txt generuje jen jednou, takže se dobře verzuje v Gitu.

CubeIDE má vlastní šablonu STM32 CMake Project, která se od výstupu CubeMX liší rozložením i toolchain souborem, obě ale IDE naimportuje a sestaví přes Ninju. Stejný projekt přeložíte i z příkazové řádky:

cmake --preset Debug
cd build/Debug
ninja

Pozor, cmake --preset se pouští z kořene projektu, ne z build adresáře. Kdo je zvyklý na cd build && cmake .., dostane hlášku, že CMakePresets.json nebyl nalezen.

Build CMake projektu z CubeMX pomocí ninja v terminálu
36 kroků a Ninja rovnou vypíše využití paměti, což managed build přes make nedělá.

Co zůstalo beze změny

Build, flash a ladění fungují jako dřív. Flash na Nucleo proběhl přes ST-LINK GDB server, debug session se zastavila v main(), breakpointy drží. Bug z verze 2.1, kdy se po flashi otevíral startup assembler, se na 2.2.0 neprojevil. V nastavení ladění přibylo Enable SWD multi-drop, tedy ladění více čipů na jedné sběrnici pro ST-LINK GDB server, OpenOCD i J-Link. Při prvním debugu vyskočí výzva k aktualizaci firmwaru ST-LINKu, odmítnout ji ničemu nevadí.

Verze z testu

KomponentaVerze
STM32CubeIDE2.2.0 (26. 6. 2026), Eclipse 2025-12, CDT 12.3.0
STM32CubeMX6.18.1
STM32Cube FW_F71.17.4
arm-none-eabi-gcc14.3.1
STM32CubeProgrammer CLI2.23.0
CMake / Ninja4.3.1 / 1.13.2
Verze v testu, září 2026.

Stažení firmware balíků v CubeMX nevyžaduje ST účet. Balík FW_F7 o 1 157 MB se rozjel po odsouhlasení licence, bez přihlašovacího dialogu.

CubeMX2, HAL2 a VS Code

Stav k září 2026, z dokumentace ST, na Nucleo-F767ZI se to netestuje. ST v březnu 2026 představilo STM32CubeMX2 a HAL2 pro nové řady počínaje STM32C5. Klasické CubeMX ale nenahrazují, stávající rodiny na něm zůstávají a oba nástroje běží paralelně. V CubeIDE 2.2.0 už je importér STM32CubeMX2 Project. Pro C5 doporučuje ST formát projektu CMake a buď klasické CubeIDE, nebo STM32CubeIDE for VS Code, na které se podle ST přesouvá hlavní vývoj, zatímco Eclipse verze zatím nabízí propracovanější ladění.

Co používat v roce 2026

  • Zavedené řady a HAL v1: CubeMX pro konfiguraci, CubeIDE 2.2 pro kód a ladění.
  • Git, CI, tým: generovat rovnou CMake projekt.
  • Bare-metal bez HAL: Empty Project v CubeIDE stačí, CubeMX nepotřebujete.
  • STM32C5 a novější: CubeMX2, HAL2 a CMake.

STM32CubeIDE nezmizelo ani nezhoršilo, změnila se jeho role. Z monolitu s konfigurátorem je editor, překladač a debugger, a konfigurace žije vedle. Staré návody proto nepopisují horší verzi téhož, ale jiný model práce.

Kam dál

Ptáte se

Proč v STM32CubeIDE není CubeMX?

Od verze 2.0.0 z listopadu 2025 ST integraci zrušilo kvůli výkonu, stabilitě a nezávislým aktualizacím. CubeMX je samostatná aplikace ke stažení zvlášť.

Zmizel z CubeIDE výběr mikrokontroléru?

Ne. CubeIDE 2.2.0 má vlastní MCU/MPU Selector s víc než 3 200 čipy a Board Selector s 233 deskami. Vzniklý projekt je ale prázdný, bez .ioc a bez HAL.

Jak dnes založím HAL projekt?

V STM32CubeMX nakonfigurujte čip nebo desku, v Project Manageru přepněte toolchain z výchozího EWARM na STM32CubeIDE, vygenerujte a klikněte na Open Project.

Můžu k prázdnému projektu z CubeIDE dodatečně přidat .ioc?

Prakticky ne. IDE na to nemá příkaz a ruční generování do složky vytvoří projekt se dvěma main(), ve kterém se nový kód nepřekládá. Založte nový projekt z CubeMX a kód přeneste.

Musím po regeneraci v CubeMX stisknout F5?

Ve verzi 2.0.0 ano. Od 2.1.0 se projekt obnovuje sám, jde o skutečné sledování souborového systému.

Co se stane s mým kódem při regeneraci?

Kód uvnitř bloků USER CODE BEGIN/END zůstane. Cokoli mimo ně CubeMX přepíše bez varování a bez zálohy, protože zálohování je ve výchozím nastavení vypnuté.
Sdílejte článek:
Tričko Chiptron s potiskem Trust me, I'm a maker
Ukaž světu,
že jsi Maker!
Koupit tričko
Kafe pro Chiptrona
Dodej energii dalšímu článku
Buy Me a Coffee

Související články

STM32 ve VS Code

Visual Studio Code (VS Code) se v posledních letech stal jedním z nejoblíbenějších editorů mezi vývojáři díky své flexibilitě, rychlosti a široké podpoře rozšíření. Pro vývoj aplikací na platformě STM32 nabízí STMicroelectronics rozšíření STM32 VS Code Extension právě pro VS…

Vývojová deska STM32F030 propojená vodiči s programátorem a USB kabelem

V tomto článku vám popíšu, jak naprogramovat tuto levnou vývojovou desku s mikrokontrolérem STM32F030.

Logo CHIPTRON s grafickým motivem elektronické desky

Jak jsme vám už psali na sociálních sítích, stránka http://chiptron.

Vývojová deska Nucleo STM32L476 s mikrokontrolérem, konektory a součástkami

Další články o STM32(F7): Tutorial: STM32F746 (STM32F7 Discovery) – Tlačítkem rozsvítit/zhasnout LED Tutorial: STM32F746 (STM32F7 Discovery) – jak zapnout LED (ovládání GPIO) STM32F746 discovery a IDE AC6 (System Workbench for STM32) Jak začít s moderními mikrokontroléry a proč – STM32…

CubeIDE otevřené na obrazovce se dvěma lektory ve videohovoru a grafikou desek STM32

Podrobný souhrn video návodu od Roberta Feraneca a Greidi Ajalika – jak začít programovat STM32 v CubeIDE: GPIO, přerušení, UART a debugger krok za krokem.

Úvodní obrazovka STM32CubeProgrammer s logem nástroje ST

STM32CubeProgrammer je oficiální nástroj ST pro nahrávání firmware do STM32. Podporuje SWD, JTAG, UART i USB DFU, běží na Windows, Linuxu i macOS a má grafické rozhraní i CLI.

Trendy