Förberedelse programmering STM32
Förord
Jag som gjort denna guide vill inte påstå mig ha en överlägset bra koll på allt det jag skriver om, utan snarare är jag en nybörjare själv som nyligen fått igång det jag skriver om. Men min förhoppning är att jag, till skillnad från mer erfarna medlemmar i föreningen, har just på grund av detta möjlighet att skriva en guide som riktar sig till den totala nybörjaren och jag kommer inte utgå från att du har erfarenhet av linux, mikrokontrollers eller C programmering. Guiden är tänkt att läsas från början till slut, och hoppa över de delar som inte berör dig.
Det är lätt att drunkna i information, samtidigt som man inte hittar svar på de allra mest basala frågor, när man vill lära sig något nytt. min erfarenhet är att man fastnar på ett litet problem, som t.ex. ett felmeddelande under en installation, och i letan om vad meddelandet säger så hittar man en uppsjö bra guider och forum som berör ämnet, men det slutar allt som oftast med att man länkas vidare i många steg, så att i slutet av kvällen har man 100 flikar öppna med halvlästa guider i webbläsaren. för att spara Din tid så kommer jag försöka att lägga in "allt" material du behöver på denna sida (exkl. saker du behöver ladda hem), så att minimalt antal avstickningar från denna guide behövs under hela förloppet. när länkar till annat material presenteras så är det dels en källhänvisning (cred till den person som skrev orginalguiden) eller en möjlighet att läsa mer om ämnet.
Har du frågor, fastnar du, får du problem, eller vill du bara tacka för hjälpen; hör av dig till en styrelse-medlem!
Innan du börjar
Detta behöver du:
- Tid
- Passion och nyfikenhet
- Förmåga att läsa engelska
- En dator med ~10GB ledigt på hårddisken
- Ett usb-minne (enklast för installation av Ubuntu) ( fungerar även med t.ex. CD/DVD skiva)
Operativsystem
som sades i introARM förberedelse kommer du behöva ett Linux-operativsystem på din dator. Vi rekommenderar Ubuntu då det är vanligaste Linux-operativsystemet.
Om du har Ubuntu installerat
då är allt som det ska och du kan hoppa ner till grunderna i Ubuntu
Om du har Mac OS X
Kort version (tills det kommer en riktig variant).
Du kan köra nästan samma guide som för Ubuntu till OSX. Du behöver ha XCode installerat för att få lite kompilatorer. Det som inte riktigt fungerar ännu är STM32Flash för att progammera med USB-uartbryggan. I annat fall kan man använda en ST-link (som också finns på STs utvecklingkort). Dessa kostar runt 100-200kr.
Du kan även utan problem köra Ubuntu i Virtual Box. Annars är det bara att googla på Setting up STM32 for OS X Eclipse eller nåt och följa instruktioner.
TODO: Fixa en genomtänkt guide.
Om du har Windows
Det finns 3 sätt att fixa Ubuntu på din dator:
- Installera Ubuntu vid sidan av Windows
- Installera Ubuntu istället för Windows
- Installera en Virtuell Maskin med Ubuntu i Windows
Benjamins guide
Kompilera & installera Kompilator
Installera St-link v2
Installera Eclipse
Tillvägagångssätt för programmering
dokumentation av STM32
dessa dokument vill du ladda hem, och läsa i för att förstå hur just den funktion du vill ha fungerar. reference sheet datasheet disovery board datasheet
Tips om eclipse
filsystem I project
i src lägger du koden du skriver, som slutar på .c
i lib finns bibliotek, främst stdlib från ST, men du kan även ta hem andra bibliotek i framtiden
i inc lägger du alla .h filer
makefile är den fil som läses av programmet make varje gång du trycker på kompilera i eclipse. det är ungefär som en göralista som styr vad som ska utföras av make, för att alla filer ska kompileras, allt ska länkas etc. här behöver du lägga till nya filer du skriver under SRC, annars kommer inte make ta med dem i kompileringen
kompilera i eclipse
skicka över med st-link program
Test program för introARM
debugging
Skriva C-kod
Grunderna
Är du ny? Läs lite i C-bok eller läs exempelkod! Här ska massa länkar till bra material Att lära sig C programmering finnas
skriva kod för stm32
processorer med en ARM kärna skiljer sig från microprocessorer från Atmel och PIC i grund och botten i att .... kärna från arm, periferienheter från ST
Structer
man skriver inte i register, utan man använder ett abstraheringslager, stdlib, med funktioner och structer etc så bör man inte ändra direkt i register
Klockor
finns en uppsjö av klockor i STM32, se "karta"(?)
Exempelkod
för introARM / discovery board gpio uart timer interrupt