Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012
2. Przygotowanie katalogów i plików do projektu
Aby móc skorzystać z możliwości środowiska uruchomieniowego uVision, firmy Keil do programowania
mikrokontrolerów STM32 w języku C (lub asemblerze) należy stworzyć tzw. projekt, do którego będą
dołączone różnego typu pliki. Przed rozpoczęciem pracy z uVision lepiej wcześniej przygotować katalogi i
niektóre pliki dla projektu.
Przedstawiona poniżej procedura przygotowania projektu jest jedną z możliwych propozycji ustawienia
katalogów i plików dla projektu. Można też skorzystać z gotowych ustawień zawartych w katalogach
biblioteki lub ustawić według swoich wymagań. Procedura przygotowania ma na celu uporządkowanie
katalogów i podkatalogów projektu aby można było łatwo odnajdywać pliki i pisać bardziej zaawansowane
projekty. Należy też wskazać kompilatorowi wszystkie niezbędne pliki z funkcjami bibliotecznymi i plikami
nagłówkowymi.
Utworzyć nowy katalog na wybranym dysku, np. d:\projekt1. Następnie utworzyć podkatalogi
debug, inc, lst, src. W debug będą umieszczane wszystkie pliki po kompilacji, np. plik hex. W inc
umieszczamy wszystkie niezbędne plik nagłówkowe typu *.h. Pliki źródłowe w C będą w podkatalogu
src. W lst kompilator umieści pliki z tzw. listingiem.
Plik z biblioteką STM32F4xx_DSP_StdPeriph_Lib_V1.0.1.zip rozpakowujemy np. do katalogu
c:\Keil\ARM.
Do tworzenia nowego projektu wykorzystamy gotowe pliki, które są umieszczone w podkatalogach
biblioteki STM32F4xx_DSP_StdPeriph_Lib i są przewidziane dla środowiska uVision.
Z
katalogu
biblioteki
(C:\Keil\ARM\STM32F4xx_DSP_StdPeriph_Lib_V1.0.1\Project\
STM32F4xx_StdPeriph_Templates) kopiujemy pliki: main.h, stm32f4xx_it.h, stm32f4xx_conf.h do
naszego katalogu d:\projekt1\inc, pliki main.c, system_stm32f4xx.c, stm32f4xx_it.c kopiujemy do
katalogu projektu d:\projekt1\scr
Z
katalogu
biblioteki
(C:\Keil\ARM\STM32F4xx_DSP_StdPeriph_Lib_V1.0.1\Libraries\-
CMSIS\Device\ST\STM32F4xx\Include) kopiujemy pliki: stm32f4xx.h do naszego katalogu
d:\projekt1\inc
Z katalogu biblioteki (C:\Keil\ARM\STM32F4xx_DSP_StdPeriph_Lib_V1.0.1\Libraries\CMSIS\-
Device\ST\STM32F4xx\Source\Templates) kopiujemy plik: system_stm32f4xx.c do naszego
katalogu projektu d:\projekt1\scr.
UWAGA !! proszę nie używać polskich liter i znaku spacji przy nazwach katalogów (folderów) i
plików, które będą używane przez projekt i środowisko uVision.
Przy pisaniu programu użytkownika pliki main.c, main.h będą wymagały napisania własnych funkcji i kodu. Z
tego powodu należy je zmodyfikować przy pisaniu programu. Wynika to z faktu, że korzystamy z gotowych
plików napisanych dla konkretnego programu. Nie wszystkie zmienne i funkcję, które są w skopiowanych
plikach będą przez nasz używane i aby nie mięć błędów w trakcie kompilacji należy usunąć lub
zakomentować pewne fragmenty tych plików. Niektóre pliki systemowe jak np. stm32f4xx_it.c też będą
wymagały pewnych modyfikacji.
Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012
3. Tworzenie projektu w środowisku uVision
Po utworzeniu katalogu projektu i skopiowaniu wybranych plików z biblioteki do projektu uruchomiamy
program uVision.
Widok ekranu po uruchomieniu programu uVision4 i zamknięciu wszystkich projektów
Jeżeli jest otwarty jakiś projekt, zamknąć go, w menu Project-Close Project.
Z menu Project wybrać New uVision Project – pojawi się okienko jak na rysunku, wejść do katalogu
projektu i wpisać nazwę projektu np. gpio_test .
Okienko do utworzenia i zapisania nowego projektu.
Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012
Po wpisaniu nazwy i naciśnięciu przycisku Zapisz pojawi się okienko do wyboru firmy i konkretnego
typu mikrokontrolera. Wybieramy firmę STMicroelectronics i układ typu STM32F407VG.
Po wyborze mikrokontrolera program uVision wie jakie ma układ parametry. Jest to niezbędne dla
debugera w środowisku uVision.
Okienko do wyboru firmy i mikrokontrolera i dołączenia pliku startowego (Startup Code)
Po wyborze mikrokontrolera program zapyta czy wstawić do projektu tzw. plik startowy (Startup
Code) , wybrać klawisz Tak.
Po wstawieniu pliku startup_stm32f4xx.s struktura projektu powinna wyglądać jak na rysunku poniżej.
Okienko projektu po dołączenia tzw. pliku startowego
Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012
W okienku Project wybieramy Target1 i klikamy prawym przyciskiem myszki, wybieramy Options for
Target1. Lub naciskamy ikonkę tzw. czarodzieja na pasku. Pojawi się okienko do ustawiania parametrów i
opcji projektu. Wybieramy zakładkę Target i zmieniamy ustawienia Xtal na 8.0 MHz, (taki rezonator
kwarcowy jest zainstalowany na płytce STM32F4-Discovery).
Ustawienie częstotliwości rezonatora kwarcowego
Następnie wybieramy zakładkę Output i przyciskiem Select Folder for Objects wskazujemy podkatalog
debug w naszym projekcie.
Przechodzimy do zakładki Listing i przyciskiem Select Folder for Listings wybieramy podkatalog lst w naszym
projekcie.
Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012
Wybieramy zakładkę C/C++ i w okienku Define należy wpisać USE_STDPERIPH_DRIVER. Zmuszamy
kompilator do wyboru użycia biblioteki do obsługi peryferiów mikrokontrolera. W tej samej zakładce należy
wskazać ścieżki dostępu do biblioteki, plików źródłowych i plików nagłówkowych wymaganych do projektu.
Dokonuje się tego przy pomocy przycisku okienka Include Paths.
Należy wskazać ścieżki dostępu do podkatalogów inc, scr, z katalogu projektu i ścieżki dostępu do
plików w bibliotece.
C:\Keil\ARM\STM32F4xx_DSP_StdPeriph_Lib_V1.0.1\Libraries\STM32F4xx_StdPeriph_Driver\inc
C:\Keil\ARM\STM32F4xx_DSP_StdPeriph_Lib_V1.0.1\Libraries\STM32F4xx_StdPeriph_Driver\src
C:\Keil\ARM\STM32F4xx_DSP_StdPeriph_Lib_V1.0.1\Libraries\CMSIS\Include
Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012
Przechodzimy do zakładki Debug i wybieramy Use z listy debuger typu ST-Link Debugger. Po naciśnięciu
przycisku Settings pojawia się nowe okienko z trzema zakładkami. Jeżeli połączenie po USB z płytką jest
poprawne, to w zakładce Debug program wykrywa urządzenie Unit (ST LINK/V2) i typ mikrokontrolera SW
Device (ARM CoreSight SW-DP). Należy ustawić tryb pracy debugera Port na SW.
Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012
Po przejściu do zakładki Flash Download w okienku Programming Algoritm dodajemy typ układu (jeżeli go
nie ma), który będzie programowany. Naciskamy przycisk Add i z listy wybieramy STM32F4xx Flash.
Zaznaczamy też opcję Reset and Run. Ustawienia debugera ST-Link potwierdzamy przyciskiem OK.
Przechodzimy do zakładki Utilities i w opcji Use Target Driver for Flash Programming wybieramy ST-Link
Debugger.
Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012
Po przygotowaniu parametrów i opcji, kolejnym etapem będzie dołączenie skopiowanych plików i biblioteki
do projektu.
W okienku Project wybieramy Target1 i klikamy prawym przyciskiem myszki, wybieramy Add Group i
dodajemy grupę o nazwie StdPeriphDrv. Powtarzamy czynność i dodajemy do Target1 grupę o
nazwie CMSIS.
Grupę o nazwie Source Group 1 możemy zmienić na nazwę UserCode klikając jeden raz lewym
przyciskiem myszki.
W okienku Project wybieramy grupę UserCode i klikamy prawym przyciskiem myszki, wybieramy
Add Files to UserCode i wskazujemy na plik main.c w katalogu d:projekt1/src i naciskamy przycisk
Add. Podobnie postępujemy z plikami stm32f4xx_conf.h, stm32f4xx_it.h, stm32f4xx_it.c.
Do grupy CMSIS należy dodać plik system_stm32f4xx.c z podkatalogu src, plik system_stm32f4xx.h i
plik stm32f4xx.h z podkatalogu inc. Do grupy CMSIS należy jeszcze dodać pliki core_cm4.h z katalogu
biblioteki C:\Keil\ARM\STM32F4xx_DSP_StdPeriph_Lib_V1.0.1\Libraries\CMSIS\Include.
Do grupy StdPeriphDrv należy dodać pliki misc.c, stm32f4xx_gpio.c, stm32f4xx_flash.c,
stm32f4xx_rcc.c .
Po zakończeniu operacji kopiowania plików wygląd okienka Project w środowisku uVision przedstawia
rysunek poniżej. Jeżeli na symbolu pliku jest znaczek kluczyka, to oznacza że plik jest tylko do odczytu.
Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012
Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012
4. Pierwszy program dla STM32F4
Po dodaniu grup i plików do poszczególnych grup, projekt jest prawie gotowy. Główny plik programu,
main.c zawiera funkcję main() od, której zaczyna się program użytkownika. Otwieramy ten plik klikając na
nazwę pliku w okienku Project. Z powodu, że pliki main.c i main.h zostały skopiowane z biblioteki zawierają
już jakiś kawałek programu w języku C. Musimy go zmodyfikować aby napisać swój własny pierwszy program
na mikrokontroler STM32F4 zamontowany na płytce.
Można też całkowicie skasować zawartość pliku main.c i main.h i wpisać wszystko od początku. Pewnych
modyfikacji będzie wymagał też plik: stm32f4xx_it.c.
Przy pisaniu programu przydane będą:
schemat ideowy płytki Discovery,
plik pomocy dla biblioteki,
materiały szkoleniowe dla układu STM32F4
Zadaniem programu będzie mruganie diodami LED, które są zamontowane na płytce i są podłączone do
końcówek portu D. Dioda LD4 do PD12, LD5 do PD13, LD6 do PD14 i LD7 do PD15. Aby zaświecić diodę należy
ustawić stan 1 na wybranym wyjściu portu. Częstotliwość mrugania około kilka razy na sekundę.
Należy podmienić zawartości następujących plików: main.c, main.h, stm32f4xx_it.c.
Następnie wybieramy Project -> Rebuilt All Target Files lub naciskamy ikonkę Rebuilt. Po poprawnej
kompilacji w okienku Build Output nie powinno być błędów ani ostrzeżeń. Następnie wybieramy z menu
Flash -> Download lub naciskamy ikonkę LOAD i program zostanie wgrany do mikrokontrolera na płytce.
Diody LED powinny mrugać.