320 likes | 469 Views
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ő,
E N D
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 legyenpipa • 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
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 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 :)