fbpx

Każdy był kiedyś początkującym. Dawniej w celu zdobycia wiedzy przeszukiwało się biblioteki. Dzisiaj Google’a. Skoro tu trafiłeś to pewnie chociaż raz w życiu wpisałeś w wyszukiwarkę frazę “Jak zacząć z STM32?” lub podobną. Nie ma jednej, właściwej recepty. Pozwól, że przedstawię Ci mój punkt widzenia na to, w jaki sposób rozpocząć naukę programowania STM32.

Język

Pierwszym językiem, który powinieneś opanować w podstawowym stopniu jest język angielski. Tak, angielski. Jeżeli jeszcze nie znasz, to jak najszybciej weź się do roboty. Czy to w szkole, czy na kursach. Nawet jakieś kursy online. Uwierz mi, że to jest najważniejszy język jaki powinieneś znać i to nie tylko pod kątem programowania.

Niestety szkoły nie uczą nas tak, abyśmy bez problemu porozumiewali się na całym świecie. Wiem to po sobie. Dopiero kiedy rozpocząłem pracę z zagranicznymi zespołami dowiedziałem się jak beznadziejnie czytam, piszę i mówię po angielsku. Na szczęście, kiedy musisz to bardzo szybko się nauczysz 🙂 Teraz bez problemu na co dzień porozumiewam się zarówno z chińczykami(tzw. chinglisz) jak i z amerykanami.

Kolejnym językiem, jaki powinieneś opanować jest już językiem programowania. Będzie to język C. Można co prawda pisać w czymś innym jak np. microPython, lecz są to w naszej branży języki niszowe. Jeżeli myślisz poważnie o programowaniu embedded oraz późniejszej pracy z tym związanej, musem jest C.

Sprzęt

Nie zaprogramujesz mikrokontrolera nie mając go fizycznie. Można co prawda próbować działać z symulatorami, ale moim zdaniem na początku nie są warte uwagi. Musisz poczuć sprzęt, zobaczyć jak coś mruga czy rusza się. Robiąc zwarcie poczujesz zapach palonego półprzewodnika i wtedy wiesz, że coś zepsułeś. Symulacje są dobre na zaawansowanym poziomie, gdy systemy rozrastają się, a koszt uruchamiania w początkowych fazach projektu na fizycznych komponentach może być wysoki. Poza tym testowanie na symulacji jest szybsze co może być początkowo bardzo ważne.

Płytki bazowe, ewaluacyjne

Jeżeli chcesz programować STM32 to polecam gotowe płytki prosto od ST. Moim zdaniem najlepiej kupić jakieś Nucleo z układem 64-nóżkowym. Kosztują ok 60-90 zł i mają na pokładzie programator. Wszystkie piny mikrokontrolera wyprowadzone są na złącza goldpin. Oprócz własnego złącza goldpinowego dumnie zwanego Morpho, na płytkach Nucleo znajdują się złącza znane z Arduino Uno, przez co można skorzystać również z licznych nakładek.

Dostępne są również płytki Discovery. Są one trochę bardziej rozbudowane w komponenty zewnętrzne. Są to np. akcelerometry, mikrofony czy wyświetlacze. Posiadają też na ogół większe i mocniejsze mikrokontrolery. Taką płytkę również możesz brać pod uwagę jako dla początkującego.

Ostatnią grupą płytek, które mogę polecić to chińskie BluePill. Jest to naprawdę mała płytka z mocnym mikrokontrolerem STM32F103. Jej największą wadą jest brak programatora. Ten musisz dokupić osobno lub jeśli masz, to użyć tego z zestawu ST.

Komponenty peryferyjne

Coś do tego mikrokontrolera musisz podłączyć. W zestawach na ogół jest tylko jedna dioda i czasami przycisk. Wielkich rzeczy z tego nie zrobisz. Wyjątkiem jest jedynie wspomniane wyżej Discovery.

Według mnie będziesz potrzebował na przykład:

  • Jakąś płytkę stykową – wygodniej jest łączyć na płytce niż miec wszystko wiszące w powietrzu
  • Diody, przekaźniki – włączanie i wyłączanie urządzeń, efekty świetlne.
  • Wyświetlacze – LCD 16×2 jest już leciwy, ale może być. Poza tym polecam OLED oraz jakiś TFT.
  • Czujniki – dają najwięcej radości. Akcelerometry, temperatura, ciśnienie, wilgotność, natężenie światła, smogu. Jest tego mnóstwo.

W zasadzie możesz próbować podłączać wszystko, co chcesz. W STM32 masz tyle mocy, że nie zabraknie Ci jej przez dłuższy czas.

Oprogramowanie

W czymś te programy trzeba pisać. Na szczęście ST wspiera swoje mikrokontrolery bardzo prężnie. Mają całkiem spory zestaw oprogramowania wspomagającego tworzenie projektów.

