Forum: Mikrocontroller und Digitale Elektronik LPCXpresso einrichten


von Markus X. (abrow)


Lesenswert?

Hi,

ich muss innerhalb meines Studiums einen ARM programmieren (Embedded 
Artists Quickstart Board mit LPC1343).
Leider scheitere ich bereits am Einrichten der IDE.
Arbeiten können/sollen wir mit LPCExpresso.
Zu Beginn möchte ich nur schauen ob es prinzipiell funktioniert, sprich 
an einem Pin Spannung ausgeben oder eben auch nicht.
Welche Bibliotheken benötige ich denn dafür und wo bekomme ich die her?
Sind das die CMSIS Sachen? Und wie muss ich die einbinen?
Konkret meine ich, in vielen Beispielen steht z.B.
#include "LPC13xx.h"
Diese Header ist bei mir bisher allerdings nicht vorhanden.
Bekomme bisher nichtmal fertige Beispiele zum Laufen, sprich an meiner 
Konfiguration oder Installation passt wohl noch irgendetwas nicht.

von W.S. (Gast)


Angehängte Dateien:

Lesenswert?

Martin X. schrieb:
> Konkret meine ich, in vielen Beispielen steht z.B.
> #include "LPC13xx.h"
> Diese Header ist bei mir bisher allerdings nicht vorhanden.
> Bekomme bisher nichtmal fertige Beispiele zum Laufen, sprich an meiner
> Konfiguration oder Installation passt wohl noch irgendetwas nicht.

Das was nicht paßt, ist dein Wissensstand.
Also so etwas wie #include prozessorname.h bedeutet eigentlich immer, 
daß man dort all die Hardware-Register des betreffenden Chips in 
C-verwendbarer Form aufgelistet hat.

Allerdings gehen da die Geschmäcker weit auseinander, manche derartigen 
Headerdateien sind megabytegroß und völlig überfrachtet. Du brauchst 
sowas jedoch im Grunde nicht. Schreib dir deine Peripherie-Treiber 
selber (ist nicht schwer, wenn man mal das Refmanual zu Rate zieht) und 
definiere dir dort deine HW-Register gemäß Manual selber.

ich geb dir mal ein Beispiel (SysTick in der Cortex-CPU), wie man sowas 
schreibt:
1
#ifndef DWORD
2
#define DWORD unsigned long
3
#endif
4
5
/* SysTick für alle LPC13xx,  10 ms System-Tick Downcounter, 24 Bit */
6
#define STCTRL  (*((volatile DWORD *) 0xE000E010 ))
7
#define STLOAD  (*((volatile DWORD *) 0xE000E014 ))
8
#define STVAL   (*((volatile DWORD *) 0xE000E018 ))
9
#define STCALIB (*((volatile DWORD *) 0xE000E01C ))

Und wenn du ein 16 Bit Register hast, dann eben DWORD durch WORD 
ersetzen und zuvor
#define WORD unsigned short
und mit dem Byte geht es in gleicher Form.

Sowas verwendest du dann etwa so:
1
/* initialisiert den SysTick mit 10 ms Tickzeit */
2
void InitSystick (void)
3
{ STLOAD = (SysClock / 100) - 1;     // sollte 10 ms ergeben
4
  STVAL  = 0;
5
  System_Tick = Ticks = Stunden = Minuten = Sekunden = 0;
6
  STCTRL = 7;
7
}

Das, was du außerdem noch brauchst, ist ein passender Startupcode (aber 
bitte in Assembler!). Ich häng dir mal ein Beispiel zum verstehenden 
Lesen dran (nicht zum blinden Kopieren), damit du siehst, wie sowas vom 
Prinzip her aussieht.

Jetzt brauchst du bloß noch zu schauen, wie du deinen Assembler und 
Compiler nebst Linker und Fromelf aufrufst und fertig ist die Laube - 
zumindest bekommst du etwas mehr Durchblick als beim schieren 
Ausprobieren irgendwelcher finsterer Demoprogramme.

W.S.

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

Such mal nach LPCOpen, passendes Paket runter laden und laut Anleitung 
importieren. Da findest du Beispiele und Initialisierungsroutinen.

Christian_RX7

von Guest123 (Gast)


Lesenswert?

es gab eine Site microbuilder.eu, die wird zwar nicht mehr gepflegt und 
ist teilweise down, aber der download der Codebase für den 1343 
funktioniert noch: 
https://github.com/microbuilder/LPC1343CodeBase/zipball/master
Teile der Lib sind hier dokumentiert: 
https://www.mikrocontroller.net/articles/Codebase_f%C3%BCr_LPC1xxx
Und bei NXP gab es auch Beispielpakete für den LPC13xx.

Der LPC1343 gehört aber schon zu den ollen Kamellen auch wenn es ein CM3 
ist. Wenn ihr noch ein Veto habt dann wenigstens den LPC1347 nehmen 
(gibts als LPCXpresso Board, da ist dann auch die Debugger HW mit 
drauf), da lässt sich wenigstens das USB ordentlich benutzen. Wenn es 
hauptsächlich um Steuerungen geht ist ein CM0 auch gut genug, hier kann 
man gut mit dem LPC812/824 einsteigen.

Dann ist es noch sinnvoll das Tutorial von LPCXpresso durchzublättern. 
Man muss z.B. in LPCXpresso (und anderen Eclipse IDEs auch) alle 
Suchpfade für includes und libs eintragen.

von PittyJ (Gast)


Lesenswert?

Ich habe gerade einen 11U68 auf Windows und Linux zum laufen gebracht.

Eigentlich ist alles mit dabei, und die Beispiele dafür laufen auch aus 
dem Stand.
IDE Installieren. Dann die Plattform-Bibliothken noch in der IDE 
einbinden, und alles war da.

Was geht denn genau nicht?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.