ST10 - rendszerek és programok Speccy
ST10.Urok 2. Hogyan kell beállítani a portok és LED pislogott (140201-140205)
Ahhoz, hogy tovább tanulmányozza MK (mikrokontroller) STM32xx kell a gyártótól származó dokumentációt.
Az elosztó Keil. pontosabban az eladó csomagokat. Már ez magában foglalja a szinte mindent, amire szüksége van.
Referense utasítás a chip és a mag. adatlap.
azok fizikailag találhatók. például STM32F100RB
'Papka_gde_ustanovlena_Keil' \ ARM \ Pack \ Keil \ STM32F1xx_DFP \ 1.0.2 \ Documents
És a legtöbb IDE szerveztek a munkát a dokumentációt, hogy minden kéznél volt, amikor dolgozik a projektben.
IDE → Nézet menü -> Könyvek.

Azonban a dokumentáció STM gyakran javított és frissített.
Letöltés dokumentáció lehetővé a gyártó honlapján.
>>> - mint például a chip szerelt STM32VL felfedezés
Emellett Referense kézi és adatlapja. rendkívül szükséges, hogy tanulmányozza a dokumentumokat -
Hibajegyzék, leírását tartalmazó hardver hibák és módon, hogy megkerüljék ezeket a hibákat.
ES0136: STM32F100xC, STM32F100xD és STM32F100xE nagy sűrűségű értékű sor eszközt korlátozások
Azt is javasolta, hogy kéznél ezeket a dokumentumokat.
>>> - Hogyan modulok
Brian Kernighan, Dennis Ritchie. A C programozási nyelv
Így csak annyit kell van.
Hozzon létre egy modult GPIO.
Rövidítése GPIO Általános rendeltetésű egy I / O - bemenet / kimenet egy általános célú
Először is, egy kicsit az időzítés.
Alapértelmezésben a rendszer úgy van beállítva, hogy a külső kristály - HSE (8 MHz) és SYSCLK 24MHz.
GPIOx a STM32F10xx órajele által APB2.
Egy további konfigurációt, és megvizsgálja a forrás óra és a frekvencia. de most már ezt az információt adni.
Az alapértelmezett időzítés (és így működik) az összes periféria modulok tiltva.
Mert azokat összekötő felelős RCC modult. kifejezetten GPIO x.
APB2 perifériás óra lehetővé regiszter - APB2ENR.
Nyílt Referense utasítás RM0041 és talál leírást a regiszter segítségével
A könyvjelzők listájának, vagy keresését.

A STM32VL felfedezés két LED - kék csatlakoztatott PC8 és zöld PC9. Meg kell, hogy ellenőrizzék bit 8. és 9. kikötő C.
Itt elkalandoztam. Meghatározása modulok saját maguk és regisztrálja a fájl fejlécében bit stm32f10x.h.
Regiszterek összevonásra alapuló struktúra működését.
__IO uint32_t CR;
__IO uint32_t CFGR;
__IO uint32_t CIR;
__IO uint32_t APB2RSTR;
__IO uint32_t APB1RSTR;
__IO uint32_t AHBENR;
__IO uint32_t APB2ENR;
__IO uint32_t APB1ENR;
__IO uint32_t BDCR;
__IO uint32_t CSR;
__IO uint32_t AHBRSTR;
__IO uint32_t CFGR2;
#if definiált (STM32F10X_LD_VL) || definiált (STM32F10X_MD_VL) || definiált (STM32F10X_HD_VL)
__IO uint32_t CFGR2;
#endif / * STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL * /
bit meghatározott karakter konstansok, és lényegében bit maszkok:
#define RCC_APB2ENR_AFIOEN ((uint32_t) 0x00000001) / *! #define RCC_APB2ENR_IOPAEN ((uint32_t) 0x00000004) / *!
#define RCC_APB2ENR_IOPBEN ((uint32_t) 0x00000008) / *!
#define RCC_APB2ENR_IOPCEN ((uint32_t) 0x00000010) / *!
#define RCC_APB2ENR_IOPDEN ((uint32_t) 0x00000020) / *!
#define RCC_APB2ENR_ADC1EN ((uint32_t) 0x00000200) / *! Karakter meghatározása bit tartalmaz. és egy regiszter egység, amelyben maga bit és bit neve, elválasztva egy aláhúzás. Magukat a modul nevét, nyilvántartások, bitek - rövidítése. RCC - R eset és C zár C ontrol APB2ENR - APB2P eripheral óra EN képes R egister Ahhoz, hogy működjenek együtt az egyes bitek nyilvántartások fogja használni a következő struktúrát. Reset bit - Var = ( Telepítés - Var | = bitmask; Így viszont az óra port C. RCC-> APB2ENR | = RCC_ APB2ENR_IOPCEN; Amennyiben egy változó használunk indikátorként uetsya s regisztrálni APB2ENR. By onfiguratsiya port csapokat. RazdelGPIO 7.1 GPIO funkcionális leírása Referense kézikönyv Azáltal onfiguratsiya megállapításait táblázatban foglaltuk össze a 16. táblázatban Port bites konfigurációs táblázat Bit hozzárendelés GPIO konfigurációs regiszter vannak megadva a leírásban Port konfigurációs regiszter magas (GPIOx_CRH) (x = A..G) Mivel a port 16 csapokat. és mindegyik tüskének van egy 4-bites konfiguráció, van két konfigurációs regiszter 32bit - CRL és a CRH. Meg kell CRH óta következtetéseket PC8 és PC9 vannak benne.
Számunkra a kívánt opció - Általános célú kimenet push-pul, kombinációja bit
Ez a következőképpen kell.
CNFx - 00 - Binary
MODEX - 01 - mint a jelen esetben, a kimeneti fordulatszám lényegtelen. tegye átlag.
Mi telepíti a szükséges konfigurációs előtti tisztáson erőfeszítés
előző állapot. Bár ezek a nyilvántartások, és egy meghatározott állapot visszaállítás után chip. de jobb, ha megszokja, hogy nem úgy, ahogy kellene. konfigurációs terminálok
néha meg kell változtatni a „röptében”.
(GPIO_CRH_CNF9 | GPIO_CRH_CNF8 | GPIO_CRH_MODE9 | GPIO_CRH_MODE8);
GPIOC-> CRH | = GPIO_CRH_MODE9_0 | GPIO_CRH_MODE8_0;
Bízza a megállapításokat.

