Get the Flash Player to see this player.

time2online Joomla Extensions: Simple Video Flash Player Module
STM32 Wstęp

We wcześniejszym artykule podałem linki do kursu dla procesorów z rdzeniem Cortex-M0. Oczywiście nie mam zamiaru się powtarzać i opisywać tego samego, dlatego kupiłem sobie płytkę z kamami Z29ARM z procesorem STM32F107VCT6 (rodzina Cortex-M3) i postanowiłem przedstawić kilka prostych przykładów dla tej rodziny procesorów. Sporo informacji na temat samych SMT32 można znaleźć na stronie http://stm32.eu/ oraz w literaturze. Notę katalogową można znaleźć na http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00220364.pdf

Ja polecam książkę z której się uczyłem http://www.kamami.pl/index.php?ukey=product&productID=187337 która jest naprawdę niezła jeśli się jest kompletnie zielonym w procesorach 32 bitowych. Chcą zakupić tylko książkę bez dodatków, polecam http://margines.pl/index.php?ukey=product&productID=187337 zawsze troszkę taniej. W książce znajdziecie podstawowy kurs języka C, opis mikrokontrolerów z rodziny STM32F1x, opis czujników i wyświetlaczy oraz gotowe przykłady z naprawdę dobrymi komentarzami. Jeśli na razie nie macie 71-79zł to polecam odwiedzić stronę http://www.mikrokontroler.pl/content/STMCC założyć sobie konto i ściągnąć przykłady dla tej książki. Znajdziecie tam naprawdę dobre podstawowe programy, które wystarczą do tworzenia własnych projektów. Ale naprawdę polecam książkę.

Oprócz książki zaprezentowanej powyżej zakupiłem sobie także zestaw http://www.kamami.pl/index.php?ukey=product&productID=187517 W którego skład wchodzi:

Jeśli kupujecie cały zestaw, to będzie taniej, ale cena też jest spora jak na hobbistyczną zabawkę do domu. Taki zestaw w połączeniu z dobrą lekturą może dać wiele zabawy na długie letnie wieczory :).

Opis ZL29ARM można znaleźć na http://www.kamami.pl/dl/zl29arm.pdf

Mając już programator JTAG i płytkę ewaluacyjną można wybrać środowisko pracy. W książce polecają uVision (firmy Keil/ARM, dla STM32), ale ja korzystałem z TrueSTUDIO (firmy Atollic, dla STM32). Dla każdego z tych środowisk jest ograniczenie wgrywanego kodu 32kB, ale dla moich celów to wystarczało. Można także skonfigurować Eclipsa tak, aby kompilował program pod dany mikrokontroler przy pomocy toolchaina, ale jest to bardzo czasochłonne i męczące w obsłudze. Najlepszym rozwiązaniem na tę chwilę jest zainstalować środwisko CooCox, które bazuje na Eclipsie i także wykorzystuje toolchaina. Plus jest taki, że środowisko jest całkowicie darmowe, posiada debugera, obsługuje popularne programatory (w tym ZL30PRGv2 jako ST-LINK), program kompiluje się szybciej niż w jakimkolwiek środowisku i udostępniona jest masa przykładów dla tego środowiska. W sumie nie znalazłem minusów, dlatego polecam. Link oczywiście załączam http://www.coocox.org/CooCox_CoIDE.htm .
Ja przy tworzeniu przykładów korzystałem z TrueStudio, które także wykrywa programator ZL30PRGv2, więc można wgrywać program bezpośrednio z środowiska bez korzystania z dodatkowego oprogramowania tak jak CooCox IDE. Aby pobrać wersję Lite (darmową) należy kliknąć na ten link http://www.atollic.com/index.php/download/truestudio-for-arm a podczas instalacji wypełnić formularz, podać maila itp, po czym dostaniemy indywidualny kod aktywacyjny. W tak skonfigurowanym środowisku mamy wszystko. Począwszy od standardowych bibliotek dla każdego mikrokontrolera, a skończywszy na debugerze umożliwiającym wgranie programu do procka i testowanie go w czasie rzeczywistym. Minusem tego środowiska jest jego astronomiczna cena jak na polskie realia, a wersja darmowa ma ograniczenia w postaci 32kb kodu, dlatego zachęcam do ściągania CooCox IDE zanim stanie się płatne.

