Hrvatsko društvo za robotiku - Uvod u robotiku - vježbe

ARM

Cilj

Dati ideju kako izgleda ARM programiranje. Ova stranica nije osmišljena kao operativne upute, nego kao kratki pregled programiranja.

Datoteke

×
Koristimo STM32CubeIDE radnu okolinu. Nakon što čarobnjakom napravimo projekt za dani mikrokontroler, STM32F042G6, dobit ćemo strukturu sličnu prikazanoj na slici lijevo.

Budući da upute nisu operativne, preskočili smo niz koraka u kreiranju projekta, što ćemo činiti i dalje. Preskakati i pokazivati bitne momente.

Projekt smo nazvali "mrm-fet-can" (1). Baziran je na primjeru iz prakse, firmwareu za ML-R mrm-fet-can pločicu. Kako pločica ima samo 2 digitalna izlaza, primjer će biti gotovo minimalne kompleksnosti. Digitalni izlazi pokreću 2 FETa, koji otvaraju 2 strujna kruga.

Generirane datoteke od interesa će biti: "main.c" (2) i "mrm-fet-can.ioc" (3).

Ostale su datoteke ili generirane čarobnjakom ili ih je napravio korisnik. Njih nećemo proučavati.

mrm-fet-can.ioc

×
Dvostruki klik na "mrm-fet-can.ioc" otvara grafički editor u kojem se postavljaju parametri čipa.

Postoje 3 nivoa programiranja ARM mikrokontrolera. Mi ćemo koristiti najapstraktniji, HAL (HAL Abstraction Layer), koji će nas najbrže dovesti do cilja.

Na desnom dijelu slike je mikrokontroler sa svojim pinovima.

Na lijevoj su funkcionalne grupe koje postavljaju parametre mikrokontrolera.

Na samom vrhu su tabovi s cjelinama najvišeg nivoa. Trenutno je izabran tab "Pinout & Configuration".

Digitalni izlaz

×
Postavimo jedan pin kao digitalni izlaz.

Kliknemo na pint "PB1", što će rezultirati menijem kao na slici.

Pinu možemo pridružiti razne funkcije. Svaki ima svoj skup mogućnosti.

U našem slučaju biramo "GPIO_Output", što će programirati pin kao digitalni izlaz.

Konfiguracija izlaza

×
U lijevom dijelu ekrana vršimo detaljnu konfiguracije izabrane funkcionalnosti pina.

Kako je riječ o jednostavnom digitalnom izlazu, parametara će biti vrlo malo i obično neće trebati ništa mijenjati.

Kliknemo na "System Core" (1).

Osjetimo li želju mijenjati nešto, imamo priliku u novotvorenom prozoru "Configuration", koji je posljedica klika na "GPIO" u "System Core".

U prozoru nađemo "PB1" (2) i mijenjamo parametre po potrebi.

Frekvencije

×
Frekvencije podešavamo u prozoru "Clock Configuration".

Ukratko, ulaz je 16 MHz ("Input frequency") (1) i dolazi iz kristala.

Biramo puteve i parametre tako da tih 16 MHz uzrokuje "HCLK (MHz)" (2) od 48 MHz.

Kod

×
Spremanje datoteke "mrm-fet-can.ioc" će generirati kod, između ostalog u našoj datoteci od interesa, "main.c".

Dijelovi između parova "USER CODE BEGIN..." i "USER CODE END..." će biti sačuvani, ostatak pregažen novogeneriranim kodom. Npr., bit će sačuvano sve između ove 2 linije:
/* USER CODE BEGIN PM */

/* USER CODE END PM */
Na slici lijevo je funkcija "MX_GPIO_Init()", koja programira parametre pina i koja ima točno parametre koje smo postavili u "mrm-fet-can.ioc" ekranu.

Mi ih možemo mijenjati, ali svako će nova generiranje koda pregaziti naše promjene.

HAL se razlikuje od ostala 2 pristupa programiranju zato što se parametri unose grafički na jednostavan način, a kod se generira.

Ispod opisane funkcije se nalazi korisnički kod u dijelu koji počinje iza "USER CODE BEGIN 4".

Primjedbe



Projekt "Uvod u robotiku" sufinanciran je iz Europskog socijalnog fonda, poziv "Jačanje kapaciteta organizacija civilnoga društva za popularizaciju STEM-a". Relevantne stranice: Sadržaj vježbe za virtualne radionice isključiva je odgovornost Hrvatskog društva za robotiku.