Search
Způsobů, jak pracovat s Nucleem je několik. Pro práci můžeme použít VS Code s nainstalovaným pluginem Platformio, Mbed Studio, nebo můžeme třeba využít online prostředí http://mbed.org
MBED je middleware pro mikrokontroléry s architekturou ARM Cortex-M, založená na principech objektového programování v C++. Pro vývoj je možné používat online editor nebo programovat offline.
Pro většinu aplikací, které mají běžet v nekonečné smyčce (nejen embedded systémy) je poté základní konstrukce programu následující:
int main(){ // inicializace programu while(1){ // nekonečná smyčka, hlavní část programu } return 0; }
K vytvoření programu je potřeba vytvořit alespoň jeden zdrojový soubor např. main.c pomocí následujícího návodu:
LEDka je umístěna na desce Nuclea uprostřed a připojena k procesoru na pin PA5
#include "stm32f4xx.h" #define setbit(reg, bit) ((reg) |= (1U << (bit))) #define clearbit(reg, bit) ((reg) &= (~(1U << (bit)))) #define togglebit(reg, bit) ((reg) ^= (1U << (bit))) int main(void) { volatile i = 0; setbit(RCC->AHB1ENR, 0); // Enable clock to GPIOA setbit(GPIOA->MODER, 10); // Set pin PA5 as output clearbit(GPIOA->MODER, 11); clearbit(GPIOA->OTYPER, 5); // Set Push-Pull output for pin PA5 setbit(GPIOA->OSPEEDR, 10); // Set GPIO speed of pin PA5 to medium clearbit(GPIOA->OSPEEDR, 11); clearbit(GPIOA->PUPDR, 10); // Disable Pull-Up/Down for pin PA5 clearbit(GPIOA->PUPDR, 11); clearbit(GPIOA->ODR, 5); // Set Logic 0 for pint PA5 while (1){ togglebit(GPIOA->ODR, 5); // Toggle the output bit for pin PA5 for(i = 0; i < 500000; i++); // Delay } }
Program se zkompiluje při stisknutí na ikonku na spodním stavové liště. Vedle se poté nachází tlačítko k nahrání programu.
sudo usermod -a -G dialout $USER
Spuštění ladění kódu se provede přes nabídku Debug z menu Debug nebo stisknutím klávesy F5
Kód se vždy zastaví na prvním řádku funkce main(), kde debugger vyčkává na další akci uživatele. V následující tabulce je poté výčet všech možných aktivit, co se mohou vykonat:
Všechny tyto funkce jsou dostupné také ve vrchní stavové liště, když se ladí program.
Ladění programu má výhodu v tom, že je možné si prohlédnout stav registrů v jednotlivých částech programu a podle toho např. odhalit případnou chybu programu. Vlastní hodnota se zobrazí pouze v případě zastaveného programu (některá vývojová prostředí umožňují prohlíšet i online), který můžete vyvolat buď pauznutím běhu nebo v případě, když program dojde k breakpointu.
Všechny dostupné registry jsou v levém postranním panelu v sekci Peripherals nebo Registers. V sekci Peripherals je nastavení všech dostupných periferií, které se mohou s daným typem procesoru využít. Zejména je poté možné i za běhu tyto registry přenastavovat, ale zde je třeba dát pozor, aby se procesor nedostal do nestabilního stavu, případně si zapamatovat změnu a tu následně implementovat do programu. V sekci Registers se nachází jednotlivé registry Rxx, kde procesory STM32 jich mají celkem 32 a poté další registry pro běh procesoru.
Hodnoty registrů se dají upravovat následovně: