Hardware STM32 Primer 2

  • Mikrokontrolér STM32F103VET6 (jádro ARM Cortex M3, 512KiB Flash, 64KiB SRAM) 
  • Takt procesoru až 72MHz
  • Teplotní čidlo
  • 12 bit ADC, 12 bit DAC, PWM
  • Sběrnice CAN, USART, SPI, I2C, IrDA, LIN
  • Dotykový grafický LCD displej (barevný,  128x160 pixelů)
  • Směrový joystick se středovým tlačítkem, 4 tlačítka na displeji
  • Mikrofon a reproduktor pro záznam a reprodukci zvuku, sluchátkový výstup
  • 3 osý akcelerometr
  • Slot pro Micro SD kartu
  • Li-Ion akumulátor 3,7V/400mAh, nabijí se přes USB
  • Rozšiřující 20 pinový konektor do kterého lze zasunout vlastní rozšiřující modul
  • Dva mini USB konektory, jeden pro programování a ladění, druhý pro uživatelské aplikace

Dále jsou dostupné ze stránek STMicroelectronics různé knihovny v jazyku C pro kompletní ovládání periferií, navíc i hotové aplikace pro práci s  USB protokolem a SD kartou. To výrazně urychluje vývoj dalších aplikací a rovněž má pozitivní vliv na jejich spolehlivost. Ladění přes USB sběrnici je umožněno díky vestavěnému programátoru/debuggeru RLink, jenž je připojen k mikrokontroléru přes rozhraní SWD (Serial Wire Debug). Primer 2 nepodporuje JTAG (narozdíl od Primeru 1), takže uživatelé Linuxu, kteří používají oblíbené OpenOCD, mají smůlu.

 

K vývojovému kitu je možné stáhnout řadu demonstračních aplikací ze stránek stm32circle.com, mezi nimi je i testovací operační systém CircleOS. Říkám testovací, neboť v něm lze odladit relativně velké množství základních aplikací, avšak pro větší projekty se nehodí. Navíc v něm nefungují mechanismy správy paměti a ani multitasking - není to prostě real-time OS.

 

Proto byl jako hlavní operační systém zvolen freeRTOS, jenž je velmi rozšířený mezi embedded real-time aplikacemi a existuje pro něj mnoho portovaných implementací (např. pro AVR, Freescale HC08 nebo představovaný STM32 s jádrem Cortex M-3).


Demo

Následující demo přejímá některé zdrojové soubory z testovací aplikace SimplePrimer2, která se nachází na stránkách STM32Circle.com. Po jeho spuštění jsou vytvořeny dvě jednoduché úlohy, z nichž jedna periodicky vypíná a zapíná zelenou LED v intervalu 0,5s a druhá provádí totéž s červenou LED, pouze s periodou 3s. Demo je založené na FreeRTOS 6.1.1 a knihovně nízkoúrovňových periferních ovladačů od STMicroelectronics (verze 3.40). Je kompilované překladačem GCC, který je součástí vývojového prostředí Ride7 (konkrétně 7.30.10). Oproti původnímu demu a oproti originální distribuci FreeRTOS je změněna struktura adresářů, navíc jsou ostatní nepotřebné demonstrační aplikace odstraněny.

 

Při vytváření projektu v prostředí Ride7 je nutné věnovat pozornost direktivám  #define a také vhodnému nastavení cest. Proto ve vlastnostech projektu ověříme následující parametry GCC:

 

Include Directories - tyto cesty se nastavují pro korektní nalezení a vložení hlavičkových souborů při kompilaci.

  • .;
  • $(ApplicationDir)\freeRTOS\Source\include; (hlavičkové soubory FreeRTOS)
  • $(ApplicationDir)\freeRTOS\Source\portable\GCC\ARM_CM3; (implementace portu FreeRTOS na architekturu Cortex-M3)
  • $(ApplicationDir)\freeRTOS; (konfigurace FreeRTOS v souboru freeRTOSConfig.h)
  • $(ApplicationDir)\stm32; (základní definice procesoru)
  • .\Libraries\CMSIS\CM3\CoreSupport; (základní abstrakce pro asemblerové instrukce)
  • .\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x; (datové struktury jádra a periferií)
  • .\Libraries\STM32F10x_StdPeriph_Driver\inc; (standardní knihovna od ST)
  • $(RkitLib)\ARM\include

 

Defines - dodefinování parametrů mikrokontroléru

  • GCC_ARMCM3 (definuje, který port pro FreeRTOS bude použit)
  • STM32F10X_HD (upřesnění typu procesoru - HD znamená High Density, produkty s FLASH pamětí 256-512 KiB)
  • USE_STDPERIPH_DRIVER (použití standardních komponent)

Nakonec nastavíme ve vlastnostech linkeru LD parametr Use Default Startup na No.

 

Kompilace a uploadování firmwaru do mikrokontroléru by měly proběhnout automaticky a bez problémů. U volně stažitelné verze Ride7 je pouze omezení pro maximální velikost debugovaného kódu na 32KiB, což ale tato demonstrační aplikace nepřesahuje. Jako další zdroje informací bych čtenářům doporučil FreeRTOS User Manual a také obsáhlou dokumentaci ST ke knihovně periferních ovladačů (ta je součástí instalace Ride7).

 

Ke stažení

FreeRTOS & STM32 Primer2 Demo