Hallo Leute,
Ich versuche einen Einstieg in die MC-Programmierung mit dem Cortex M3
zu finden. Bei meinem System Handelt es sich um einen LPC1768 Chip von
NXP und die Programmierumgebung MDK-µVision von Keil. Ich kann bereits
in C Programmieren. Was ich brauche ist eine Starthilfe darüber, wie man
ein Projekt mit µVision für speziel NXP-1768 anliegt um z.B ein
einfaches "Hello World" Programm zu erzeugen und simulieren. Auch für
weitere Tips bezüglich Bibliothek, Simulation am PC, Programmbeispiele
u.s.w bin ich euch sehr dankbar.
mfg Monem
Hallo,
ich habe vor einer Woche angefangen mit dem LPC1769LPCXpresso-Board und
der kostenlos zur Verfügung gestellten Entwicklungsumgebung von CodeRED.
Als erstes würde ich mir mal die ganzen Beispiele und PDFs herunterladen
(siehe ganz unten):
http://www.nxp.com/#/pip/pip=[pip=LPC1768FBD100]|pp=[t=pip,i=LPC1768FBD100]
Da hat es auch Beispielprojekte für KEIL dabei soweit ich weis
(zumindest beim LPC1769). Dann noch ein paar praktische Anwendungen wie
BLDC-Motor-Controller usw.
Dann noch das LPC17xx User Manual :
http://www.nxp.com/documents/user_manual/UM10360.pdf
Und Du hast alles wichtige zusammen.
Hab jetzt in der ersten Woche die GPIO/INT, UART, PWM, Timer, ADC & DAC
hinbekommen und für mein Projekt erweitert / ergänzt.
Ein Tutorial wie hier für die ATMELs habe ich noch keins finden können.
Grüße
N.Müller
Danke euch, Es geht mir ersteinmal um die Simulation am PC. Konkret will
ich ersmal wissen wie ich ein Hello World für LPC17XX erzeugen und
ausgeben kann (ohne Hardware), und was ich für das Projekt brauche. Also
zum testen gehe ich wie folgt vor:
1-µVision4 starten;
2-Project->New µProject;
3-den LPC1768 aus der Liste als Zielgerät auswählen;
4-ein C-Dati anlegen und dem Projekt hinzufügen;
5-Danach folgende Code eingeben:
#include "LPC17XX.h"
#include "stdio.h"
int main(void){
printf("Hello World\n");
}
So, nun könnte man meinen alles sei doch richtig, aber ich bekomme den
Fehler: Hallo.axf: Error: L6411E: No compatible library exists with a
definition of startup symbol __main.
Naja ich schau mir nochmal die Links an.
mfg Monem
Wohin soll deine printf() das denn schreiben? Die Verwendung solcher
Funktionen auf einem Mikrocontroller ist am Anfang recht aufwändig, für
einen Anfänger mit Sicherheit nicht das Richtige. Lass erst einmal ein
paar LEDs blinken und lies den Zustand von ein paar Tastern ein. Als
nächstes kannst du mit dem ADC spielen und dann die Timer und
Interruptfunktionen ausprobieren.
Dein Fehler kommt vom Linker.
Irgendwo in der startup.s sollte etwas in der Richtung stehen:
1
IMPORT __main
2
LDR R0, __main
3
BX R0
Dieses Symbol kann der Linker nicht richtig zuordnen. Schau nochmal
nach, ob die C-Datei wirklich Teil des Projektes ist.
@Frank,
Ja, hast recht in diesem Fall hatte ich tatsächlich vergessen die C
datei hinzuzufügen, allerdings wird jetzt eine neue Fehlermeldung
ausgegeben:
Hallo.axf: Error: L6218E: Undefined symbol SystemInit (referred from
startup_lpc17xx.o)
Ich dachte ich könnte das einfach an UART ausgeben oder so.
Gut, ich werd es dann ersmal mit LED's probieren. Wie gesagt, wenn auch
hierbei einpaar Beispielprogramme oder Toutorials zu finden wären würde
ich mich sehr darüber freuen.
besten Dank
monem
Monem schrieb:> Ich dachte ich könnte das einfach an UART ausgeben oder so.> Gut, ich werd es dann ersmal mit LED's probieren. Wie gesagt, wenn auch> hierbei einpaar Beispielprogramme oder Toutorials zu finden wären würde> ich mich sehr darüber freuen.
Dafür brauchst du eine Funktion, die die Ausgaben von printf() auf die
UART umlenkt. Deine eigene putc() eben.
In den Keil-Beispielen sollte ein Blinky-Programm sein, das hilft
erstmal sehr weiter.
Darüber hinaus gibt es auch von NXP viele Beispiele. Such dir einfach
das Passende heraus.
SystemInit() ist ein elementarer Bestandteil von CMSIS (google!).
Entweder, du schreibst dir die Funktion selbst, dazu brauchst du ein
ziemlich gute Kenntnisse über die Controller-HW und komplexe Strukturen
in C. Wenn dir das erstmal zu viel ist, dann benutze die Datei
system_LPC17xx.c aus den Keil-Beispielen, zum Beispiel für das
MCB1700-Evalboard. Damit solltest du auf jeden Fall lange hinkommen.
Pete K. schrieb:> Wie wäre es mal mit dem Studieren des Datenblatts?
Dein Getrolle kannst du getrost sein lassen. Im Datenblatt zum LPC17xx
steht nichts zu dieser Funktion, oder dass sie Teil von CMSIS ist.
Die Informationen aus Handbuch und Datenblatt zu CMSIS sind sowieso
recht übersichtlich.
Hallo Zusammen,
ich möchte auch mit der Programmierung von solchen Cortex M3 Dingern
beginnen.
Meine C Kenntnisse sind nach bald 20 Jahren doch schon recht
eingerostet... Sollte aber mit etwas üben wieder gehen.
Gibt es auch Entwicklungstools für Mac OSX?
Und kennt jemand ein gutes Buch das quasi bei Null anfängt?
Ich hab mir ein STM32F103VE Board besorgt in der Hoffnung, dass ich
damit schonmal etwas zum Anfangen hab.
Über Tips für Anfänger bin ich sehr dankbar.
viele Grüsse
Flex
Eine eigene Frage?
Dieser Thread ist über 15 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.