Förberedelse programmering STM32

From Chalmers Robotförening
Revision as of 00:39, 26 November 2013 by Vilse (talk | contribs)

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:

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