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.
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.
Such mal nach LPCOpen, passendes Paket runter laden und laut Anleitung importieren. Da findest du Beispiele und Initialisierungsroutinen. Christian_RX7
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.