Ta strona używa ciasteczek (plików cookies), dzięki którym może działać lepiej. Dowiedz się więcejRozumiem i akceptuję
Tylko do jutra!Rabat 20% + kurier za 0zł - książki o elektronice i programowaniu szczegóły promocji »

Kurs STM32 – #1 – Zaczynamy! Spis Treści

Programowanie 10.09.2015 Damian (Treker)

KursSTM32_1W pewnym momencie AVRy to za mało, pojawia się ochota na poznanie mocniejszych układów. Tutaj najczęściej wybór pada na tanie STM32.

Stąd pomysł na nowy kurs. Łącznie składa się on z 13 artykułów omawiających najważniejsze peryferia STM32 w praktyce.

Nawigacja serii artykułów:
następna część »

Kup zestaw elementów i zacznij naukę w praktyce! Przejdź do strony dystrybutora »

Dlaczego STM32?

Jakiś czas temu poszukiwałem dobrej alternatywy dla wysłużonych 8-bitowych AVRków. Moim celem była nauka czegoś nowego, dlatego zdecydowałem się na mocniejsze STM32. Po realizacji kilku projektów doceniłem różnorodność dostępnych mikrokontrolerów, tanie zestawy oraz darmowe kompilatory. Warto również wspomnieć o wygodnej bibliotece udostępnianej przez producenta, która ułatwia i przyspiesza pisanie programów.

Co ważne, szczególnie w projektach hobbystycznych, cena samych układów jest niska. Najtańsze z STMów dostaniemy już za kilka złotych.

Zawartość kursu STM32!

Stawiamy na praktykę, dlatego wszystkie peryferia zostaną omówione na konkretnych przykładach. Kurs omawia wszystkie aspekty, które są niezbędne do wykorzystywania STMów we własnych projektach. Od odrobiny wstępu na temat rodziny mikrokontrolerów, przez instalację środowiska i wykorzystywanie portów GPIO, kończąc na obsłudze dodatkowych peryferiów takich jak akcelerometr oraz wyświetlacz graficzny!

Informacje o użytej platformie oraz kompilatorze i sposobie programowania będą przedstawiane w kolejnych artykułach. Kurs składa się z następujących części:

  1. Kurs STM32 – #1 – Zaczynamy! Spis Treści (właśnie ją czytasz)
  2. Kurs STM32 – #2 – Podstawowe informacje o STM32
  3. Kurs STM32 – #3 – Płytka Nucleo, konfiguracja środowiska
  4. Kurs STM32 – #4 – Sterowanie portami GPIO w praktyce
  5. Kurs STM32 – #5 – Komunikacja z komputerem, UART
  6. Kurs STM32 – #6 – Pomiar napięcia, przetwornik ADC
  7. Kurs STM32 – #7 – Liczniki (timery) w praktyce, PWM
  8. Kurs STM32 – #8 – DMA, czyli bezpośredni dostęp do pamięci
  9. Kurs STM32 – #9 – SPI w praktyce, ekspander IO
  10. Kurs STM32 – #10 – SPI w praktyce, wyświetlacz graficzny (zestaw rozszerzony)
  11. Kurs STM32 – #11 – I2C w praktyce, pamięć eeprom
  12. Kurs STM32 – #12 – I2C w praktyce, akcelerometr (zestaw rozszerzony)
  13. Kurs STM32 – #13 – Podsumowanie, QUIZ

Kolejne odcinki będą pojawiały się w regularnych odstępach. Zależnie zaangażowania czytelników.

Dla kogo?

Kurs przygotowany został z myślą o osobach, które mają podstawową wiedzę elektroniczną oraz podstawy wiedzy o jakichkolwiek mikrokontrolerach (można wspierać się kursem Arduino). Część z czytelników będzie na pewno zainteresowana przesiadką z AVR na STM32, dlatego czasami pojawiają się pewne porównania i wyjaśnienia względem tej rodziny mikrokontrolerów. Nie jest wymagana żadna wiedza o ARM i STM32!

O autorze kursu

