background image

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. 

 

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 

 

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.cmain.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. 

 

 

background image

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. 

background image

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 

background image

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. 

background image

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 
 

background image

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. 

 

 

background image

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.  

background image

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 
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.hstm32f4xx_it.hstm32f4xx_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. 

background image

Tworzenie projektu w uVision 4.6, cześć II, wersja z 28.10.2012

 

 

 

 

background image

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ć.