Aby stworzyć pierwszy program musimy kliknąć file->New->C Project:

Następnie wpisać nazwę i wybieramy Embedded C Project:

W ciskamy dalej i wybieramy rodzaj mikroporcesora:

Oraz programator (dla ZL30ARM wybieramy ST-Link):

 

Automatycznie w pliku main.c pojawią się przykłady dla bibliotek. Projekt będzie zawierał dołączone biblioteki obsługi portów, interfejsów itp. Oczywiście w internecie możecie natknąć się na dość kontrowersyjne wypowiedzi odnośnie standardowych bibliotek, co nie oznacza, że one są złe. Fakt jest taki, że za pomocą standardowych bibliotek można stworzyć bardzo dużo w krótkim czasie nie zgłębiając samych rejestrów i struktury mikrokontrolera. Wystarczy mieć tylko podstawową wiedzę o programowaniu w języku C. W taki sposób można łatwo zachęcić młodych ludzi do tego hobby, a z czasem i tak zaczną poznawać rejestry i strukturę procesora. Jeśli nie zaczną, to znaczy, że ich to nie zainteresowało. Ja przechodząc z ATmegi16 na procesory ARM po prostu nie mogłem wyjść z podziwu jak łatwo się programuje przy użyciu standardowych bibliotek. Nie musiałem przeglądać żadnych PDF'ów i szukać w nich różnych rejestrów oraz sposobów konfiguracji.    
Patrząc na kierunek rozwoju mikrokontrolerów, elektroniki i oprogramowania wszystko idzie w kierunku łatwego pisania kodu nawet kosztem większego kodu wynikowego. Gdyby tak nie było, to nie powstawałby większe pamięci Flash. Nie powstawałyby także środowiska wysokiego poziomu dla mikrokontolerów. Dzięki takiemu podejściu można łatwo podzielić obowiązki programistów przy dużych projektach. Ostatnio czytałem, że powstał jakiś dodatek do Visual Studio w którym można programować mikrokontroler za pomocą C#.
Oczywiście sceptycy i ludzie którzy poznali programowanie na rejestrach dalej będą bronić swojego, bo przecież nie będą uczyć się bibliotek, które są mało optymalne. Takich ludzi rozumiem w 100%, ale nie rozumiem dlaczego zniechęcają do tych bibliotek innych. Ja osobiście wolę napisać kod w kilka minut za pomocą standardowych bibliotek kosztem pamięci Flash niż szukać w PDF'ie konfiguracji rejestrów, które zjadają masę czasu. Przecież pamięć Flash i tak nie jest w pełni wykorzystywana. 
Tu przypomina mi się mój profesor z UMK Turło, który stworzył własny standard kart pomiarowych EuroDriver i programował w kodzie maszynowym. Czyli taki asembler bez mnemoników. Kiedy spytaliśmy się go, dlaczego nie programuje w asemblerze, albo w językach wyższego poziomu, to uczciwie powiedział, że z przyzwyczajenia. Powiedział także, że mnemoniki i biblioteki w jego latach zmieniały się tak często, że łatwiej było nauczyć się ich odpowiedników w kodzie szesnastkowym niż ciągle uczyć się nowych bibliotek.  Pewnie takie samo podejście mają ci wszyscy przeciwnicy bibliotek.

Oczywiście czasem będziecie musieli skorzystać z rejestrów mikrokontrolera. Powody będą różne począwszy od chęci zrozumienia jakiegoś nieznanego kodu  pobranego z internetu, a skończywszy na braku Flasha, albo po prostu z czystej ciekawości. Tu z pomocą przychodzi User Manual, który można ściągnąć ze strony producenta naszego procka. Dla STM32 jest dostępny tu: http://www.st.com