Fórum témák
» Több friss téma |
Cikkek » STM32 Discovery Kit programozása STM32 Discovery Kit programozása
Szerző: lolhun1988, idő: Feb 5, 2011, Olvasva: 23895, Oldal olvasási idő: kb. 3 perc
LED villogtatása függvények nélkülA célunk az, hogy megtanuljunk LED-et villogtatni, mindenféle előre megírt függvény nélkül. Kezdjünk is bele, nem pocsékolom a betűket, lényegre törő leszek és megpróbálok mindent leírni, érthető módon. ElőkészületekAhhoz, hogy ezt megtegyük, szükségünk lesz két dokumentumra. Az egyik a Discovery Kit használati útmutatója, a másik pedig a mikrokontroller referencia használati útmutatója. Discovery Kit használati útmutatója: USER_MANUAL.pdf MCU referencia használati útmutatója: UCONT_REF_MAN.pdf Aki programozott már mikrovezérlőket, tudja, hogy a beállításokat regiszterekben kell eltárolni. Meg kell adnunk például, hogy egy láb kimenet, vagy bemenet legyen, és azon belül is, hogyan viselkedjen. Mi kell ahhoz, hogy villogjunk?Nos a boldogsághoz elő kell vennünk a Kit használati útmutatóját, és meg kell néznünk, melyik port melyik kivezetésére van kötve mondjuk a kék LED (mert azt a színt szeretem ). Ezt az infót a 18. pdf oldalon találjuk a rajz jobb oldalán, ahol látjuk, hogy a kék LED a PC8-asra van kötve (LD4). Miután ez megvan, meg kell nyitnunk a referencia használati utasítást. Az STM esetén a be- és kimeneteket GPIO-knak (General-purpose I/O-knak) nevezik. Minden GPIO-t programozhatunk a következő funkciókra:
Mivel a LED-ünk a C porton van, ezért meg kell keresnünk azt a regisztert, amiben be tudjuk állítani a port funkcióját. Ezt a regisztert port konfigurációs regiszternek hívjuk (Port configuration register). Minden porthoz tartozik kettő, például a C porthoz a GPIOC_CRL és GPIOC_CRH tartozik. A 111. és 112. oldalon találjuk a leírást. Két részre van osztva: van egy úgynevezett Low és egy High (CRL és CRH) részre. Ez azért van így, mert minden GPIO-t négy bittel konfigurálunk. Egy porthoz 16 GPIO tartozik így az 16×4 = 64 bit kell, és így két ,32-bites regiszterben tudjuk azokat konfigurálni. Egy dolgot majdnem elfelejtettem: Van egy regiszter, amit periféria órajel engedélyező regiszternek hívnak (APB2 peripheral clock enable register). Ebben be kell állítanunk egy bitet, hogy engedélyezzük az órajelet a C portra. Így tudjuk majd változtatni a port értékét. Erről a regiszterről a leírást a 91. pdf oldalon találunk. GPIOx_CRL port konfigurációs regiszter GPIOx_CRH port konfigurációs regiszter RCC_APB2ENR Periféria órajel engedélyező regiszter A program írásaA fent leírtak alapján járunk el. Be kell állítanunk az RCC_APB2 regiszterben a periféria órajel engedélyezőjét a C portra, továbbá be kell állítanunk a PC8-as GPIO-t, hogy kimenet legyen. A 103. pdf oldalon láthatjuk hogyan kell. A GPIO-t a mi esetünkben push-pull funkciójúra kell programozni, és mondjuk a max. output sebességet válasszuk 10 MHz-nek. Láthatjuk a táblázatok alapján, hogy a PC8-ashoz tartozó konfiguráció a következő: A PC8-ast a GPIOC_CRH regiszteren keresztül tudjuk konfigurálni. Port bit konfigurációs táblázat Tehát a nyolcadik bithez tartozó konfigurációs biteket kell beállítanunk. A CNF két bitből áll, mindkét bitjét a táblázatból kiolvasva tudjuk, hogyan kell konfigurálni. A MODE szintén két bitből áll, megadhatjuk vele kimeneti mód esetén, hogy milyen max. kimeneti sebessége legyen az adott GPIO-nak. Úgy kell feltöltenünk ezeket a konfigurációs biteket, ahogyan ebben a táblázatban látjátok.
A GPIO értékét is tudnunk kell változtatni. Ezt a port beállító és törlő regiszter segítségével fogjuk megtenni. (Port bit set/reset register). A 113. pdf oldalon találunk róla leírást. Ebből a regiszterből a 8-as és 24-es bitre lesz szükségünk. Ha a 8-as bitbe egyest írunk, akkor egyesbe állítjuk a PC8 értékét, ha a 24-es bitbe írunk egyest, akkor pedig töröljük. Most már neki is állhatunk megírni a programot! (BS=Bit set, BR=Bit reset értelemszerűen a BS8 a nyolcadik bitet a portból beállítja a BR8 pedig törli.) Port bit set és reset regiszter --------------- A main fájl:
--------------- Miután végeztünk a main fájl megírásával, felprogramozhatjuk a mikrovezérlőnket, és láthatjuk, ahogyan villog. Ezt szerettem volna megosztani veletek első körben. Remélem hasznos volt a cikk, és nem untátok halálra magatokat az olvasása közben! A következő cikk a digitális bemenet kezeléséről lesz, megtanuljuk használni a panelon lévő User nyomógombot. A későbbiekben pedig a jelenlegi projektem az RTC (Real-Time Clock) felélesztését fogom ismertetni veletek. Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |