prvi koraki pri delu z stm32 discovery razvojnimi...

38
UNIVERZA V LJUBLJANI FAKULTETA ZA ELEKTROTEHNIKO Prvi koraki pri delu z STM32 DISCOVERY razvojnimi moduli MATEJ MOŽEK Ljubljana, 25. marec 2013 V 1.0 REV. A

Upload: others

Post on 29-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

UNIVERZA V LJUBLJANI

FAKULTETA ZA ELEKTROTEHNIKO

Prvi koraki pri delu z

STM32 DISCOVERY

razvojnimi moduli

MATEJ MOŽEK

Ljubljana, 25. marec 2013 V 1.0 REV. A

Page 2: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni
Page 3: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Ta stran je namenjena katalogizaciji CIP.

Page 4: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni
Page 5: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Predgovor

Pričujoča knjižica " Prvi koraki pri delu z STM32 DISCOVERY razvojnimi moduli" je v prvi vrsti namenjena študentom elektrotehnike smeri Elektronika na univerzitetnem in visokošolskem strokovnem študiju. V knjižici so zbrana navodila, ki ilustrirajo celoten potek nastavljanja projekta v razvojnem okolju Keil µVision4, ki se navadno uporablja pri razvoju mikrokrmilniških projektov z moduli STM32 DISCOVERY. Na Spletu je najdete veliko virov, ki prikazujejo predelovanje zgledov, le redki med njimi pa opišejo tvorbo celotnega projekta od začetka. Navodila obsegajo potek namestitve okolja MDK−Lite, predstavitev modulov STM32 Discovery ter nastavljanje prvega projekta ob uporabi standardnih knjižnic perifernih enot CMSIS. Predstavljeno je pisanje datoteke predlog za prekinitve, nastavljanje orodja za razhroščevanje, nalaganja prevedenega projekta v FLASH pomnilnik ter postopek razhroščevanja. Pisanje programov v jeziku C ni namen te knjižice. Cilj knjižice je predstavitev ustvarjanja kompleksnih mikrokrmilniških projektov v sodobnih načrtovalskih orodjih kot npr. izbrani Keil MDK. Kljub vsej pazljivosti pri pisanju se v zbirki zagotovo nahajajo neodkrite napake, za katere se že vnaprej opravičujem, obenem bom vesel vsake povratne informacije za izboljšanje prihodnjih izdaj.

avtor

Matej Možek

Page 6: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni
Page 7: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Kazalo

Predgovor .................................................................................................................................. 1

1 NAMESTITEV razvojnega okolja MDK-Lite................................................................... 1

1.1 Prenos datotek ............................................................................................................ 1

1.1.1 Prenos z lokalnega strežnika .............................................................................. 1

1.1.2 Prenos z uradne strani ........................................................................................ 1

1.2 Namestitev.................................................................................................................. 2

2 STM32................................................................................................................................ 5

2.1 Razvojne plošče STM32 DISCOVERY .................................................................... 6

2.2 Namestitev gonilnikov ............................................................................................... 7

2.3 Posodobitev ST-Link orodja ...................................................................................... 8

3 IZDELAVA PROJEKTA................................................................................................. 11

3.1 Prenos potrebnih datotek.......................................................................................... 11

3.2 Izdelava projekta ...................................................................................................... 13

3.2.1 Dodajanje glavnega C programa ...................................................................... 20

3.2.2 Vključevanje standardnih knjižnic perifernih enot .......................................... 21

3.2.3 Datoteka predlog za prekinitve (Interrupt template file).................................. 24

3.2.4 Vpetost datotek .c, .h in .s ................................................................................ 24

4 NALAGANJE PROGRAMA .......................................................................................... 25

4.1 Nastavitve................................................................................................................. 25

4.2 Nalaganje.................................................................................................................. 28

5 Razhroščevanje................................................................................................................. 29

i

Page 8: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

ii

Page 9: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

1 NAMESTITEV razvojnega okolja MDK-Lite

MDK-Lite je okrnjena različica razvojnega okolja MDK-ARM podjetja KEIL, ki omogoča razvoj programske opreme za mikrokrmilnike, ki temeljijo na Cortex-M, Cortex-R4, ARM7 ali ARM9 jedru. MDK-Lite verzija je brezplačna in podpira prevajanje do 32 kB kode.

1.1 Prenos datotek

1.1.1 Prenos z lokalnega strežnika

Datoteko za namestitev programa lahko prenesete z lokalnega strežnika. V času pisanja tega dokumenta je zadnja verzija MDK 4.60. Datoteka na tem naslovu se ne bo posodabljala in je lahko čez čas celo nedostopna. Za prenos zadnje verzije priporočamo uporabo postopka, opisanega v naslednjem poglavju.

1.1.2 Prenos z uradne strani

Na uradni spletni strani (https://www.keil.com/demo/eval/arm.htm) moramo najprej izpolniti vprašalnik na sliki 1 (obvezna polja so z odebeljenim tiskom) in nato izberemo Submit.

Slika 1: Vnos podatkov pred prenosom razvojnega okolja z uradne strani Keil.

1

Page 10: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Ko izpolnimo vprašalnik, se odpre novo okno na sliki 2. Z levim klikom na obkroženo povezavo začnemo prenos datoteke za namestitev.

Slika 2: Prenos razvojnega okolja z uradne strani Keil.

1.2 Namestitev

V ciljni mapi, kamor smo shranili datoteko za namestitev, se pojavi ikona (slika 3 levo). Z dvoklikom zaženemo namestitev programa (slika 3 desno).

Slika 3: Posneta datoteka razvojnega okolja MDK Keil (levo) in zagon namestitve (desno).

2

Page 11: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Začne se postopek namestitve programa. Pojavi se pozdravno okno (slika 4 levo), izberemo Next. Sledijo pogoji uporabe (slika 4 desno), se z njimi strinjamo in izberemo Next.

Slika 4: Pozdravno okno (levo) in pogoji uporabe (desno).

Naslednji korak je izbira ciljne mape za namestitev programa (slika 5 levo). Po vnosu potrdimo z Next. Sledi vnos osebnih podatkov (slika 5 desno) in ponovno potrdimo z Next.

Slika 5: Ciljna mapa (levo) in vnos podatkov imetnika (desno).

Datoteke se začnejo nalagati na računalnik (slika 6 levo). Po uspešni namestitvi lahko dodamo seznam primerov za različne razvojne plošče (slika 6 desno), česar zaradi slabe preglednosti ne priporočamo. Potrdimo z Next. Zglede bomo lahko tudi pozneje dodali iz namestitvene podmape \ARM\Boards.

Slika 6: Kopiranje datotek razvojnega okolja MDK Keil (levo) in dodajanje zgledov (desno).

3

Page 12: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Če imamo JTAG vmesnik uLINK, lahko po želji namestimo še gonilnike zanj (slika 7 levo). Razvojna plošča DISCOVERY tovrstne naprave nima, zato te možnosti ni potrebno odkljukati. Izberemo Finish in končamo z namestitvijo.

Slika 7: Gonilniki za uLINK orodje (levo) in ikona programa na namizju (desno).

Na namizju se po uspešni namestitvi pojavi ikona programa (slika 7 desno). Na sliki 8 je prikazano osnovno okno nameščenega razvojnega okolja µVision4.

Slika 8: Osnovno okno nameščenega razvojnega okolja Keil µVision4.

4

Page 13: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

2 STM32

STM32 je oznaka za 32-bitne mikrokrmilnike podjetja ST, ki so zgrajeni okoli procesorskega jedra ARM CORTEX-M. Na sliki 9 je prikazana osnovna primerjava med različnimi družinami mikrokrmilnikov STM32.

Slika 9: Primerjava med različnimi serijami mikrokrmilnikov STM32.

STM32 F0 je vstopna družina mikrokrmilnikov in ima jedro CORTEX-M0. STM32 L1 je družina mikrokrmilnikov z zelo nizko porabo in ima jedro CORTEX-M3. STM32 F1 je osnovna in prva družina mikrokrmilnikov z jedrom CORTEX-M3. STM32 F2 je izboljšana družina mikrokrmilnikov z jedrom CORTEX-M3. STM32 F3 je zadnja družina z izboljšano analogno periferijo in jedrom CORTEX-M4F. STM32 F4 je najhitrejša družina mikrokrmilnikov in ima jedro CORTEX-M4F. Znotraj posameznih družin obstajajo še posamezne podskupine, ki se razlikujejo po naboru perifernih enot, največji frekvenci jedra in količini FLASH pomnilnika.

5

Page 14: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

2.1 Razvojne plošče STM32 DISCOVERY

Podjetje ST je pripravilo cenovno zelo ugodne razvojne plošče pod skupnim imenom DISCOVERY, ki so namenjeni spoznavanju različnih podskupin mikrokrmilnikov STM32. V času pisanja te knjižice so dostopne razvojne plošče: STM32F0DISCOVERY (http://www.st.com/internet/evalboard/product/253215.jsp) STM32L-DISCOVERY (http://www.st.com/internet/evalboard/product/250990.jsp) STM32VLDISCOVERY (http://www.st.com/internet/evalboard/product/250863.jsp) STM32F3DISCOVERY (http://www.st.com/internet/evalboard/product/254044.jsp) STM32F4DISCOVERY (http://www.st.com/internet/evalboard/product/252419.jsp) V grobem lahko vsako DISCOVERY ploščo delimo na dva dela (slika 10). Zgornji del predstavlja programator/razhroščevalnik (imenovan tudi ST-Link), medtem kot spodnji tel tvori mikrokrmilnik s perifernimi enotami. ST−Link je skupen vsem ploščam.

Slika 10: Razvojna plošča STM32L-DISCOVERY.

6

Page 15: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

2.2 Namestitev gonilnikov

Pred prvo priključitvijo razvojne plošče STM32L DISCOVERY moramo namestiti gonilnike, ki so enaki za vse DISCOVERY razvojne plošče. Namestitveno datoteko smo prenesli ob namestitvi programa MDK-Lite. Nahaja se v podmapi \ARM\STLink\USBDriver. Zaženemo datoteko ST-Link_V2_USBdriver.exe. Začne se priprava namestitve (slika 11 levo), nato se odpre začetno okno namestitve (slika 11 desno). Potrdimo z Next.

Slika 11: Kopiranje datotek (levo) in pozdravno okno (desno).

Naslednji korak je izbira ciljne mape za namestitev programa (slika 12 levo). Po vnosu izberemo Next. Z namestitvijo programa začnemo z izbiro Install (slika 12 desno).

Slika 12: Ciljna mapa (levo) in potrditev pred namestitvijo (desno).

7

Page 16: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Datoteke se nalagajo na računalnik (slika 13 levo) in po uspešni namestitvi (slika 13 desno) izberemo Finish ter končamo z namestitvijo.

Slika 13: Potek kopiranja datotek (levo) in zaključek namestitve (desno).

Razvojno ploščo lahko priključimo na računalnik. Ob prvem vklopu se začne preverjanje gonilnikov (slika 14 levo) in nato še potrditev uspešne namestitve (slika 14 desno).

Slika 14: Preverjanje gonilnikov (levo) in potrditev uspešne namestitve le-teh (desno).

2.3 Posodobitev ST-Link orodja

Najprej priključimo razvojno ploščo STM32 DISCOVERY. Nato zaženemo ST-LinkUpgrade.exe, ki se nahaja v podmapi \ARM\STLink. Odpre se okno na sliki 15, kjer izberemo Device Connect.

Slika 15: Posodobitev ST-Link orodja.

V polju Firmware Version se izpiše trenutna, v polju Upgrade the firmware pa zadnja verzija firmware ST-Link orodja (slika 16 levo). Potrdimo (Yes).

8

Page 17: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Slika 16: Potek posodobitve (levo) in uspešno končana posodobitev (desno).

Začne se posodobitev programske opreme razvojne ploščice. Po uspešni posodobitvi se pojavi potrditveno okno (slika 16 desno). Potrdimo (OK), zapremo posodobitveni program in zaključimo posodobitev.

9

Page 18: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

10

Page 19: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

3 IZDELAVA PROJEKTA

3.1 Prenos potrebnih datotek

Potrebne datoteke za izdelavo projekta so dostopne na uradni spletni strani (http://www.st.com/internet/mcu/class/1734.jsp). Iz seznama na sliki 17 izberemo ustrezno družino mikrokrmilnikov STM32. - v našem primeru STM32 L1 Ultra Low Power.

Slika 17: Izbira družine mikrokrmilnikov STM32.

Odpre se seznam na sliki 18, s katerega izberemo ustrezen tip mikrokrmilnika - v našem primeru STM32L152RB.

Slika 18: Izbira tipa mikrokrmilnika STM32.

11

Page 20: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Pojavi se opisno okno izbranega mikrokrmilnika na sliki 19. Izberemo Design support.

Slika 19: Opisno okno mikrokrmilnika STM32L152RB.

Iz seznama različnih datotek na sliki 20 poiščemo podskupino FIRMWARE, kjer se nahaja arhiv standardnih knjižnic perifernih enot (STM32L1xx standard peripherals library). Kliknemo na obkroženo ZIP ikono arhiva in shranimo datoteko. Če za izbrani tip mikrokrmilnika ni tovrstnega arhiva, ga izberemo pri sorodnem mikrokrmilniku iste serije.

Slika 20: Arhiv standardnih knjižnic perifernih enot.

12

Page 21: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Slika 21 prikazuje vsebino razširjenega arhiva standardnih knjižnic perifernih enot, kjer so shranjene knjižnice za uporabo perifernih enot mikrokrmilnika (A/D, D/A, časovniki, SPI, UART, DMA…), primeri uporabe knjižnic in osnovne datoteke za izdelavo projekta.

Slika 21: Vsebina razširjenega arhiva standardnih knjižnic perifernih enot.

3.2 Izdelava projekta

Ustvarimo mapo, v kateri bo shranjen projekt (npr. Blinky). V njej naredimo tri podmape, CMSIS, MDK-ARM in User, kot kaže slika 22.

Slika 22: Ustvarjanje map projekta.

V ustvarjene mape bomo kopirali potrebne datoteke, ki se nahajajo v podmapah mape STM32L1xx_StdPeriph_Lib_V1.1.0. Ta mapa se je ustvarila ob razširitvi arhiva standardnih knjižnic perifernih enot. V mapo CMSIS našega projekta kopiramo:

• Iz podmape \Libraries\CMSIS\Include, datoteke: core_cm3.h, core_cmFunc.h in core_cmFunc.h • Iz podmape \Libraries\CMSIS\Device\ST\STM32L1xx\Include datoteki: stm32l1xx.h in system_stm32l1xx.h • Iz podmape \Libraries\CMSIS\Device\ST\STM32L1xx\Source\Templates datoteko system_stm32l1xx.c

13

Page 22: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

V mapi CMSIS našega projekta se morajo po kopiranju nahajati datoteke na sliki 23.

Slika 23 Vsebina mape CMSIS po kopiranju.

V mapo MDK-ARM ustvarjenega projekta kopiramo datoteko startup_stm32l1xx_md.s, ki se nahaja v podmapi \Libraries\CMSIS\Device\ST\STM32L1xx\Source\Templates\arm. V mapi MDK-ARM se mora nahajati datoteka na sliki 24.

Slika 24: Vsebina mape MDK−ARM po kopiranju.

14

Page 23: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Zaženemo µVision4 in izberemo Project→New µVision Project (slika 25).

Slika 25: Ustvarjanje novega projekta v okolju µVision4.

Odpre se okno na sliki 26, v katerem izberemo ime projekta in ga shranimo v podmapo projekta MDK-ARM.

Slika 26: Izbira imena projekta.

15

Page 24: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Iz seznama na sliki 27 izberemo tip mikrokrmilnika - v našem primeru STM32l152RB. Potrdimo (OK).

Slika 27: Izbira tipa mikrokrmilnika.

µVision4 ponudi možnost dodajanja zagonske (startup) datoteke (slika 28). Izberemo No, saj smo datoteko prej ročno dodali v mapo MDK-ARM.

Slika 28: Možnost dodajanja zagonske (startup) datoteke.

Na sliki 29 smo pod Project dobili novo mapo Target1. Ime mape spremenimo tako, da z levim klikom mapo izberemo, šele nato s ponovnim levim klikom (ne dvoklik) spremenimo ime. Mapo poimenujemo STM32LDISCOVERY (slika 29).

Slika 29: Spreminjanje imena projekta prej (levo) in potem (desno).

16

Page 25: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Z desnim klikom na mapo STM32LDISCOVERY se odpre meni na sliki 30. Izberemo Add Group….

Slika 30: Dodajanje skupine projekta.

Pojavi se nova podmapa (slika 31 levo). Spremenimo ji ime in kliknemo v prazno, da se ime podmape spremeni. Ustvarimo tri podmape, CMSIS, MDK-ARM in User (slika 31 desno). Ustvarili smo navidezne mape projekta - fizično jih na disku ni, če jih tam nismo posebej ustvarili.

Slika 31: Dodajanje navideznih map projekta: prej (levo) in potem (desno).

V navidezne mape projekta bomo dodali tiste datoteke, ki smo jih prej kopirali iz arhiva standardnih knjižnic perifernih enot STM32L1xx_StdPeriph_Lib_V1.1.0. Dodali bomo datoteke iz istoimenskih podmap, ki smo jih ustvarili na začetku tega poglavja: V podmapo CMSIS dodamo datoteko system_stm32l1xx.c, v podmapo MDK-ARM dodamo datoteko startup_stm32l1xx_md.s. Datoteko dodamo tako, da po desnem kliku na podmapo izberemo Add Files to Group (slika 32).

17

Page 26: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Slika 32: Izbira dodajanja datotek v navidezno mapo projekta.

Odpre se okno na sliki 33. Poiščemo ustrezno datoteko in izberemo Add. Ta postopek ponovimo še za datoteko startup_stm32l1xx_md.s.

Slika 33: Dodajanje datoteke v navidezno mapo projekta.

Končno stanje mora ustrezati stanju na sliki 34.

Slika 34: Končno stanje po dodajanju datotek v µVision4.

18

Page 27: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Ponovno kliknemo na navidezno mapo STM32LDISCOVERY in iz menija na sliki 35 izberemo Options for Target.

Slika 35: Nastavljanje možnosti modula STM32.

Odpre se okno, v katerem preverimo, ali so nastavitve enake tistim na sliki 38. Nato preklopimo na zavihek C/C++.

Slika 36: Nastavitve FLASH in RAM pomnilnika modula STM32.

19

Page 28: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Pod zavihkom C/C++ najprej pod Define vpišemo STM32LXX_MD, nato pod Include Paths ..\CMSIS;..\MDK_ARM;..\User. S tem prevajalniku sporočimo lokacijo vseh potrebnih datotek *.c in .*h. Potrdimo (OK), okno se zapre in vrnemo se v osnovno okno µVision4.

Slika 37: Vključevanje poti do mape USER v projektu.

3.2.1 Dodajanje glavnega C programa

Šele ko smo projekt nastavili, lahko začnemo s programiranjem glavne C datoteke (main.c). Odpremo prazen list s klikom na ikono lista (slika 38 levo) in naredimo osnovno strukturo programa (slika 38 desno).

Slika 38: Odpiranje nove datoteke v razvojnem okolju in osnovna struktura C programa (desno).

20

Page 29: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Iz opravilne vrstice izberemo File→Save As (slika 39 levo).

Slika 39: Shranjevanje osnovne strukture C programa (levo) in poimenovanje (desno).

Vse C datoteke vedno shranimo v podmapo User in njene morebitne podmape. Datoteko poimenujemo kot main.c in shranimo (slika 39 desno). Vrnemo se v osnovno okno projekta in dodamo datoteko main.c v podmapo User, kot kažeta sliki 32 in 33. Projekt nato prevedemo v strojno kodo (ang. build) z F7. Če se v oknu Build Output ne izpiše nobena napaka (slika 40), je napisani C program pripravljen na nalaganje v mikrokrmilnik.

Slika 40: Uspešno preveden projekt.

3.2.2 Vključevanje standardnih knjižnic perifernih enot

Podjetje ST je za vse DISCOVERY razvojne plošče pripravilo nabor knjižnic za periferne enote po standardu "Microcontroller Software Interface Standard" CMSIS. V teh knjižnicah so definirane funkcije in gonilniki, ki omogočajo delo s perifernimi enotami na vnaprej definiran način. Gonilnike lahko pišemo tudi sami, vendar to počnemo res v skrajnih primerih. CMSIS knjižnice vključimo v projekt tako, da kopiramo mapo in eno datoteko iz mape standardnih knjižnic perifernih enot (STM32L1xx_StdPeriph_Lib_V1.1.1.). V mapo projekta (v našem primeru Blinky) kopiramo mapo STM32L1xx_StdPeriph_Driver, ki se nahaja v podmapi \Libraries. V podmapo User projekta skopiramo datoteko stm32l1xx_conf.h, ki se nahaja v podmapi \Project\STM32L1xx_StdPeriph_Templates. Vrnemo se v program µVision4. Najprej datoteko stm32l1xx_conf.h dodamo v podmapo

21

Page 30: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

User kot prikazujeta sliki 32 in 33. Nato kliknemo na mapo STM32LDISCOVERY in iz menija izberemo Options for Target. (slika 35).

Pojavi se okno na sliki 41, kjer zopet izberemo zavihek C/C++.

Slika 41: Dodajanje definicije standardnih knjižnic perifernih enot.

V razdelku Define dodamo USE_STDPERIPH_DRIVER (ločilo je vejica). V razdelku Include Paths dodamo ..\STM32L1xx_StdPeriph_Driver\inc (ločilo je podpičje). Izberemo OK.

Slika 42: Dodajanje poti vključitve standardnih knjižnic perifernih enot.

Vrnemo se v osnovno okno programa. Program prevedemo v strojno kodo z F7. Pod datoteko main.c (slika 43) se pojavi več (*.h) datotek z definicijami standardnih knjižnic perifernih enot, ki smo jih dodali v naš projekt.

22

Page 31: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Slika 43: Datoteka z vključitvami standardnih knjižnic perifernih enot.

Če želimo katero izmed njih o(ne)mogočiti, odpremo datoteko stm32l1xx_conf.h. Najdemo jo med datotekami pod main.c (slika 43). Del vsebine datoteke je prikazan na sliki 44. Določeno knjižnico onemogočimo tako, da vrstico komentiramo - pred #include v dani vrstici dodamo C znak za komentar (//).

Slika 44: Vključevanje standardnih knjižnic perifernih enot.

Več informacij o primerih uporabe Standard Peripherial Libraries najdete v datoteki stm32l1xx_stdperiph_lib_um.chm v mapi standardnih knjižnic perifernih enot STM32L1xx_StdPeriph_Lib_V1.1.1.

23

Page 32: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

3.2.3 Datoteka predlog za prekinitve (Interrupt template file)

Za pregledno programiranje morebitne prekinitve vedno pišemo v posebno datoteko. V ta namen imamo pripravljeno osnovno predlogo (ang. template), v mapi STM32L1xx_StdPeriph_Lib_V1.1.1. Iz podmape \Project\STM32L1xx_StdPeriph_Templates kopiramo datoteki stm32l1xx_it.c in stm32l1xx_it.h v podmapo User projekta. V programu µVision4 datoteko stm32l1xx_it.c dodamo v podmapo User (sliki 32 in 33). V datoteki stm32l1xx_it.c izbrišemo še dve vrstici: vrstico 32 na sliki 45 in vrstico 144 na sliki 46. Tako imamo popolnoma prazno predlogo za pisanje prekinitev.

Slika 45: Prazna predloga za pisanje prekinitev.

Slika 46: Predloga prekinitvene rutine sistemskega časovnika.

3.2.4 Vpetost datotek .c, .h in .s

Datoteke core_cm3.h, core_cmFunc.h in core_cmFunc.h so vezane na CORTEX-M3 jedro mikrokrmilnika in so enake za vse mikrokrmilnike izbranega jedra, ne glede na proizvajalca. Datoteke stm32l1xx.h, system_stm32l1xx.h in system_stm32l1xx.c so vezane na družino mikrokrmilnikov - STM32L1. Zagonska datoteka startup_stm32l1xx_md.s je vezana na izbrani mikrokrmilnik STM32L152RB. Ustrezno zagonsko datoteko izberemo iz datoteke stm32l1xx.h.

24

Page 33: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

4 NALAGANJE PROGRAMA

4.1 Nastavitve

S klikom na navidezno mapo STM32LDISCOVERY izberemo Options for Target (slika 35). Odpre se okno z nastavitvami projekta (slika 47). Izberemo zavihek Debug.

Slika 47: Okno z nastavitvami projekta.

Nastavimo obkrožene nastavitve na sliki 48 in izberemo Settings.

Slika 48: Izbira orodja za razhroščevanje.

Odpre se okno na sliki 49, v katerem nastavimo obkrožene elemente in izberemo Flash Download.

25

Page 34: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Slika 49: Nastavitve načina programiranja FLASH pomnilnika.

Nastavimo obkrožene elemente po sliki 50. Namesto Erase Full Chip lahko izberemo tudi Erase Sectors, kar pospeši kasnejše nalaganje obsežnejših programov. Izberemo Add.

Slika 50: Izbira funkcije (levo) in vrste (desno) trajnega pomnilnika.

Iz seznama izberemo STM32L1xx Med-density Flash in dodamo izbrano vrednost z Add (slika 50 desno). Potrdimo z OK na sliki 51 in v naboru algoritma programiranja se pojavi funkcija STM32L1xx Med-density Flash.

26

Page 35: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

Slika 51: Algoritem programiranja FLASH pomnilnika.

Vrnemo se nazaj in izberemo zavihek Utilities (slika 52 levo).

Slika 52: Zaključek nastavitev nalaganja vsebine v FLASH pomnilnik.

Nastavimo obkrožene elemente na sliki 52 desno in potrdimo (OK). Tako smo nastavili vse potrebno za nalaganje in razhroščevanje programa.

27

Page 36: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

4.2 Nalaganje

Uspešno preveden projekt (F7) naložimo tako, da v opravilni vrstici izberemo Flash→Download (slika 53).

Slika 53: Nalaganje programa v FLASH pomnilnik.

Informacije o poteku nalaganja spremljamo v oknu Build Output, na sliki 54.

Slika 54: Informacije o poteku nalaganja.

28

Page 37: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

5 Razhroščevanje

Razhroščevanje (ang. Debug) zaženemo tako, da v opravilni vrstici izberemo Debug in Start/Stop Debug Session (slika 55 levo). Pojavi se opozorilno okno, ki opozarja o omejitvi velikosti programiranja FLASH pomnilnika v MDK-Lite okolju (slika 55 desno). Potrdimo z OK.

Slika 55: Začetek seje razhroščevanja (levo) in omejitev velikosti programiranja 32k FLASH (desno).

Odpre se razhroščevalno okno na sliki 56. V obkrožena temno siva polja z levim dvoklikom postavljamo mesta ustavitve izvajanja (ang. breakpoint), ki se pojavijo kot rdeča pika.

Slika 56: Mesta zaustavitve izvajanja (breakpoint).

29

Page 38: Prvi koraki pri delu z STM32 DISCOVERY razvojnimi …ndv.fe.uni-lj.si/predmet/ostalo/ST32ValueLineDiscovery...Prenos razvojnega okolja z uradne strani Keil. 1.2 Namestitev V ciljni

30

Razhroščevanje izvajamo z naslednjimi funkcijami:

Izvajamo različne vrste izvajanja analize programa (Step): − Vstopi v izvajanje funkcije (Step into) − Preskoči izvajanje funkcije (Step over)

Ponastavimo mikrokrmilnik (Reset).

Zaženemo ali ustavimo program (Run, Stop). Za pomoč pri razhroščevanju lahko vklapljamo poljubna okna (slika 57), s pomočjo katerih spremljamo dogajanje v posameznih registrih, spominu, skladu, perifernih enotah ...

Slika 57: Orodna vrstica enot mikrokrmilnika.

Razhroščevanje zaključimo enako, kot smo ga zagnali (slika 55 levo).