{{indexmenu_n>8}} ====== 8 - Úvod do Nucleo STM32F446RE ====== * pro vyučující: [[courses:b3b36prg:internal:tutorialinstruction:08|]] ==== 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);