Začínáme s STM32

Pokud se již nějakou dobu věnujete programování mikrokontrolérů například na vývojových deskách Arduino, jistě jste se již setkali s mnohými záhadnými problémy, které přináší Arduino framework a Arduino knihovny, případně jste u náročnějších aplikací narazili na přímo nedostatek výkonu procesorů Atmel, které se na Arduino deskách používají. 8-bitové Atmely zkrátka nezvládají pracovat se složitějšími aplikacemi (například obsahujícími zpracování multimédií), mají málo operační paměti a malou ROM, kterou větší projekt využívající více knihoven hravě zaplní. Arduino framework poté schovává skutečné dění v procesoru a Vy tak nevíte, co se „pod kapotou“ děje. 
Přechod na ARMové 32bitové mikroprocesory STM32 je tak logickým krokem, který dříve nebo později potká kteréhokoli pokročilejšího bastlíře. STM32 nabízejí řádově vyšší výkon, bohatší možnosti periferií a profesionální nástroje. Navíc je pro začátek můžete programovat s Arduino frameworkem a tedy prakticky totožně jako Vaše současné Arduino desky.  

Výběr vývojové desky 

Nejprve budete muset vybrat správnou vývojovou desku. Procesory STM32 se běžně osazují do oficiálních devkitů Nucleo a Discovery Kitů a také do neoficiálních desek, které můžete na trhu najít pod názvy jako BluePill nebo BlackPill.  

Abyste si maximálně usnadnili začátek, doporučuji zvolit desku řady Nucleo. Tyto desky jsou pro začátek nejjednušší, protože se v mnohém podobají vývojovým deskám Arduino – mají integrovaný programátor a debugger, desky Nucleo-32 a Nucleo-64 mají shodný konektor s deskami Arduino Nano respektive Arduino UNO a tudíž pokud vlastníte shieldy pro tyto desky, můžete je dále vesele používat. Integrovaný debugger navíc můžete využít i další zařízení s STM32 mikroprocesory. Desky Discovery Kit jsou určeny spíše pro prezentaci mnohých funkcí STM32 mikroprocesorů. Deskám BluePill a BlackPill se ve vlastním zájmu alespoň pro začátek vyhněte – na trhu se vyskytuje mnoho falešných klonů a navíc tyto desky neobsahují integrovaný programátor, takže pro jejich programování musíte zvlášť zakoupit ještě ST-LINK (pro zajímavost, falešnou desku je možné koupit i v jednom známém českém obchodu s elektro součástkami). 

Při výběru Nucleo desky Vás možná překvapí velké množství různých variant, ale tohoto se neděste. Narozdíl od desek Arduino, které se povětšinou osazují jen jedním mikroprocesorem (ATMega328P) se na desky Nucleo osazují všechny možné mikroprocesry různých řad. Platí, že jsou desky označené jako Nucleo-X###. Tímto se zatím příliš nemusíte zabývat, ale F jsou standardní mikroprocesory se středním a vysokým výkonem, L pak zastupuje čipy optimalizované pro co nejnižší spotřebu energie. Narazit můžete také na řady G s vyšším výkonem, H7 s velmi vysokým výkonem a W s integrovanými bezdrátovými vysílači (povětšinou pro BLE nebo 868 MHz).  

Desky Nucleo se poté také dělí na varianty Nucleo-32, Nucleo-64 a Nucleo-144. Desky Nucleo-32 mají stejné vývody jako Arduino Nano, Nucleo-64 stejné jako Arduino UNO. Pro začátek bych doporučil desku řady Nucleo-64, například desku Nucleo-F103RB, která je i velmi cenově dostupná. Dejte si pouze pozor na to, že budete potřebovat kabel s dnes již prakticky vymírajícím konektorem miniUSB. 

Vývojové prostředí 

Když už máte k dispozici vývojovou desku, můžete se pustit do programování. Mikroprocesory STM32 lze, jak jsem již výše zmínil, programovat vícero způsoby. 

Nejjednodušší je pro bastlíře, který již má znalost programování Arduino desek s Arduino frameworkem, využití Arduino IDE/PlatformIO. Díky sadě knihoven STM32Duino je pak vývoj velmi podobný tomu, co již znáte. Tímto způsobem však bohužel nemáte možnost využít veškeré výhody STM32 mikroprocesorů a tak bych velmi doporučil co nejdříve přejít na sadu STM32Cube a knihovny HAL. 

Vývoj se sadou STM32Cube a knihovnami HAL přináší mnoho změn, u kterých však velmi rychle zjistíte, že se jedná o obrovské výhody které Vám nesmírně zpříjemní vývoj. Hned první touto vlastností je to, že nastavení periferií konfigurujete v grafickém prostředí STM32CubeMX, kde máte možnost si nastavit prakticky veškeré vlastnosi všech periferií. CubeMX Vás tak varuje, pokud je nějaké nastavení neplatné, okamžitě Vám navrhne možnosti řešení. Výstupem CubeMX je základní struktura projektu obsahující zdrojový kód, nastavení kompilátoru a podobně. K programování můžete využít buď STM32CubeIDE, nebo pokud v STM32CubeMX zvolíte jako druh projektu CMake, využít můžete velmi oblíbený editor VS Code, pro který existuje oficiální addon umožňující vývoj pro STM32. 

Autor: Eduard Dlabal

Kategorie