Skip to content

VRS-Predmet/deprecated_vrs_cvicenie_6

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 

Repository files navigation

Náplň cvičenia

  • zoznámenie sa s perifériou USART
  • komunikácia MCU <=> PC
  • funkcia "callback" a jej využitie

Konfigurácia USART

  • 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"

Komunikácia s PC

  • 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 funkcia

  • "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)

Zadanie

  • 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
    • Znaky prikazu musia byt prijate bezprostredne zasebou.

    • Nezabudnite na znak ukoncenia riadku, ktory je odoslany spolu s textom prikazu. Napr. ak je z terminalu odoslany retazec "led" a nasladne retazec "ON", tak prikaz "ledON" musi byt spracovany ako validny.

  • s periodou 5 sekund posielajte cez USART aktualny stav LED spet do PC (nieco v style "LED ON" alebo "LED state: 0/1").

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published