STM32 #0: Konfiguracja środowiska Keil i pierwszy projekt

Wstęp
Żeby w ogóle zacząć zabawę z mikrokontrolerami, trzeba zaopatrzyć się w środowisko. Jednym z dostępnych jest Keil. Z całą pewnością nie należy on do najbardziej przyjaznych środowisk, ale ma jedną niewątpliwą zaletę, którą jest dostępność bibliotek do wszystkich najpopularniejszych mikrokontrolerów architektury ARM Cortex z poziomu środowiska. Jest też często używany w firmach, które profesjonalnie zajmują się programowaniem ARM-ów. Keil znajduje się w pakiecie MDK-ARM, który można pobrać z oficjalnej witryny. Posiada on kilka ograniczeń (między innymi ograniczenie wielkości programu do 32KB), jednak na ten moment nie będzie to problemem.
Instalacja bibliotek
Pierwszą rzeczą, jaką należy zrobić jest zainstalowanie paczek z bibliotekami. Robimy to za pomocą narzędzia Pack Installer, które można uruchomić z poziomu Keil µVision, poprzez wciśnięcie ikony PackInstaller na pasku narzędzi. Rozwijamy drzewo STMicroelectronics, a następnie wybieramy serię, której będziemy używać. Kurs ten będzie tworzony przy wykorzystaniu procesora STM32F429, zatem wybieramy „STM32F4 Series” i instalujemy „Keil::STM32F4xx_DFP”. Jeśli masz inny mikrokontroler  – bez obaw. Programy zadziałają z całą rodziną F4, może być jedynie wymagana zmiana pinów lub niektórych peryferiów (słabsze wersje mają mniej wyprowadzeń, mniej timerów itp.).

Stworzenie projektu
Projekt tworzymy wybierając Project -> New µVision Project. Dla projektu tworzymy folder, po czym wpisujemy nazwę i klikamy „Zapisz”. Otworzy się okno, w którym wybieramy posiadaną wersję mikrokontrolera. W kolejnym oknie zaznaczamy, których bibliotek chcemy używać. Załóżmy na ten moment, że chcemy jedynie zmienić stan pinu, więc rozwijamy drzewko „Device”, a następnie „STM32Cube HAL” i wybieramy „GPIO”, czyli General Purpose Input Output. Keil poinformuje nas, że wymagane są dodatkowe komponenty:

missingcomponentsPo kliknięciu przeniesie nas do miejsca, w którym możemy zaznaczyć dany komponent. Sytuacja powtórzy się jeszcze kilka razy, za każdym razem robimy tak samo. W Device -> STM32 Cube Framework (API) zaznaczamy Classic, ponieważ nie będziemy używać STM32CubeMX. Gdy pole stanie się puste, to znaczy, że dołączyliśmy wszystkie biblioteki, które są potrzebne do obsługi GPIO.

Konfiguracja
Po wykonaniu powyższych należy jeszcze zmienić ustawienia dotyczące debuggera. W drzewie projektu klikamy PPM na „Target 1”, a następnie „Options for Target ‚Target1’…”. Przechodzimy do karty „Debug” i zmieniamy debugger na używany przez nas. Jeśli masz płytkę prototypową (np. Discovery lub Nucleo) wybierz „ST-Link Debugger” i wciśnij Settings. Przejdź na kartę „Flash Download” i zaznacz „Reset and Run”. Bez tego program nie uruchomi się automatycznie po jego wgraniu i wymagane będzie wciśnięcie przycisku reset. Zatwierdź zmiany przez wciśnięcie OK, ale nie zamykaj jeszcze poprzedniego okienka.

flashdownload

Przechodzimy teraz do karty C/C++, gdzie warto zaznaczyć opcję „C99 Mode”. Oznacza to, że będziemy pisać w standardzie C99. Domyślny C90 jest przestarzały, wymaga np. deklaracji zmiennych na początku bloku.

Na sam koniec kliknij PPM na „Source Group 1” i wybierz „Add New Item…”, co pozwoli na dodanie pliku źródłowego do projektu. Wybierz rozszerzenie .c i nazwij go „main”. W tym momencie masz już skonfigurowane środowisko, gotowe do napisania pierwszego programu, czym zajmiemy się w kolejnej lekcji.