Pierwotnie kurs miał być pisany przeze mnie. Jednak ostatecznie postanowiłem znaleźć dla Was bardziej doświadczonego nauczyciela. Autorem tego kursu jest Piotr Bugalski, pewnie większość z Was kojarzy go jednak z pseudonimu Elvis, którym posługuje się na naszym forum.

Piotr zajmuję się programowaniem systemów wbudowanych nie tylko hobbystycznie, jest związany z tym tematem również zawodowo. Wierzę, że nauka od doświadczonego praktyka, będzie dla Was atrakcyjną formą poznawania układów z rodziny STM32.

Źródło: materiały prasowe STM32.

Źródło: materiały prasowe STM32.

Sprzęt do kursu STM32

Tak jak w przypadku kursów podstaw elektroniki oraz programowania Arduino, również tym razem przygotowaliśmy dla Was wygodne zestawy wszystkich elementów. Dostępne są aż 4 warianty:

Gwarancja pomocy na forum dla osób, które kupią zestaw Forbota!

Tym razem dostępne zestawy różnią się zawartością. Jeśli zdecydujecie się na zakup zestawów rozszerzonych, to w komplecie otrzymacie moduł akcelerometru i magnetometru oraz wyświetlacz graficzny. Dzięki temu będziecie mogli poznać interfejsy ISP oraz I2C jeszcze lepiej!

W przypadku zestawów podstawowych, obsługę ISP oraz I2C przećwiczycie na pamięci eeprom oraz ekspanderze portów. Oczywiście niezbędne układy do tych testów znajdują się również w zestawach rozszerzonych. Podsumowując wersje:

  • Rozszerzona: pamięć eeprom, ekspander, LCD graficzny, akcelerometr
  • Podstawowa: tylko pamięć eeprom i ekspander.

W skład zestawu rozszerzonego wchodzi, aż 128 elementów!

Jesteście zainteresowani, która platforma według nas jest najlepsza do nauki STMów? Możecie poczekać do kolejnych części kursu lub sprawdzić samodzielnie już teraz w zestawach:

Zestaw elementów do przeprowadzenia ćwiczeń

Gwarancja pomocy na forum dla osób, które kupią poniższy zestaw!

Zestaw ponad 120 elementów do przeprowadzenia wszystkich ćwiczeń z kursu można nabyć u naszych dystrybutorów! Dostępne są wersje z płytką Nucleo lub bez niej!


Kup w Botlandzie »

Super, podoba mi się!

Jeśli jesteś zainteresowany nowym kursem i chcesz, aby powstawały kolejne rozważ zakup zestawu! Kupując cały komplet zaoszczędzisz, a dodatkowo wspomożesz rozwój Forbota! Możesz również nabyć zestawy gadżetów lub np.: nasz kubek!

Co więcej, korzystając z poniższego formularza możesz zapisać się na powiadomienia o nowych artykułach publikowanych na Forbocie. Nie ominie Cie wtedy żaden nowy odcinek naszego kursu!

Kup zestaw elementów i zacznij naukę w praktyce! Przejdź do strony dystrybutora »

Powiadomienia o nowych, darmowych artykułach!

Komentarze

bambosze_babuni

18:44, 10.09.2015

#1

Czekam! :)

szyss

20:50, 10.09.2015

#2

"wygodnej bibliotece udostępnianej przez producenta, która ułatwia i przyspiesza pisanie programów.)". Być może tak jest jak piszecie, ale ogarnąć te biblioteki to jak by nie było trochę czasu zajmuje, do tego należało by dobrze przestudiować dokumentację procesora. No i tu się rodzi problem, kto coś już tam pogrzebie w tych bibliotekach, to prawdopodobnie zajrzy do dokumentacji pobieżnie (bo przecież coś tam działa) i nie będzie w stanie wyciągnąć z procka maksimum. No może za dużo powiedziane, będzie tylko umiał to co ktoś w bibliotekach pokazał, śmiem twierdzić że dużo konfiguracji i możliwości zostanie pominięta. Trochę siedzę w STM32, gdzieś od 2 lat i nie korzystam z tych przepasionych bibliotek. Teraz na topie są biblioteki "HAL" od czasów STM32CubeMX (tak mi się wydaje bo nie używam), prosta operacja jest wywoływana przez funkcję, a tamta jeszcze gdzieś tam wywołuje coś innego (poprzednie Standard Peripheral Libraries też tak działały). Niekiedy wystarczą 2 linijki, zamiast 2 wypasionych funkcji. Kurs operujący na rejestrach był by na prawdę dużo bardziej wartościowy, oczywiście z drugiej strony był by zniechęcający, bo jak to można wklepywać bity "do tylu rejestrów" żeby ustawić "głupi port". Choć pracuje na STM32 to staram się nie przekraczać 8 MHz, wystarczy przecież dobra znajomość procka, a nie megaherce.

