Jak začít s STM32 je často kladená otázka. Jednou z možností je vzít mikrokontrolér podporovaný v Arduino IDE (díky STM32duino). To je jednoduchá cesta, ale ne vždy dostatečná. Druhá možnost je pojmout STM32 od podlahy — přes STM32CubeIDE a HAL knihovny.
Robert Feranec společně s Greidi Ajalikem natočili podrobný video návod, kde krok za krokem provedou celým procesem od vytvoření projektu až po komunikaci s PC. Video je anglicky, ale postup je vizuální a snadno sledovatelný. Níže je textový souhrn toho, co se ve videu probírá.
Co budete potřebovat
- STM32 Nucleo F4 board (konkrétně NUCLEO-F401RE) — vývojová deska s integrovaným ST-Link debuggerem. Nemusíte kupovat žádný JTAG programátor zvlášť.
- STM32CubeIDE — bezplatné vývojové prostředí od ST. Pozor: od verze 2.0 (listopad 2025) je STM32CubeMX samostatný nástroj — už není integrovaný v CubeIDE (viz sekce Aktuální stav).
- USB kabel pro připojení Nucleo desky k PC.
Založení projektu
Greidi ukazuje, jak v CubeIDE založit nový projekt pro konkrétní Nucleo desku. Několik praktických tipů z videa:
V názvech projektů a workspace nepoužívejte mezery — nahraďte je podtržítkem. Některé kompilátory mají problémy s mezerami v cestách a nic vám to neřeknou.
Pokud máte vlastní desku (ne Nucleo), vyberete v MCU/MPU selectoru přímo číslo čipu. Pro Nucleo desky je jednodušší Board Selector — vyberete desku a CubeIDE předkonfiguruje všechny periférie automaticky.
Při prvním spuštění projektu doporučuje Greidi firmware STLINK upgradovat — v menu Help → ST-Link Upgrade. Starší firmware na desce může způsobit problémy s programováním.
Grafická konfigurace – IOC soubor
Po vytvoření projektu se otevře grafický konfigurátor (IOC soubor), kde je vidět celý čip s nakonfigurovanými piny. Zelené piny jsou aktivní — u Nucleo F4 je předkonfigurovaný zelený LED na PA5, tlačítko na PC13, USART2 a debug rozhraní.
Záložka Clock Configuration ukazuje stromovou strukturu hodin. Interní oscilátor (16 MHz) se přes PLL násobí na 84 MHz systémový takt. Perifériím (APB) se pak přidělují nižší frekvence. Pro úsporu energie se dají hodiny snížit — stačí přepsat cílovou frekvenci a systém najde řešení automaticky.
Všechny schémata Nucleo desek jsou veřejně dostupné na webu ST — stojí za to si je stáhnout a porovnat konfiguraci v CubeIDE se skutečným zapojením.
Blikání LED – GPIO a Delay
Kód se píše do main.c, do sekce označené /* USER CODE BEGIN */ a /* USER CODE END */. Cokoliv mimo tyto sekce se při regeneraci kódu z IOC souboru přepíše.
Pro blikání LED stačí dvě HAL funkce:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET) — zapne LED (třetí parametr GPIO_PIN_RESET ji vypne).
HAL_Delay(1000) — pauza 1000 ms.
Celý blikací cyklus běží v nekonečné smyčce while(1). Jak zjistit, jaké funkce jsou k dispozici? Greidi doporučuje otevřít HAL zdrojové soubory ve složce Drivers — pravým kliknutím na funkci → Open Declaration.
Přerušení – tlačítko jako interrupt
V IOC souboru se PC13 (tlačítko) nakonfiguruje jako External Interrupt s falling edge detekcí. Proč falling? Tlačítko má pull-up rezistor — v klidovém stavu je signál vysoký, stisknutí ho stáhne k zemi.
Po uložení IOC a regeneraci kódu se v stm32f4xx_it.c objeví nový handler. Ten volá callback funkci HAL_GPIO_EXTI_Callback, která je definovaná jako __weak — to znamená, že ji můžete přepsat vlastní verzí kdekoliv v kódu.
Do callback funkce stačí vložit: HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5)
Důležité pravidlo: v přerušení nikdy nepoužívejte delay. Přerušení má být co nejkratší — provést akci a vrátit se. Delay v přerušení může způsobit nestabilitu nebo chyby kompilátoru.
Pokud máte víc přerušení na různých pinech, v callback funkci rozlišíte zdroj přes parametr GPIO_Pin a podmínku if.
UART – komunikace s PC
USART2 je na Nucleo desce předkonfigurovaný a propojený přes ST-Link s USB — na PC se objeví jako virtuální COM port. Žádný externí převodník nepotřebujete.
Odeslání dat: HAL_UART_Transmit(&huart2, (uint8_t*)"Hello Worldn", 12, 100)
Parametry: handle UART periférie (ukazatel), data jako pole bytů, délka, timeout v ms. Pro sledování výstupu na PC lze použít terminál přímo v CubeIDE (záložka Console → Command Shell Console), nebo externí programy jako PuTTY či TeraTerm.
Debugger
Nucleo deska má integrovaný ST-Link — žádný externí JTAG nepotřebujete. Pro vlastní desky se dá koupit ST-Link V3 (cca 35 USD na DigiKey/Mouser).
V CubeIDE kliknete na ikonu brouka (Debug). Na řádek kódu poklepním přidáte breakpoint. Pak máte k dispozici Step Over (přeskočí funkci), Step Into (vejde dovnitř funkce) a Resume (pokračuje do dalšího breakpointu).
Debugger je neocenitelý pro pochopení, co se v kódu skutečně děje — můžete sledovat hodnoty proměnných, procházet HAL funkce krok za krokem a zjistit, kde se program zasekne.
Aktuální stav STM32CubeIDE (2026)
Od doby natočení videa se v ekosystému STM32 změnilo několik věcí:
CubeIDE 2.0+ — od listopadu 2025 je STM32CubeMX oddělený od CubeIDE. Grafická konfigurace (IOC soubor) se teď dělá v samostatném CubeMX, kód se pak importuje do CubeIDE. Při sledování videa tedy uvidíte integrovaný konfigurátor, který v nových verzích vypadá jinak.
VS Code varianta — ST aktivně vyvíjí STM32CubeIDE for VS Code. Pro vývojáře zvyklé na VS Code je to zajímavá alternativa s podporou Copilot integrace a CI/CD workflows.
Nucleo desky — Nucleo F401RE z videa je stále v prodeji a stále funguje se současnými verzemi nástrojů. Pro nové projekty stojí za zvážení i novější řady (STM32H5, STM32C0, STM32U5).
Video
https://www.youtube.com/watch?v=dnfuNT1dPiM
Užitečné odkazy
- STM32CubeIDE — stáhnout z ST.com
- STM32CubeMX (standalone) — stáhnout z ST.com
- Nucleo F401RE — produktová stránka
- HAL dokumentace — UM1725 (STM32F4 HAL User Manual)
- Robert Feranec — YouTube kanál (hardware design, PCB)









Žádné sociální komentáře k dispozici.