ST MCUFinder

Pierwszym z takich programików jest ST MCUFinder. Bardzo przydatne narzędzie do wyszukiwania odpowiedniego MCU do naszego projektu. ST wypuściło tyle układów, że ciężko to wszystko spamiętać. 

STM32CubeMX

Narzędzie służące do generowania początkowego kodu. Przyjemny interfejs graficzny pozwala skonfigurować wszystkie peryferia mikrokontrolera w wygodny sposób. Nie trzeba mieć ogromnej wiedzy, aby dokonać podstawowych ustawień. Na koniec z tego, co wyklikasz wygenerowany zostanie cały projekt i to dostosowany pod wybrane wcześniej IDE. W projekcie tym będą wszystkie niezbędne drivery oraz peryferia skonfigurowane tak, jak chciałeś. Bajka.

STM32 ST-LINK Utility

Program do obsługi programatora ST-Link. Zawiera niezbędne sterowniki do programatora. Z jego poziomu możesz kasować lub wgrywać Twój kod. Poza tym daje na przykład możliwość blokowania pamięci flash, aby zabezpieczyć program przed niepowołanym kopiowaniem.

IDE

Tutaj wybór jest spory. Ostatnio ST wydało swoje IDE pod nazwą STM32CubeIDE. Używam go od pewnego czasu i myślę, że niedługo wydam swoją recenzję na jego temat.

Pozostałe środowiska lub notatniki opisałem niedawno na blogu we wpisie: IDE albo nie IDE – 8 najlepszych IDE dla STM32. Warto sprawdzić.

Skąd czerpać wiedzę?

Jest mnóstwo dobrych źródeł wiedzy. Z angielskim nie pomogę za dużo, ale polecam dużo praktykować. Język C na samym początku wystarczy Ci naprawdę totalna podstawa. Kurs z C nie musi być stricte na mikrokontrolery. Może być programowanie na PC. Może być, chociażby ten. C jest tak starym językiem, że nie ma powodu brać się za jak najnowsze kursy 🙂

Jeżeli chodzi natomiast o STM32, to pierwsze do głowy przychodzą książki. Niedawno jedną taką recenzowałem. Jest to dobry sposób, ale niestety bardzo szybko się dezaktualizuje. Technologie idą tak szybko do przodu, że papier czasami nie nadąża. Oczywiście bazowa wiedza rzadko kiedy się zmienia, lecz zaczynając przygodę od nowa niechętnie będziesz chciał się zastanawiać czy biblioteki nadal są wspierane oraz czy IDE jeszcze nadaje się do użytku. Jeśli chodzi o język książek, to w Polsce można znaleźć stosunkowo niewiele pozycji. Polecam złapać bakcyla po polsku, a zgłębiać po angielsku.

Można czytać blogi takie jak na przykład mój. Niestety takie rozwiązanie jest z jednego powodu złe – wiedza nie jest usystematyzowana ani ułożona przystępnie krok po kroku. Każdy wpis najczęściej poświęcony jest jednemu zagadnieniu i nie specjalnie łączy się z pozostałymi. Jest to idealny sposób na dopełnienie wiedzy. 

Oczywiście powstają serie wpisów na blogu połączone w kursy. Nawet w Polsce ukazało się kilka nawet dobrych, ale nie aż tak jakbyśmy chcieli. Mam jedno zastrzeżenie co do kursu w formie pisanej. Ciężko jest wyczuć emocje autora oraz to, co miał na myśli w niektórych momentach. Dobrze jak kurs taki posiada dużo screenów ze schematami, wykresami itp.

Poza czytaniem polecam bardzo poradniki w formie wideo. Nic nie zastąpi kontaktu uczeń-nauczyciel nawet, jeśli będzie on wirtualny. Jest masa kanałów na YouTube z krókimi poradnikami i opisami. Niestety podobnie jak blogi, wiedza może być nieusystematyzowana i początkującemu będzie ciężko połapać się co robić w pierwszej kolejności. Dodatkowo zdecydowana większość dobrych materiałów o STM32 jest poza granicami naszego kraju, a co z tym idize – po angielsku.

Jest jeszcze coś takiego jak wideo kursy online. W ostatnim czasie bardzo popularne stała się ta forma przekazywania wiedzy. Sam uczestniczyłem w kilku kursach o różnej tematyce i uważam, że dobrze zrobiony kurs uczy najlepiej. Niestety nie widziałem solidnego kursu STM32 w języku polskim. Na Udemy po angielsku również te kursy nie budzą mojego zaufania. Dlatego specjalnie dla moich czytelników postanowiłem, że stworzę taki kurs po polsku. Zanim jednak kurs zostanie ukończony, przygotowałem dla Ciebie dokument w którym pomogę Ci stworzyć swój pierwszy projekt na STM32. Możesz go pobrać klikając w baner.

