Professional Documents
Culture Documents
Principi Mikrokontrolera
Principi Mikrokontrolera
FAKULTET ELEKTROTEHNIKE
Tuzla, 2018
P-I P-II P-III P-IV P-V P-VI
1
studenti vraćaju hardware nakon prvog završnog roka
2
odabiri teme po slobodnoj volji
3
Ili bilo koja verzija C-a
P-I P-II P-III P-IV P-V P-VI
Šta je - MCU
Zašto MCU
Texas Instruments
P-I P-II P-III P-IV P-V P-VI
Programiranje
Generiranje koda
RAM: 0x20000000
Dodjeljivanje fizičkih adresa,
KORAK 4 LOCATOR varijablama kao i izračun 0x2001FFFF
relativnih skokova
PERIPHER: 0x40000000
0x5FFFFFFF
Radni napon STM32F4xx MCU je 3.3V (podržani radni naponi od 1.8 V do 3.6 V)
STM32F4x podržava tri tipa reset-a: system Reset, power Reset i backup
domain Reset
System reset - setuje sve registre na reset stanje osim reset flagova u clock
controller CSR registru i Backup domain registrima.
System reset se generira u jednom od sljedećih slučajeva:
NRST pin je pod djelovanjem napona niskog nivoa,
WWDT je dosegao kriterij brojanja,
IWDG je dosegao kriterij brojanja,
Softverski reset - poziv funkcije void NVIC_SystemReset(void)
Low power reset tj. reset nakon ulaska u Standby mode ili Stop mode.
Power reset generiše se u slučaju
Power-on/power-down reset (POR/PDR reset) ili BOR reset
Nakon izlaska iz Standby mode.
P-I P-II P-III P-IV P-V P-VI
STM32F4xx Dokumentacija
Toolchain
make
target: dependencies
(tab) system command
Ili
make -f Makefile
P-I P-II P-III P-IV P-V P-VI
make
Organizacija MWE
GPIO Port
GPIO Registri9
9
STM32 Reference manual p278-283
P-I P-II P-III P-IV P-V P-VI
GPIO Registri
10
Važe samo za STM32F407VGT6
P-I P-II P-III P-IV P-V P-VI
GPIO Registri
GPIOx_ODR - po jedan bit definira stanje IO pina koji je proglašen kao izlazni
pin opšte namjene.
GPIOx_BSRR - pisanje bit-a u grupi od prvih 15 bita, setuje stanje
odgovarajućeg bita. Sa druge strane, pisanje u drugoj grupi od 15 bita resetuje
stanje IO pina koji je proglašen kao izlazni pin opšte namjene.
GPIOx_IDR - po jedan bit definira stanje IO pina koji je proglašen kao ulazni pin
opšte namjene.
GPIOx_LCKR omogućuje zaključavanje trenutne konfiguracije GPIO porta.
GPIOx_AFRH i GPIOx_AFRL - grupe od po 4 bita definiraju aktivnu alternativnu
funkciju koje IO pin može imati.
U osnovi grupe od po četiri bita unutar AFR registra definiraju konkretnu
alternativnu funkciju.
Konkretna funkcija pina zavisi od binarne kombinacije/GPIO porta/pina11
11
Pogledati tabelu 7 STM32F407 datasheet na strani 56
P-I P-II P-III P-IV P-V P-VI
RCC->AHB1ENR |= (RCC_AHB1ENR_GPIODEN);
//RCC->AHB1ENR |= 0x00000008;12
GPIOD->MODER |= 0x80000000;
GPIOD->OTYPER = 0x00000000;
GPIOD->OSPEEDR |= 0xC0000000;
GPIOD->ODR &= ~(0x00008000);
12
Pogledati STM32F4xx reference manual str 238
P-I P-II P-III P-IV P-V P-VI
RCC->AHB1ENR |= (RCC_AHB1ENR_GPIOAEN)13
GPIOA->MODER &= ~(0x00000003);
GPIOA->PUPDR = 0x00000001;
uint32_t state = (GPIOA->IDR)&(0x00000001);
13
Pogledati STM32F4xx reference manual str 238
P-I P-II P-III P-IV P-V P-VI
Svi GPIO I/O digitalni pinovi mogu osigurati sink/source struje do 8 mA (max).
Pull-down i Pull-up otpornici na svim GPIO pinovima su opsegu od 30-50kΩ
osim PA10 i PB12 koji imaju vrijednosti u opsegu 8-15kΩ.
Kapacitet svih I/O pinova je tipično 5 pF.
Napon histereze I/O Schmitt trigger-a je 200 mV.
P-I P-II P-III P-IV P-V P-VI
P RIMJER 1
Na STM32F4 Disco nalaze se 4 LED diode. Napisati C program koji će manipulirati 4 LED
diode (LD3-LD6) na način da se sve četiri diode periodično uključuju i isključuju.
Napomene:
Za tačnu informaciju na kojem IO pinu i kojem GPIO portu su spojene
LED, pogledati STM32F4 Disco manual p36.
Pauze izmed̄u operacija uključivanja i isključivanja LED softverski
generirati.
P-I P-II P-III P-IV P-V P-VI
GCC kompajler će izbaciti svaku petlju tokom kompajliranja ukoliko ista u svom
tijelu ima samo lokalnu varijablu koju inkrementiramo.
Prvo rješenje datog problema je ukidanje optimizacije.
Posljedica: veličina koda postaje značajno veća.
Drugi način je da proglasimo brojačku varijablu cnt u petlji (sa kojom simuliramo
pauzu) kao volatile ili static.
Prefiks volatile za varijablu nagovještava kompajleru da sve dijelove koda u
kojim se pojavljuje čitanje/pisanje u date varijable, kompajler ne optimizira.
Nedostatak: generiranje pauza i uključivanje koncepta vremena u program ne
može se bazirati na softverskim emulacijama pauza/vremena jer:
Vrijeme izvršavanja instrukcija varira od platforme do platforme,
Kod kojim emuliramo pauzu biti će preveden u instrukcije procesora u
zavisnosti od nivoa i tipa optimizacije.
Ne znamo tačno vrijeme izvršavanja jednog prolaza kroz petlju.
Granulacija vremenskog koraka pauza je ograničena i varijabilna (u
zavisnosti sa opterećenjem procesora (interrupts)).
P-I P-II P-III P-IV P-V P-VI
P RIMJER 2
Na STM32F4 Disco nalazi se plavi taster (plave push-button) koji ćemo iskoristiti za
demonstraciju funkcionalnosti GPIO pin-a kada obavlja funkciju digitalni ulaz opšte namjene.
Napisati C program koji će:
1. Uključiti sve LED diode na STM32F4 Disco razvojnoj ploči (LD3-LD6) dok je taster
pritisnut, a zatim isključiti kada je taster otpušten. Drugačije rečeno stanje LED diode mora
biti invertovano stanje tastera.
2. Uključiti sve LED diode na STM32F4 Disco razvojnoj ploči (D1-D4) kada se izvrši cijela
operacija on-off a zatim na sljedećoj on-off operaciji isključi sve LED diode. .
Napomene:
Za tačnu informaciju na koji IO pin i koji GPIO port je spojen taster,
pogledati STM32F4 Disco manual p36.
P-I P-II P-III P-IV P-V P-VI
Literatura
Literatura
STM32F4xx Reference manual
STM32F4 Discovery Board User Manual
STM32F407xx Datasheet
Digital Signal Processing Using the ARM Cortex M4