ARM tanfolyam

Download Report

Transcript ARM tanfolyam

ARM tanfolyam
2. előadás
Fejlesztő környezet
- Codesourcery G++ lite:
Letölthető a mentorgraphics honlapjáról
(ARM-EABI változat)
- Eclipse CDT
- GNU-ARM Eclipse plugin
ARM-hoz tartozó fájlok
• A gyártó honlapjáról letölthető,
• Általában standard peripherials library
néven fut, és .zip fájlban van
• Továbbá az esetleges devboardhoz
tartozó fájlok, driverek, programozó
szoftverek
Telepítési sorrend
• Codesourcery G++ lite telepítése a
C:\ARM\Codesourcery mappába
• Eclipse bemásolása a
C:\ARM\eclipse mappába
• Az eclipse indítása után:
Help->Install New Software->Add és a .zip
fájt megadni (GNU-ARM plugin)
(next-next-ok :D )
Új project
• File->New->C project->ARM Cross Target application
és kiválasztani hogy Sourcery G++ lite
• Utána a köv. oldalon csak
a Release mellett legyen
pipa
• Majd Finish
Project konfigolása
• Ezután CMSIS mappát létrehozni és telepakolni fájlokkal
• DE: Most egszerűbb,
mert előre kiadtam egy
üres projectet
Beállítások
• A Project Explorerben a project nevén jobbklikk>Properties…
• A feljövő ablakban baloldalt a
C/C++ build->Settings menüpontot megnyitni
• Target processor->Cortex-M0
• …GCC C Compiler->Directories:
hozzáadni a projecten belül a CMSIS mappát
• …GCC C Compiler->Miscellanous->Language
standard: ISO C99 with GNU extensions
• Majd a …GCC C linker-> stm32_flash.ld
Szükséges fájlok összegyűjtése
• A kontrollerhez letöltött libraryból fájlokat
kell összeválogatni
•
•
•
•
•
•
•
•
•
•
STM32F0xx_StdPeriph_Lib_V1.0.0\Libraries\CMSIS\Device\ST\STM32F0xx\Include\
\Libraries\CMSIS\Device\ST\STM32F0xx\Source\Templates\TrueSTUDIO\ .s ASM file
->A kiterjesztést .S-re átírni (nagy .S)
Libraries\CMSIS\Device\ST\STM32F0xx\Source\Templates\ ebből a
system_stm32f0xx.c
\Libraries\CMSIS\Include\ összes .H
\Libraries\STM32F0xx_StdPeriph_Driver\ ebből az \inc és \src mappából most az
alábbiakat
….rcc.c és rcc.h ->órajel modul driver
….gpio.c és gpio.h -> portlábakhoz állítgató cuccok, meg konfig cuccok
….tim.c és tim.h
-> timer
Linkerscript:
…\Project\STM32F0xx_StdPeriph_Templates\TrueSTUDIO\Project\stm32_flash.ld
És a konfigfájl, ez lehet innen:
…\Project\STM32F0xx_StdPeriph_Examples\GPIO\IOToggle\stm32f0xx_conf.h
Mintaprojectek
• Tök jól használható mintakódok vannak a .zip fájlban a
\Project\STM32F0xx_StdPeriph_Examples mappában.
Perifériánként csoportosítva a mintakódokat.
• A projecteket sajnos nem lehet csak úgy megnyitni, de ugyanígy
összegyűjthetőek mint visszább írtam
stm32f0xx_conf.h
• Csak azokat a fájlokat kapcsoljuk be amit
használunk, mert a beincluedolt fájlokat
befordítja
• Save!
• Majd build!
Hibák
• Assert_param-> be kell incluedolni a stm32f0xx_conf.h fájlt a
periféria drivereknél a .c-be
• Javítás:
Hibák, folytatás…
• A startup.S-ben ki kell kommentelni a bl __libc_init_array sort
-->nem lesz malloc :( de megvagyunk nélküle, meg elvileg
kijavítható hiba
Hibajavítás után…
• Hibátlan fordítás
• Nekiállhatunk értelmeset kódolni…
LED villogtató
• Csináljunk egyszerű hello world progit
• Kell hozzá:
– Késleltetés
– LED villogtatás
Szoftveres késleltetés
• Fontos a volatile kifejezés
• Ezt írjuk a main() elé
GPIO init
• A panelon a PC8-as lábon lévő LED-et akarjuk villogtatni
• Órajelet adni a perifériának->ADATLAP
Egészítsük ki a main-t!
• Save + Build
Letöltés
• STM32 ST-LINK Utility
• File open-> \Project\release\.... .hex
• OK->Program->
• Majd a boardon
reset gomb
• Örül!
Következő project: PWM
•
•
•
•
•
•
PC9 LED-en ->adatlap ->TIM3_CH4
Alteratív funkcióba átkapcsolni
TIM3-nak órajelet adni
Időalapot beállítani
OutputCompare modult beállítani
Tetszőlegesen kitöltési tényezőt állítani
Timer Init
main() kiegészítése
• Build majd Press play on tape
IT kezelés
• Mi lenne ha, nem soft módon
késleltetnénk, hanem IT-vel?
• Már jár egy timerünk, 100Hz-el
• Írjunk egy IT rutint, ami a kék LED-et
kapcsolgatja!
IT kezelő konfigolása
IT handler
• Létrehozni az IT kezelő fgv-t, a fgv nevét a
startup.S fájlból lehet kihámozni
• A flaget nekünk kell törölni
A main() kiegészítése
• Globális változók (volatile!)
Hardfault handler
• Mint a kékhalál a PC-nél.
• Célszerű belerakni egy LED
bekapcsolását
A mai alkalom után tudunk…
• GPIO-t kezelni
• Timer-t elindítani, OC modult használni
• IT-t bekapcsolni, használni
• Szabad otthon kísérletezni :)
Köszönöm a figyelmet!