kurs stm32

 

 


15 Komentarzy

J. · 06/07/2019 o 14:56

Z CubeMX jest teraz spory problem. Przynajmniej jak się instaluje najnowszą wersję. Na forbocie na forum kilku użytkowników zgłaszało podobny problem.

    Mateusz Salamon · 06/07/2019 o 16:02

    Ale jaki to jest problem bo nie powiedziałeś? Nie widziałem na Forbocie nic w tym temacie 🙁

      J. · 07/07/2019 o 21:05

      Pierwszy program leci i jest ok. Przy zmianie konfiguracji w Cube po skompilowaniu programu plik hex zostaje wyczyszczony. W moim przypadku nie pomagało nawet tworzenie nowego projektu. Nawet pojawiały się jakieś głupoty w stylu dioda miała mrugać a swiecila się cały czas.
      O czyszczeniu hex pisali właśnie na forbocie.

      J. · 07/07/2019 o 21:15

      https://forbot.pl/forum/topic/9226-kurs-stm32-f4-4-pierwszy-projekt-gpio-przerwania/page/6/#comments
      Tutaj dyskusja na ten temat, panowie potwierdzili problem w ST 🙁 Szkoda, bo nauka byłaby znacznie szybsza, ale może dzięki temu więcej się nauczę.

      Mateusz Salamon · 07/07/2019 o 22:41

      To jest ciekawe co piszą. Pierwszy raz widzę ten problem. Zuważyłem, że problem dotyczy głównie plugina Cube’a. Ja korzystam albo z osobnej instancji tzn. Workbench + Cube standalone albo ostatnio wyłącznie z zespolonego narzędzia STM32CubeIDE. Na żadnym z nich nie miałem dziwactw a staram się zawsze mieć najnowsze oprogramowanie.

    J. · 08/07/2019 o 09:55

    Hmmm ciekawe, była tam taka opcja, tj. jakby dwa osobne programy, muszę spróbować 🤔

      J. · 31/07/2019 o 19:33

      Efekt jest podobny. Plik ma 11KB, za pierwszym razem zapaliło diodę niebieską, ok tak miało być, za drugim miała mrugać- nic się nie działo, była zapalona. Trzeci program ze zmienioną konfiguracją w Cube miał zapalać i gasić na przemian obie diody. Zapalił tylko zieloną i tyle… Przy kolejnym grzebaniu w programie zapalił niebieską…
      Zaczynam się zastanawiać czy to nie moja wina… Mam evalboard z STM32L152, być może seria L się inaczej obsługuje a ja tego nie ogarniam.

      Mateusz Salamon · 31/07/2019 o 19:39

      Ciekawe zachowanie. Kiedyś robiłem coś na L1, ale nie miałem problemów. Nie mam żadnego na stanie, aby sprawdzić… Takie pytanko: zapisujesz modyfikwowane pliki przez budowaniem? W ustawieniach projektu masz tez taki tickbox jak ‘Save project before build’. Ja kilka razy jeszcze za czasów AVR wściekałem się, że nic się w programie nie zmienia zanim przypominałem sobie o tym boxie.

      J. · 06/08/2019 o 22:50

      Tak, oczywiście.Przy każdej zmianie najpierw zapisuję, a dopiero potem buduję.

Sławek · 30/06/2019 o 13:43

tytuł artykułu taki typowy z FB – genialny 🙂

    Mateusz Salamon · 01/07/2019 o 21:48

    Hehe dzięki. Musi jakoś przyciągać wzrok 🙂

bartek · 18/06/2019 o 09:18

Witam. Super stronka duzo idzie sie dowiedzieć. Mam pytanie czy planujesz napisać kurs dla chińskiej płytki BluePill (srodowisko moze być adruino ide) od podstaw tak jak to jest z arduino na forbot.pl ?? Pewnie wielu by to ułatwiło start. Dla amatorow takich jak ja.

    PiotrP · 18/06/2019 o 22:52

    BluePill ma dość dużó opisów po angielsku, natrafiłem na tutorial jak go doprowadzić do kompatybilności z Arduino IDE. Poradnik był napisany tak jasno, że znając słabo język angielski można było powtórzyć cały proces a całość obyła się bez programatora, chyba używałem tylko konwertera USB/serial. Muszę wrócić do płytek które kupiłem na promocji po 1,18$ i nie wierzyłem że ruszą 🙂

    Mateusz Salamon · 18/06/2019 o 22:57

    Hej! Raczej nie zobaczysz u mnie na blogu Arduino w kontekście STM32 😉

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Serwis wykorzystuje pliki cookies. Korzystając ze strony wyrażasz zgodę na wykorzystywanie plików cookies. Więcej informacji znajdziesz na stronie Polityka Prywatności

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close