Pozdrawiam

Treker
Autor wpisu
Administrator

21:11, 10.09.2015

#3

szyss, to są dwa obozy, tak jak Linux vs. Windows :)

Kurs został oparty na bibliotekach, ponieważ ciężko wskazać mi zastosowania hobbystyczne, gdzie okaże się to niewydajnym podejściem. Biblioteki pozwalają na szybkie uzyskiwanie efektów, a to jest najważniejsze w nauce - widoczne efekty. Przyjdzie czas na zagłębianie się w rejestry, ale nie na początku :)

Elvis

21:20, 10.09.2015

#4

Napisanie kursu programowania to niełatwe zadanie. Zawsze znajdzie się ktoś, kto powie - można to zrobić lepiej, albo chociaż można to zrobić inaczej. Jak chodzi o bibliotekę, to dyskusja o wyborze StdPeriph miała miejsce jakiś czas temu. Na pewno ktoś powie - dlaczego nie Cube? Ktoś inny powie - dlaczego nie zapisy do rejestrów? Kilka lat temu prowadziłem podobną dyskusję, jeszcze na nieco słabszych mikrokontrolerach. Usłyszałem, że programowanie w C nie ma sensu, przecież kompilator generuje beznadziejny kod. W asemblerze można uzyskać lepszy efekt....

Problem jest taki, że musimy dokonywać pewnych wyborów, czasem za cenę wydajności uzyskać np. większą czytelność programu. Pisanie w asemblerze z bezpośrednim dostępem do rejestrów jest jednym ze skrajności - daje absolutnie maksimum wydajności (i niech mi nikt nie mówi że kod w C jest wydajny ;-) ). Drugi biegun to programowanie np. w Pythonie, Basic-u, czy Javascripcie - wbrew pozorom, można tak programować na mikrokontrolery. Niestety skrajności mają wady, ale i zalety. Z jednej strony możemy dostać kod, ktory wyciska maksimum ze sprzętu, ale poza autorem kodu nikt nie rozumie jak to działa (Write-only code). Drugi biegun - kod obiektowy, piękny i napisany zgodnie z najnowszymi trendami, ale jednocześnie potwornie niewydajny.

StdPeriph to pewnego rodzaju kompromis - mniejsza wydajność niż gołe rejestry, z drugiej strony większa łatwość uczenia się nowego środowiska. Jako ciekawostkę wspomnę tylko, że większość osób, które programuje na poziomie rejestrów, pierwsze co robi, to tworzy własną bibliotekę - po prostu bezpośredni zapis jest za skomplikowany.

StdPeriph jest w tej chwili pewnego rodzaju standardem dla STM32. Jest to sprawdzona i przetestowana biblioteka. Można na jej temat znaleźć wiele książek, kursów oraz dokumentacji. W przyszłości Cube HAL prawdopodobnie zastąpi StdPeriph, jednak obie bibilioteki są podobne, więc czas poświęcony na naukę StdPeriph na pewno zaprocentuje w przyszłości.

Harnas

21:33, 10.09.2015

#5

Drobna literówka, ostatni zestaw powien się nazywać:

Cytat:

Zestawy elementów bez płytki Nucleo – wersja rozszerzona

Teraz pisze że jest z płytką :)

pawel

