- zoznámenie sa s perifériou USART
- komunikácia MCU <=> PC
- funkcia "callback" a jej využitie
-
na cvičení sa bude využivať periféria USART2: PA2 - Tx, PA15 - Rx
-
USART2 treba zapnúť/povoliť v asynchrónnom režime
-
v nastavení parametrov nie je potrebne meniť žiaden parameter okrem "Baud rate" (rovnaký musí byť nastavený aj na strane prijímača)
-
prijímanie dát bude obslúžené v prerušení - v NVIC je potrebné povoliť prerušenie pre USART2
-
vo vygenerovanom kóde je nutné doplniť povolenie prerušenia ak je prijatý znak - USART prerušenie "RXNE"
-
Nucleo doska ma fyzicky prepojený USART (konkrétne USART2) s ST-LINK/V2-1 a tak vytvára virtuálny COM port. Vďaka tomu dokážeme cez USART posielať dáta priamo do PC bez potreby USB/USART prevodníka (viac info v datasheet pre "STM32 Nucleo-32 boards")
-
na strane PC sa môže využiť serial port terminál (PuTTY, Terminal by Br@y ...) s ktorým vieme sledovať komunikáciu na sériovom porte a zároveň posielať dáta
-
na strane PC aj MCU je nutné mať nastavený rovnaký "Baud rate"! Taktiež nastavenia ako stop bit, parita ... musia byť rovnako nastavené ak sa náhodou pri konfigurácii MCU menili
-
"callback" je časť kódu (funkcia A), ktorá je predaná inej časti kódu (funkcii B) pričom sa očakáva, že funkcia B niekedy naspäť zavolá funkciu A, ktorá jej bola predaná - od toho je aj názov "callback"
-
v jayzku C je "callback" realizovaný ako smerník na funkciu
void A()
{
printf("I am function A\n");
}
void B(void (*ptr)())
{
(*ptr) (); // callback to A
}
int main()
{
void (*ptr)() = A;
B(ptr);
return 0;
}
-
pri programovaní vnorených systémov sa callback funkcie využívajú na oddelenie aplikačnej časti programu (vyššia úroveň) od hardvérovej časti programu, kde sa konfiguruje MCU (nízka úroveň)
-
využitie to má v prípade, ak sa chce FW nejakého typu MCU portovať na iný typ MCU - FW je jednoduchšie prenášaťelný na iné zariadenia, je prehľadnejší a jednoduchší na údržbu
-
príklad na callback funkciu je v ukážkovom projekte pre toto cvičenie (obsluhuje prerušenie od USART)
- naprogramujte MCU tak, aby ste prikazmi prijatými cez USART vedeli ovladat LED (na Nucleo doske)
- ak MCU prijme cez USART príkaz 'ledON' - LED sa zapne
- ak MCU prijme cez USART príkaz 'ledOFF' - LED sa vypne
- s periodou 5 sekund posielajte cez USART aktualny stav LED spet do PC (nieco v style "LED ON" alebo "LED state: 0/1").