{{indexmenu_n>7}}
====== 7 - Úvod do Nucleo STM32F446RE ======
* pro vyučující: [[courses:b3b36prg:internal:tutorialinstruction:07|]]
==== Procvičovaná témata ====
* Prostředí ''mbed.org'' a kompilace programu pro STM32F446RE
* Křížová kompilace pro STM32F446RE a flashování
* Použítí tlačítka a LED
===== Úkoly na cvičení =====
^ Podpora | [[courses:b3b36prg:resources:nucleo|Video tutoriál k mbed.org a Nucleo (97 min)]]|
==== Vývoj v prostředí mbed.org ====
Ve webovém vývojovém prostředí [[https://developer.mbed.org/platforms/ST-Nucleo-F446RE/]] vytvořte aplikaci pro blikání LED a vyčitání stavu tlačítka.
* Vytvořte si účet, pokud jej ještě nemáte
* Založte projekt pro STM32F446RE a pojmenujte jej ''Lab07-mbed''
* Implementujte jednoduchý program pro periodické blikání LED
=== ===
#include "mbed.h"
DigitalOut myled(LED1);
int main() {
float period = 0.3; // 300 ms
while (1) {
myled = !myled;
wait(period);
}
}
==== ====
* Implementujte jednoduchý program pro ovládání LED stiskem tlačítka
=== ===
#include "mbed.h"
DigitalOut myled(LED1);
DigitalIn mybutton(USER_BUTTON);
int main() {
while (1) {
if (mybutton == 0) {
myled = 1;
} else {
myled = 0;
}
}
}
==== ====
* Program rozšiřte tak, aby jeden stisk tlačítka střídavě LED rozsvítil nebo zhasnul
Pokud vám práce ve webovém vývojovém prostředí nevyhovuje, můžete se nastavit [[courses:b3b36prg:tutorials:nucleo_cross|křížovou kompilaci cross-compilation).]] \\
\\
Alternativně můžete využít intergrace do vývojové prostředí [[courses:b3b36prg:tutorials:system_workbench|System Workbench]], které je součástí OpenSTM32 vývojových nástrojů. V zásadě vývoj odpovídá křížové kompilaci, jen je nutné si ještě nakonfigurovat vývojové prostředí, které je modifikovanou verzí [[https://www.eclipse.org/ide/|IDE Eclipse]].
===== Další úkoly na cvičení =====
V další části cvičení pokračujte implementací domácího úkolu [[courses:b3b36prg:hw:hw08|]].
===== Procvičování binárních výrazů =====
* Maskování bitu x
* varianta 1
bit = (number >> x) & 1;
* varianta 2
bit = (number) & (x << 1);
* jaký je rozdíl mezi variantou 1 a variantou 2? Kdy použijeme kterou z nich?
* Nastavení bitu x na ''1''
number |= 1 << x;
* Nastavení bitu x na ''0''
number &= ~(1 << x);
* Přepínání bitu
number ^= 1 << x;
* Nastavení bitu podle hodnoty proměnné
number ^= (-x ^ number) & (1 << n);