Az adatok kimeneti port létezik a nyilvántartásban ODR.
Számos módja van.
Közvetlen írás egy értéket egy regiszter ODR
GPIOC-> ODR | = GPIO_ODR_ODR9; // alaphelyzetbe kimenet
De ez nem atomi, és emellett még össze egy csomó utasítást.
és BRR regisztrálja BSRR szánt atomi hozzáférés bit ODR port
Az első újraindítás, és meghatározzák a kicsit. a második csak vissza.

BSRR regisztráljon szimbolikusan két 16 bites. Jr. beállítására szolgál a bit az idősebb állítani.
GPIOC-> BSRR = GPIO_BSRR_BR9; // alaphelyzetbe kimenet
GPIOC-> BSRR = GPIO_BSRR_BS9; // meghatározott kiadási
Egyszerűsítése érdekében az írás a kódot, és kényelmesebb észlelés, levelet
meghatározása zameschayushie ezeket a sorokat.
#define GreenLED_OFFGPIOC-> BSRR = GPIO_BSRR_BR9
#define GreenLED_ON GPIOC-> BSRR = GPIO_BSRR_BS9
#define BlueLED_OFF GPIOC-> BSRR = GPIO_BSRR_BR8
#define BlueLED_ON GPIOC-> BSRR = GPIO_BSRR_BS8
Ennek eredményeként, a munka, a kimeneti csökken:
És nem kell nézni a forráskódot, keresve, mi van a kimeneten.
Ahhoz, hogy öndokumentáló kódot.
De ha tegyük ellenőrizzék a LED-ek. Nem láttunk semmit.
Következtetések átállítja a nagy sebesség és az emberi szem nem tudja elkapni a állapota a vibrálás. Keresi a késés.
Nem írom le a kilépési munkát késztetett teljesen. Csak azt tudom mondani, hogy működik a megszakítását SYSTICK rendszer időzítő, és lehetővé teszi, hogy hozzon létre időintervallumok 1 mS. és kellően pontos. Teljesen elemzik a munkát funkciókat a jövőben tanulságokat.
Fordítsd le a Project → újraépítése célokat, mint az előző leckét.
És kérem a Flash → Download chip.
Ha a fordítás sikeres volt, és a projekt jön létre. a tábla villog a LED-ek.
Így a modul maga.
A kód működik. jól olvasható és könnyen kezelhető. De ha továbbra is írok többet ebben a stílusban (minden egy fájl).
Ez időt vesz igénybe. fordult munkát egy rutin. Transzfer a munkát a modul kerülete. és a bemeneti és kimeneti portok azonos perifériák,
külön szoftver modul - lényegében egy könyvtár.
Feltételezzük, hogy már olvasni a cikket Viktor Timofeev - Hogyan készítsük el a modulokat.
Hozzon létre egy fájlt fejléc led.h modul, és mentse el a mappát inc. csak hozzon létre egy forrás
led.c és mentse el az src mappában.
Transzfer a kimenet határozza meg a kapcsolási header fájlokat. és következtetések kiindulási kapcsoló port és egy külön órát LED_init () függvény a forráskódot.
Csatlakoztassa a header fájlokat a forráskódot main.c és hozzá a projekthez. valamint a hozzáadott main.c
de csak a virtuális mappa src.
A leduyuschie tanulságok aktívan használják az anyagot a lecke.
main.c első kiviteli
#define GreenLED_OFF GPIOC-> BSRR = GPIO_BSRR_BR9
#define GreenLED_ON GPIOC-> BSRR = GPIO_BSRR_BS9
#define BlueLED_OFF GPIOC-> BSRR = GPIO_BSRR_BR8
#define BlueLED_ON GPIOC-> BSRR = GPIO_BSRR_BS8
statikus illékony uint32_t TimingDelay;