Levný kit se STM32F103C8 (plus Arduino)

Před časem jsem zahlédl pár velmi levných kitů s procesorem STM32F103C8 (zvané též BluePill). Vlastně jen procesor na desce se spoustou vývodů, k tomu jedna LEDka, tlačítko a stabilizátor napájení 3.3V, a to za naprosto směšnou cenu. Vzal jsem jich rovnou pytel, a k nim přihodil i čínskou kopii ST-Link v.2

Přišlo to, já to zapojil přes ST-Link, přeložil jsem program v C, a po nějakém tom laborování jsem ho nahrál do jednočipu. LEDka neblikala, protože – nevím proč, asi proto, že u ARMu neumím nastavit port na blikání nebo tak něco. 🙂

Čínský „ST-Link v2“ je taky podivnost sama. Nějak to fungovalo, ale jinak to jako spíš bolelo. Valná část utilit hlásí, že žádný ST-Link nevidí, a tak.

STM32 Minimum - Page 1

Což mě trochu hnětlo, protože jsem se zrovna na tuhle desku těšil. Použitý procesor STM32F103C8 má jádro ARM Cortex M3, 64 kB FLASH, 20 kB SRAM a spoustu dalších hezkých vlastností, třeba spoustu periferií. Navíc na desce je téměř „holý“, kromě PC13 není zabraný žádný pin, je připojený (mikro)USB konektor, takže máte hodně velkou volnost.

Hledal jsem tedy další možnost, jak tuto desku programovat, a našel jsem.

Dvojice pinheaderů jsou totiž vývody BOOT0 a BOOT1, a vy si pomocí jumperů nadefinujete, jaké jsou na těchto vstupech hodnoty. Pokud bude BOOT0 roven 1 a BOOT1 roven 0, ocitne se po RESETu čip v boot loader módu, v němž je možné naprogramovat jej pomocí UART1 – tedy signály TX1 (PA9) a RX1 (PA10).

Pak tedy stačí už jen připojit USB-to-UART převodník (třeba oblíbený CH340, Prolific PL2303 nebo CP1202 – pozor! Musí umět 3.3V!) a stisknout tlačítko RESET.

A k samotnému programování jsem použil Arduino IDE. Použil jsem 1.6.8, a měl jsem problémy (cesty apod.), ale po updatu na 1.6.9 vše funguje bez problémů.

Klíčem k úspěchu je knihovna Arduino_STM32. Stáhněte si ji a nahrajte do složky „hardware“ v Arduinu (viz Instalace). Po restartu Arduino IDE se v Manažeru desek objeví nové možnosti. Zvolil jsem desku „Generic STM32F103C series“, variantu „C8, 20kRAM, 64k Flash“ a jako nahrávací metodu Serial (experimetoval jsem i se STLink, ale výsledek nebyl nijak pěkný).

První přeložený sketch byl tento:

Překlad je o něco delší než ten pro Arduino. Důležité je nezapomenout na přehození BOOT0 na hodnotu 1 a stisknutí RESET před nahráním. Pokud chcete, aby při příštím spuštění už boot nenabíhal, hoďte switch zpátky na 0.

Další tipy: Sunspot STM32 Arduino, Arduino goes STM32

banner