21:39, 10.09.2015

#6

Zawsze mam dylemat czy pisać program wykorzystujący biblioteki czy pracować tylko na rejestrach. Przeważnie piszę pod avr i używam bibliotek arduino, ale i tak tworze kolejne funkcje które obsługują sprzęt, więc mam w pewnym sensie dwie biblioteki i już zdarzało mi się, że kod mi się nie mieścił w pamięci. W takich sytuacjach zmieniałem te moje funkcje tak aby pracowały na rejestrach kompilowałem już zwykłym avr-gcc. Wtedy kod się mieścił i jeszcze zostawało miejsca, a samej logiki działania programu nie musiałem zmieniać.

Więc czasem na prawdę lepiej pracować na rejestrach.

Co do stm32 to wolę biblioteki, ale to przez to że nie chciało mi się bardzo zagłębiać w te mikrokontrolery, może w przyszłości nastąpi zmiana.

Treker
Autor wpisu
Administrator

21:47, 10.09.2015

#7

Harnas, dzięki - już poprawione :)

deshipu

22:05, 10.09.2015

#8

Ja jestem bardzo ciekaw tego kursu, na pewno warto go przejść. Wszystkiego nigdy nie da się opisać, ale bardzo się cieszę, że będzie wstęp dający nam jakiś punkt zaczepienia. Mam tylko cichą nadzieję, że kurs nie będzie wymagał Windowsa i będę mógł go przejść także praktycznie, a nie tylko sobie poczytać teorię.

Elvis

22:11, 10.09.2015

#9

deshipu, rozumiem Twój ból odnośnie Windows-a, ale takie były wymagania Szefa ;-) Mogę Cię tylko pocieszyć, że kody pisałem na Mac OS X i później przenosiłem na windę. Więc jeśli używasz np. Linux-a, pozostaje zainstalować Eclipse, plugin do STM32 i można spokojnie korzystać z kursu.

Nawyk

23:15, 10.09.2015

#10

Elvis, szczerze mówiąc to trochę mnie rozczarowałeś tymi standardowymi bibliotekami. Mam wrażenie, że wszystko, co można było o nich powiedzieć, można znaleźć w książkach (np. Galewskiego), tutaj na forum lub ogólnie w internecie. HAL to co prawda dość nowy wynalazek, ale zdążyły już przejąć pałeczkę, zdominować wszelkie ciekawe repozytoria na githubach i dzisiaj trudno np. o współpracę nowych wersji LwIP oraz wielu różnych RTOS z STD. Wydaje mi się też, że narzędzie CubeMX jest strzałem w dziesiątkę dla początkującego, bo znacznie upraszcza sprawę. Nadal wymaga pewnej wiedzy, ale po prostu jest przyjemniej, przejrzyściej i bardziej edukująco, bo wszystko widać jak na talerzu :) Generalnie STD nie ma zbyt dużych perspektyw na przyszłość, a HAL stał się rozwijanym i wspieranym standardem. Może i jest podobny, ale przesiadka bywa bardzo bolesna - doświadczyłem na własnej skórze i wolałem babrać się w rejestrach niż tracić dni na zastanawianie się, czemu nie działa ;) Może jednak dasz się namówić na zmianę planów? :)

Treker
Autor wpisu
Administrator

0:21, 11.09.2015

#11

Nawyk, to była moja decyzja, więc ewentualne uwagi należy kierować do mnie. Jednak na wszystko mam jakiś tam plan do tej pory w kursach elektroniki i Arduino się sprawdził, więc tutaj też wierzę, że tak będzie. Na inne metodyki również przyjdzie czas.

Kurs jest już napisany, dopinane są tylko ostatnie drobiazgi końcowych części, więc zmiany nie wchodzą w grę :) Przygotowania do całości od pierwszych moich szkiców trwały naprawdę długo - spokojnie ponad rok... Wierzę, że kurs oparty o STD zainteresuje początkujących właśnie dlatego, że będą mogli znaleźć dodatkowe materiały, źródła, a dodatkowo chyba 99% wystąpień STM32 na Forbocie dotyczy właśnie problemów z programowaniem z użyciem STD :)

