Salu zusammen Ich bin am verzweifeln :o) Bin seit Stunden hier am probieren die Entwicklungsumgebung MSP430 Eclipse mspgcc zum laufen zu bewegen. Ich habe es nun endlich geschafft ein managed C Project zu erzeugen, habe auch überall nach der Anleitung die hier auf der Homepage ist, msp430x149 eingestellt. Nun habe ich meine bereits existenten Files aus IAR übernommen (neue Files in Eclipse erzeugt und Quellcode kopiert) Includes habe ich mspgcc und noch die von IAR angegeben, aber wenn ich speichere, sprich auch gleich Compiliere, spuckt er mir 60 Errors und jede Menge Warnings raus. Die meisten lauten so in etwa: P1SEL undeclared (first use in this function) Habe auch noch ein Pic angehängt, vielleicht sieht man da was. Ich glaube aber ich habe das deklariert in den .h Files. Kann es sein das ich die noch speziell anhängen muss? Wäre über jede Hilfe dankbar Gruss reflection
Hast du bei den Projekteigenschaften den Pfad bei Includes angegeben, wo die ganzen Header-Files sind? Bei der Standard-Install wäre das: C:\\mspgcc\msp430\include Und auch die msp430x14x.h includiert?
Liste am besten mal alle Fehler auf, dann kann man mehr sehen! Aber es sieht ganz so aus als wenn Du was vergessen hast zu includieren, wie supachris schon erwähnt hat.
Mich wundert es auch das in deinem Projektordner die msp430x14x.h steht.....die steht normalerweise nur im includes-Verzeichnis! Außerdem scheint es auch ein Problem mit ihr zu geben (wegen dem roten Kreuz vor der Datei). Hast Du die manuell dort eingefügt?
Ja das habe ich als es nicht gegangen ist. Habe auch die Sachen von IAR noch eingebunden. Keine Ahnung ob es daran liegt, aber nur mit mspgcc sah es genau so aus. Irgendwie werden die ganzen Ports ect. nicht erkannt. Also sie stehen zwar im .h, aber der Compiler will das nicht so sehen... grrrr Oder muss ich noch andere Sachen abändern wenn ich ein Programm von IAR übernehmen möchte? Klappt das mit dem MSP FET USB Debugger eigentlich problemlos? Sorry für die vielen Fragen, aber langsam zweifle ich echt an mir Gute Nacht Greets
Also die Datei muss da raus, eventuell beißt sich da was, das ist bestimmt die vom IAR. Richtigen Prozessortyp bei Compiler UND Linker eingestellt? Bist du nach der Anleitung gegangen? Anders als bei IAR werden die Interrupts behandelt, musste ma Anleitung schauen, und die signal.h einbinden. Ja, USB-FET klappt mit dem gdbproxy wunderbar. Ich hab den gdb-proxy gleich als external tool im eclipse mit drin, geht prima.
Salu Ich habe jetzt mal aufgeräumt. Hier sieht man auch die Sachen die ich eingebunden habe. Komisch ist, dass er nur schon die .c nicht einbinden kann, die sind ja aber in dem Verzeichnis vorhanden. Ich habe die Anleitung einmal durchgemacht bis ich dazu kam die Datei gdbtarget.ini zu erstellen. Compilieren sollte ich da ja schon können oder sehe ich das falsch? Gruss Serge PS: Mit der Anleitung hatte ich eben so meine Mühe, da der eine Link dort nicht funktioniert. Habe es dann von Hand installiert, kann es sein das ich da noch was vergessen habe? Ein Projekt konnte ich aber genau so erstellen wie es in der Anleitung steht.
1. Seit wann werden C-Dateien direkt includiert? Dafür gibts Header-Files. 2. Ich schätze, in den betreffenden C-Dateien ist die Zeile #include <msp430x14x.h> nicht drin, denn in der Main meckert der die Register nicht an Also, leg mal für die lcd.c usw jeweils eine .h Datei an, und includiere die. Am übersichtlichsten macht man das meiner Meinung nach, wenn man eine projekt.h erstellt, und diese überall includiert. In der project.h dann die prozessorspzifische includieren und alle anderen .h dateien deines Projektes. Dann klappt das auch. Von Hand installieren ist sowieso besser, dann hast du nicht diese hoffnungslos veralteten Versionen aus dem Paket da.
Salu Das verstehe ich jetzt nicht ganz: Also, leg mal für die lcd.c usw jeweils eine .h Datei an, und includiere die. Ich habe ja dort nur C-Code drin in meinen .c Files. Was soll ich dann in die .h schreiben? Was mich wundert ist, dass es in IAR so geklappt hat. Das mit dem include msp430x14x.h werde ich noch probieren
Naja, man kann zwar theoretisch auch c-files includieren, aber das ist schlechter Stil und unübersichtlich. In eine Header-Datei kommen die Funktionsdeklarationen, und eventuelle Defines usw.
Habe nun mal die includes in allen Files gemacht. Nun habe ich nur noch 5 Fehler :o) Er macht immer noch Fehler wenn ich ein .c includen will: lcd.c No such file or directory Er gibt bei jeder for Schleife den Fehler: 'for' loop initial declaration used outside C99 mode Könnt ihr mir vielleicht da noch weiterhelfen? Wäre echt nett! Gruss und Merci im Voraus reflection
Das heisst ich muss die .c gar nicht in der Main Methode deklarieren? Fügt er die automatisch hinzu wenn die im gleichen Directory liegen? Greets
Also, die Fehler mit include der .c Files ging nun. Musste aber das Projekt noch unter includes in den Projectoptions einstellen (dort befinden sich die .c Files). Habe jetzt noch die zwei Fehler mit dem 'for' loop initial declaration used outside C99 mode Gruss reflection
Jo, also das ist halt ziemlich schlechter Stil, includiert werden keine C-Files sondern Header-Dateien, in denen die Funktionen des C-Files deklariert sind. Dann müsstest du in der main.c halt nur #include "lcd.h" machen. In der lcd.h steht dann z.B. void InitLCD(void); In der lcd.c kommt dann die komplette Funktion: void InitLCD(void) { blabla.... } So macht man das, das wird übersichtlich und entspricht dem Include-Prinzip. Den C99 Fehler bekommst du weg, in dem du keine Schleifenvariablen direkt in der Schleife deklarierst, sondern vorher. Oder den Compiler umstellen auf C99 Modus. Da weiß ich aber grad nich, welche Option da rein muss....
Habe ich erfolgreich bei einer der beiden for Schleifen hin gekriegt, bei der anderen will es nicht. Die Schleife lautet folgendermassen: void sendString(char* string) { for(int i = 0; string[i] != '\0'; ++i) Wenn ich das jetzt so schreibe: void sendString(char* string) { int i; for(i = 0; string[i] != '\0'; ++i) bekomme ich wieder 20 Errors. Er sagt dann bei jeder Funktion bei der geschweiften Klammer, dass dies das erste mal in dieser Funktion deklariert sei. Gibt dann auch zig Fehler wegen doppeldeklaration, aber das kann irendwie auch nicht sein, da ich es auch schon mit einer anderen Variable (j) versucht habe und diese garantiert nicht verwendet wird. Sorry für die Beschreibung, aber weiss nicht wie ich das verständlicher rüberbringen soll. Der Rest klappt. Ein riesen Dankeschön an die die mir geholfen haben! Gruss reflection
Tjo, weiß ich auch nich, aber mach doch:
1 | while(string) |
2 | {
|
3 | Senfunktion.... |
4 | string++; |
5 | }
|
Salu Hm, irgendwie will es nicht. Bin seit über 2h an dieser for Schleife und seh es einfach nicht wieso ich das nicht machen kann. Habe ich da vielleicht Probs mit dem Array of Char?
Naja, auf Pointer greift man normalerweise nicht mit Indizes zu....aber bei mir compiliert der obigen Quellcode....
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.