Table of Contents

11 - Úvod do Nucleo STM32F446RE

Desky Nucleo STM32F446RE jsou studenstvu dostupné na cvičení. Z vypracování úkolů na embedded programování je možné na cvičení získat až 6 bodů.

(Pro vyučující.)

Vývoj v prostředí Keil Studio

#include "mbed.h"
 
DigitalOut myled (LED1); // "Handle" to the LED.
 
int main() {
    while (1) {
        myled = !myled; // Flip the state of the LED.
        ThisThread::sleep_for(1s); // Efficient MCU sleep.
    }
}

Vývojové prostředí Keil používá programovací jazyk C++, jehož syntax vychází z C. Pro ukázkové příklady vystačíme se stávající znalostí progrmaování a intuitivním vytvářením objektů (volání konstruktorů) a volání metod objektů. Objekt si můžeme představit jako rozšířený typ struct, který má, kromě datových položek, také metody. Například objekt mybutton může mít metodu fall(), která určí ukazatel na “cizí” funkci, která bude zavolána při detekci změny úrovně napětí, což odpovídá stisknutí tlačítka. Tedy např., mybutton.fall(&on_button_fall). V rámci PRG se C++ věnují přednášky 10 až 13.

LED svítí pokud je tlačítko stisknuté

#include "mbed.h"
 
DigitalOut myled(LED1);
DigitalIn mybutton(BUTTON1); 
 
int main() {
   while (1) {
      if (mybutton == 0) {
         myled = 1;
      } else {
         myled = 0;
      }
   }
}

Slovy jazyka C, proměnná myled je datového typu DigitalOut. Terminologií C++ se jedná o instanci třídy DigitalOut. Instance třídy je spjata se sadou funkcí, které s ní umí pracovat - tzv. metodami. Metoda může být tzv. konstruktor, který instanci inicializuje. (Ve smyslu jako když inicializujeme proměnnou typu int.) Konstruktor může přijímat parametry, jako jakákoliv jiná funkce. V našem případě předáváme “název pinu”, který chceme ovládat. (Představte si, že výsledná instance je jakýsi ovladač/driver/API, který umí pracovat s LED diodou.) To, že můžeme “do proměnné přiřadit”, je pouze syntax zucker, který ve skutečnosti volá metodu write. Více vizte např. https://en.cppreference.com/w/cpp/language/class. Metoda write implementuje samotný mechanismus, který způsobí, že se na pinu objeví vysoká úroveň napětí. Vizte např. B3B38LPE1, B4M38AVS, B0B35APO.

Stisknutí tlačítka změní stav LED

Příklad řešení

Robustní detekce stisku tlačítka

Možné řešení

Efektivní detekce stisku tlačítka

Možné řešení

Efektivní a robustní detekce stisku tlačítka

Možné řešení

Opakovač

Možné řešení

Efektivní opakovač

Uložení informace

Možné řešení

Bitwise operace

Obojí dohromady

Možná kostra řešení