bremenpl

11:30, 13.09.2015

#12

Witam,

Ja takze jestem zawiedziony tym ze kurs bedzie prowadzony na podstawie bibliotek std. W praktyce chodzi o to aby znalezione przyklady jak najmniejszym kosztem zastosowac w swoim projekcie. W tym wypadku bedzie trzeba je jeszcze tlumaczyc na HAL'a. Zdaje sobie sprawe z tego ze std jest bardzo stabilne i uzywane od dlugiego czasu, ale warto sie przystosowywac do zmian. Bibliotek std na F7 juz np nie bedzie, co jest zrozumiale.

Szkoda, mialem nadzieje ze dzieki temu kursowi poznam lepiej biblioteki HAL.

Treker
Autor wpisu
Administrator

11:37, 13.09.2015

#13

bremenpl, tak jak było wspomniane. Pisanie kursów, to kwestia wyborów, zawsze ktoś będzie niezadowolony. W przypadku HAL byłyby to głosy osób liczących na bibliotekę lub rejestry. W tej chwili wśród osób, które zadawały pytania o STMy na forum najwięcej pytań było o programy pisane na bibliotekach, stąd taki wybór.

Przypominam wszystkim, że kurs jest dostępny za darmo i nikt nie ma obowiązku go czytać. Pod Internetowymi kursami Javy nikt nie pisze komentarzy, że jest zawiedziony brakiem kursu Java Scriptu. Więc jeśli kurs oparty jest o biblioteki, to zrozumiem wszelkie uwagi dotyczące programów opartych o biblioteki. Natomiast nie rozumiem narzekania na całe podejście założone w kursie. Już we wstępie jest informacja o bibliotece, jeśli ktoś nie chce jej używać to nie musi - wolny wybór.

Więc proszę osoby chcące ponarzekać na rzeczy nie związane z kursem programowania STM32 w oparciu o bibliotekę STD o zakładanie nowych tematów, bo to nie jest miejsce do dyskusji o HAL ;-)

bremenpl

11:42, 13.09.2015

#14

Nie ma po co sie denerwowac- podrzucam tylko feedback. Dzieki temu bedzie wiadomo ze sa tez osoby zainteresowane HAL'em. Nie napisalem ze nie powinienes robic w ogole tutoriali. Popieram tego typu aktywnosci, niezaleznie od tematyki.

Treker
Autor wpisu
Administrator

11:44, 13.09.2015

#15

bremenpl, tylko wszyscy "wyznawcy HAL" demonizują tutaj, jakby inne podejścia były kategorycznie błędne, a z tego co wiem, to ST jest innego zdanie i daje programistom kilka różnych opcji żadnej nie przekreślając. Kurs jest dedykowany dla początkujących, więc takie komentarze mieszają im tylko w głowach. Tym bardziej, że sprawdza się, że publicznie łatwo krytykować, a jak ktoś popiera, to albo na priv, albo siedzi cicho :)

Pomijam już fakt, że nikt nawet nie zapytał czy w przyszłości pojawi się kurs np.: na rejestrach lub HAL... a jeśli będzie zainteresowanie, to na pewno się pojawi, przecież robione są one dla czytelników, a nie dla mojego wymysłu. Po prostu do tej pory najbardziej była tutaj widoczna potrzeba kursu na bibliotece STD.

bremenpl

11:59, 13.09.2015

#16

Moze moj post rzeczywiscie mogl byc zle odebrany- Jestem bardzo wdzieczny za wlozona prace i jestem pewien ze kurs przyda sie bardzo wielu osobom w tym napewno mnie jesli przyjdzie mi siegnac po std.

Zobacz wszystkie komentarze (23) na forum

FORBOT Damian Szymański © 2006 - 2016 Zakaz kopiowania treści oraz grafik bez zgody autora. vPRsLH.

koliber
Porównanie skrzydeł kolibrów i wirników microcopterów

Kolibry mają za sobą ponad 42 miliony lat ewolucji, nic...

Zamknij