ARM Cortex magú mikrovezérlők 12. STemWin garfikus könyvtár Scherer Balázs Budapest University of Technology and Economics Department of Measurement and Information Systems BME-MIT 2018
LCD kijelzők kezelése BME-MIT 2018 2.
LCD kijelzők kezelése Beépített kontrollerekkel rendelkező vezérlők kezelése egyszerű o Tipikusan SPI-on keresztül lehet programozni o Pixelek memória címekre vannak leképezve Beépített kontroller nélkül o Bonyolult, folyamatos nagysebességű frissítés o Nagy memória igény o Hardware támogatás nélkül elképzelhetetlen BME-MIT 2018 3.
TFT LCD controller LCD vezérlés BME-MIT 2018 4.
LCD vezérlés BME-MIT 2018 5.
LCD vezérlés memória igénye Sokszor nem elég a táblázatban leírt memória, mert dupla bufferelés szükséges. Egy a jelenlegi, ami kijelzés alatt van egy pedig ami a következő képet tartalmazza. BME-MIT 2018 6.
STM32f429 Grafikus támogatása BME-MIT 2018 7.
STM32f429 Grafikus támogatása 3 különböző órajel forrást használ: o memória interface, regiszter, LCD vezérlés Programozható LCD vezérlés időzítések V, H sync 24 bites RBG szín megjelenítésre is képes Max 800x600-as kijelző Több layer támogatása: 2 + background Ditherelés 2 bit / szin Áttetszőség beállítás BME-MIT 2018 8.
Chrom-ART Accelerator (DMA2D) CPU tehermentesítés: o Képmásolás, több ikon egymásra rakása különböző átlátszósággal BME-MIT 2018 9.
STM32 FMC controller: külső memória vezélés Külső memória támogatás: o SDRAM, SRAM, Flash o Max. 90 MHz, max. 32bites adatvonal SD RAM kezelés: o Állandóan frissíteni kell, mert elfelejti a tartalmát: automatikus frissítés programozható idővel o Energiamenedzsment támogatás csökkentett energiájú módokkal BME-MIT 2018 10.
Grafikus szoftver könyvtárak: emwin BME-MIT 2018 11.
Segger emwin Graphical Library Portolható grafikus library 8,16, 32 bites mikorvezérlőkre Oprendszer támogatás opcionális Minimum konfiguráció ~20kbyte Flash ~1k RAM Fizetős rendszer o Jó néhány gyártó ingyenesen elérhetővé teszi a saját környezetéhez BME-MIT 2018 12.
Alap 2D library Alap formák rajzolása, szöveg kiírása o Vonalak, négyszögek, háromszögek, sokszögek, körök o JPEG, PNG és bitmap o Az alapformák az előlapi színnel rajzolódnak, ami átállítható GUI_SetColor(GUI_RED); o Az objektumok átlapolódhatnak, és az alpha blending támogatott BME-MIT 2018 13.
Alap 2D library példa BME-MIT 2018 14.
Alap 2D library példa BME-MIT 2018 15.
Alap 2D library példa BME-MIT 2018 16.
Alap 2D library szöveg kiírása Bárhova a képernyőn, akár saját betűtípusokkal Szövegdobozok és létrehozhatók BME-MIT 2018 17.
Alap 2D library szöveg kiírása Külső programmal készíthető saját betű készlet o C file-okat exportálunk BME-MIT 2018 18.
Alap 2D library képek megjelenítése Külső programmal konstans létrehozása a képből o BmpCvt.exe: bitmapből o Bin2c.exe: más bináris állományból BME-MIT 2018 19.
Human interface Tipikusan valamilyen billentyűzetet, vagy pointer input eszközre vagy touch screen számítunk Ezek dedikált API függvényekkel vannak kezelve o GUI_StoreKeyMsg(): billentyűzet események kezelésére o GUI_PID_StoreState(): Pointer Input Device esemény átadása (pl. egér esemény) o GUI_TOUCH_StoreState(): Touch screen esemény átadása BME-MIT 2018 20.
Az emwin ablakozó rendszere Hierarchikus ablakkezelő rendszer Saját callback függvény rendszer támogatással Ez az alapja az összes Widget kezelésének Működhet oprendszer támogatással és nélküle is BME-MIT 2018 21.
Operációs rendszer nélküli működés Gyakorlatilag egy fő ciklusból folyamatosan hívni a GUI_Exec() függvényt. Nem szabad megfeledkezni a beviteli eszköz kezeléséről sem BME-MIT 2018 22.
Operációs rendszerrel való működés Külön szálban a GUI_Exec(), GUI_Delay() függvények hívásával. A megfelelő define-al engedélyezni kell a konfigurációban (GUIConf.h) BME-MIT 2018 23.
Widget: Window + Gadget A legtöbbet használt kis grafikus kijelzők beavatkozók Rengeteg API függvénnyel BME-MIT 2018 24.
Widget létrehozása Kétfajta módon hozhatók létre Direkt módon. o o o Mindegyiknek megvan a saját handlerje és létrehozó függvénye <WIDGET>_CreateEx() // Creation without user data. <WIDGET>_CreateUser() // Creation with user data Indirekt módon o o o Dialógusba ágyazva A dialógus tartalmazni fogja a létrehozó táblázatot <WIDGET>_CreateIndirect() BME-MIT 2018 25.
GUI builder Windows-os program amiben létrehozhatjuk könnyen a Widgeteket BME-MIT 2018 26.
STemWin kipróbálása BME-MIT 2018 27.
Egyszerű példa objektum rajzolással Honlapról az Stemwin_01 project letöltése és megnyitása o o Workspace folderben kicsomagolni Import existing project into Workspace Vigyázat a project működéséhez szüksége az STcube megfelelő verziójának megfelelő helyen való megléte. Ha szükséges ezeket a project beállításokban lehet módosítani BME-MIT 2018 28.
Gyári demó HelloWorld demó szerkezete Main függvény: o Kártya, LCD inicializáció o Demo elindítása o Touch screen interrupt kezelés, időzjtés kezelés Basic_HelloWorld: o Gui törlés o Betütípus beállítás o Szöveg kiírás BME-MIT 2018 29.
Egyszerű objektum rajzoló demó void MainTask(void) { GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetColor(GUI_RED); GUI_FillCircle(120, 120, 80); GUI_SetColor(GUI_BLUE); GUI_FillCircle(140, 140, 80); GUI_SetFont(&GUI_Font20_1); GUI_DispStringAt("Hello world!", (LCD_GetXSize()- 100)/2, (LCD_GetYSize()-20)/2); while(1); } BME-MIT 2018 30.
Ablakos rendszer widgettel Generáljuk le a kívánt ablakot a GUI builderrel Másoljuk be a file-t a projecktbe Hívjuk meg az ablak inicializáló függvényét (Create ) Módosítsuk a viselkedését Hívjuk periodikusan a GUI_Exec() BME-MIT 2018 31.
GUI builder void MainTask(void) { GUI_Clear(); CreateAblak(); while(1) { GUI_Exec(); } } BME-MIT 2018 32.