Forum: Compiler & IDEs CrossWorks und die STM32 LIb. Wie includiere ich C Dateien


von C. H. (hedie)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Ich habe zuvor mit Atollic True Studio gearbeitet.
Leider reichten mir die 32KB Codebeschränkung nicht aus.

Nun bin ich auf CrossWorks umgestiegen.

[off-topic]
Übrigens, Atollic bietet keine vergünstigte Lizenz an. Derzeit (bis ende 
Jahr) kostet eine Volllizenz 1600€ danach wieder 2000€!
Educational Lizenzen gibts nur ab 10 stk und auch nur wenn eine UNI oder 
sonstige Insitution kauft und zusätzlich noch Vollizenzen kauft.
[/off-topic]


Folgendes Problem:

Ich möchte die StdPeripheralLibrary von ST nutzen.
Dazu habe ich mir die Ordnerstruktur von Atollic abgeschauf bzw. 
übernommen.

In meinem Projekte Ordner befindet sich nun ein Ordner namens Libraries
Darin befindet sich die Lib.

Ich habe bei Crossworks rechtskklick auf mein Projekt -> Properties -> 
oben rechts Private/Common ausgewählt und bei UserDefined Includes 
folgendes angefügt:

$(ProjectDir)/Libraries/STM32F10x_StdPeriph_Driver/inc
$(ProjectDir)/Libraries/CMSIS/CM3/CoreSupport
$(ProjectDir)/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x

Das gesamte includes sieht so aus:

$(TargetsDir)/STM32/include  <---- Dise waren scho da!
$(TargetsDir)/CMSIS_3/CMSIS/Include  <---------
$(ProjectDir)/Libraries/STM32F10x_StdPeriph_Driver/inc
$(ProjectDir)/Libraries/CMSIS/CM3/CoreSupport
$(ProjectDir)/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x

In menem main.c erkennt crossworks dadurch ein include mit
1
#include <stm32f10x_rcc.h>

Aber wenn ich nun
1
RCC_DeInit();

mache, bekomme ich die Meldung "undefined reference to 'RCC_DeInit'

Weshalb den das? Muss ich den Ordner mit den C-Files auch ins 
UserDefinedIncludes mitaufnehmen?

Anbei meine jetztiges Projektverzeichnis (damit ihr die Struktur sehen 
könnt=)

Bin wirklich über Hilfe dankbar!

von Dr. Sommer (Gast)


Lesenswert?

.c Files werden nicht included. Füge sie nur zum Projekt hinzu damit 
sie mit kompiliert werden.

von C. H. (hedie)


Lesenswert?

Dr. Sommer schrieb:
> .c Files werden nicht included. Füge sie nur zum Projekt hinzu
> damit
> sie mit kompiliert werden.


CrossWorks kann nun builden! Danke

ABER... Wenn ich rechtsklick auf 'RCC_DeInit()' mache und
"Go to Definition" wähle, sagt er mir dass er die Definition nicht 
findet.

Was soll das CrossWorks?

Und weiss vielleicht noch jemand ob ich etwas aktivieren kann, dass mir 
CrossWorks anzeigt ob ein #if erfüllt ist oder nicht?

Eclipse markiert ja automatisch die nicht aktiven Bereiche grau.
Sowas vermisse ich sehr!

Auch vermisse ich das springen zur definition mit ctrl+Mausclick
und die Autovervollständigung mit ctrl+leertaste schein es in CrossWorks 
auch nicht zu geben oder mache ich was falsch?

Anscheinend hätte ich spaaren sollen für die 1600€ Atollic ;)

von Dr. Sommer (Gast)


Lesenswert?

Keine Ahnung wie man diese komische IDE bedient.

Claudio Hediger schrieb:
> Anscheinend hätte ich spaaren sollen für die 1600€ Atollic ;)
Oder du zahlst 0€ für gcc-arm-embedded und eclipse - 
http://www.mikrocontroller.net/articles/STM32#Freie_Software.2FFreeware

von avr3 (Gast)


Lesenswert?

Claudio Hediger schrieb:
> Was soll das CrossWorks?
>
> Und weiss vielleicht noch jemand ob ich etwas aktivieren kann, dass mir
> CrossWorks anzeigt ob ein #if erfüllt ist oder nicht?
>
> Eclipse markiert ja automatisch die nicht aktiven Bereiche grau.
> Sowas vermisse ich sehr!
>
> Auch vermisse ich das springen zur definition mit ctrl+Mausclick
> und die Autovervollständigung mit ctrl+leertaste schein es in CrossWorks
> auch nicht zu geben oder mache ich was falsch?
>
> Anscheinend hätte ich spaaren sollen für die 1600€ Atollic ;)

Wenn das alles ist was du von einer IDE erwartest, dann bist du bei 
Crossworks wirklich falsch. Wenn ich aber sehe was du bis jetzt für 
Fragen gestellt hast, glaube ich kaum dass du überhaupt einschätzen 
kannst ob eine IDE gut ist oder nicht. Wer bei deinen trivialen 
Problemen schon nach Hilfe schreit sollte sich mit Kritik an der Arbeit 
anderer zurück halten.

Meistens ist der Editor bzw. die Eingabehilfen das was die niedrigste 
Priorität hat. Ist bei Keil auch nicht anders. Wer auf so was abfährt 
sollte bei Eclipse bleiben oder CooCox. Und die die wirklich entwickeln 
sind die meiste Zeit sowieso mit Denken beschäftigt. Da bringt es 
zeitlich nichts wenn man den Quellcode mit 100 Anschlägen pro Minute 
reinhackt... Viele alte Hasen, vor allem die die auf vielen Plattformen 
unterwegs sind, benutzen sowieso für die normale "Schreibarbeit" ihren 
Lieblingseditor und makefiles für Projekte und die IDE hauptsächlich für 
die Fehlersuche/Analyse.

von C. H. (hedie)


Lesenswert?

avr3 schrieb:
> Viele alte Hasen, vor allem die die auf vielen Plattformen
> unterwegs sind, benutzen sowieso für die normale "Schreibarbeit" ihren
> Lieblingseditor

Erstklassige Idee!

Ich kann ja auch weiterhin Eclipse nutzen und einfach zum Compilieren 
Crossworks!

Ausgezeichnet!

von avr3 (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Oder du zahlst 0€ für gcc-arm-embedded und eclipse

Zum Quellcode schreiben sicher ganz nett, bei Debuggen gibst für die 
meisten µCs nicht mal eine vernünftige Sicht auf die Peripherie. Das 
stört die STM32-User aber eh nicht, da die meisten nur auf die Stm-Lib 
Programmieren und somit nicht mal wissen wofür die Peripherie-Register 
da sind. Was man nicht kennt vermisst man halt nicht.

von avr3 (Gast)


Lesenswert?

Claudio Hediger schrieb:
> Ich kann ja auch weiterhin Eclipse nutzen und einfach zum Compilieren
> Crossworks!

Zum Compilieren braucht man weder Crossworks noch Eclipse. Ein Projekt 
ist im meinen Augen erst dann fertig, wenn ich es ohne Abhängigkeit von 
einer Entwicklungsumgebung mit den gnu-arm-tools übersetzt und lauffähig 
bekomme. Nur das verschafft mir die Freiheit und Unabhängigkeit die ich 
für mich will. Was währen der Entwicklung für Werkzeuge benutzt werden 
steht auf einem anderen Blatt.

von C. H. (hedie)


Lesenswert?

avr3 schrieb:
> da die meisten nur auf die Stm-Lib
> Programmieren und somit nicht mal wissen wofür die Peripherie-Register
> da sind. Was man nicht kennt vermisst man halt nicht.

Da lehnst du dich nun aber ein bisschen weit aus dem Fenster!

Warum sollen alle User das Rad nochmals neu erfinden?

Die ST-Lib ermöglicht einen komfortablen Zugriff auf die Peripherie!
Wenn es dann mal nicht so läuft wie ich möchte, schaue ich 
selbstverständlich auch in den entsprechenden Registern nach, ob den die 
Bits auch so gesetzt sind wie ich möchte.

von C. H. (hedie)


Lesenswert?

avr3 schrieb:
> Claudio Hediger schrieb:
>> Ich kann ja auch weiterhin Eclipse nutzen und einfach zum Compilieren
>> Crossworks!
>
> Zum Compilieren braucht man weder Crossworks noch Eclipse. Ein Projekt
> ist im meinen Augen erst dann fertig, wenn ich es ohne Abhängigkeit von
> einer Entwicklungsumgebung mit den gnu-arm-tools übersetzt und lauffähig
> bekomme. Nur das verschafft mir die Freiheit und Unabhängigkeit die ich
> für mich will. Was währen der Entwicklung für Werkzeuge benutzt werden
> steht auf einem anderen Blatt.

Wir sprechen hier von Hobbyprojekten und nicht von Berufsprojekten wo 
man unendlich viel Zeit hat für die einarbeitung und dann noch die 
umsetzung.

Ich mag mich nicht elends lange mit den nötigen tools rumschlagen, nur 
damit dannach eine LED blinkt oder sonst was funtzt!

von avr3 (Gast)


Lesenswert?

Claudio Hediger schrieb:
> Die ST-Lib ermöglicht einen komfortablen Zugriff auf die Peripherie!
> Wenn es dann mal nicht so läuft wie ich möchte, schaue ich
> selbstverständlich auch in den entsprechenden Registern nach, ob den die
> Bits auch so gesetzt sind wie ich möchte.

Die ST-Lib ist ein schlechter Witz. Schlecht oder gar nicht 
dokumentiert. Aufgeblasen bis zum geht nicht mehr. Nimm einen Debugger 
und steppe mal durch die Lib. Ist schon beachtlich was da selbst für die 
simpelsten Sachen immer wieder aufgerufen wird. Langfristig wird bei den 
Controllern wohl das selbe passieren wie im PC-Umfeld auch. Zig APIs 
übereinander und ein "Hello World" braucht 10Mb und 5 Sekunden bis zu 
Start nachdem es sich 120 verschiedene dlls reingezogen hat.
Ist aber wie immer meine eigene ganz persönliche Meinung.

von Dr. Sommer (Gast)


Lesenswert?

avr3 schrieb:
> Ist schon beachtlich was da selbst für die
> simpelsten Sachen immer wieder aufgerufen wird.
Interessant wäre mal zu sehen was passiert wenn man mit Optimierungen 
compiliert, die Aufrufe inlined werden, und die Berechnungen der Bits 
etc. vom Compier vorgenommen werden. Vielleicht ist das, was übrig 
bleibt, gar nicht so ineffizient.

Ansonsten gebe ich dir aber Recht, das API, der generelle Aufbau und die 
Doku der Library sind extrem schlecht.

von Herbert (Gast)


Lesenswert?

avr3 schrieb:
> Die ST-Lib ist ein schlechter Witz. Schlecht oder gar nicht
> dokumentiert.

Ja, die Lib kapiert nicht jeder. Aber wenn man es mal verstanden hat, 
dann wird man es schätzen. Zumindest, wenn größerer Code gefordert ist. 
Für eine Lichtschranke reicht auch ein Tiny.

von Dr. Sommer (Gast)


Lesenswert?

Herbert schrieb:
> Ja, die Lib kapiert nicht jeder. Aber wenn man es mal verstanden hat,
> dann wird man es schätzen.
Oder hassen, weil man selber weiß wie man sie viel besser hätte 
programmieren können, s.d. sie viel komfortabler gewesen wäre. Das kommt 
halt raus wenn Firmen die nur mit Silizium umgehen können Software 
produzieren.

von big boy (Gast)


Lesenswert?

avr3 schrieb:
> Die ST-Lib ist ein schlechter Witz. Schlecht oder gar nicht
> dokumentiert. Aufgeblasen bis zum geht nicht mehr.

Na ja, wenn man größere Projekte nicht versteht. :-D  Dann bleibt man 
bei seinem 8 Bit Spielzeug.

Die ST Lib ist eine tolle Erleichterung. Man würde ja selbst auch etwas 
vergleichbares schaffen, um effektiv Code zu erzeugen.

Also ab in den Sandkasten und lass die großen Jungs arbeiten. ;-)

von big boy (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Oder hassen, weil man selber weiß wie man sie viel besser hätte
> programmieren können

Du musst sie nicht benutzen! Schreib etwas besseres und stell es hier 
ein. Ich bin gespannt. :-D

von Dennis (Gast)


Lesenswert?

Herbert schrieb:
> Ja, die Lib kapiert nicht jeder. Aber wenn man es mal verstanden hat,
> dann wird man es schätzen.

Guter Witz. Die Lib wird bei st von irgendwelchen Studenten und 
Praktikanten geschrieben, dementsprechend ist es auch geworden. 
Uneffizient, sehr langsam (ja, auch mit Compileroptimierungen), gefühlt 
10* komplizierter aufgebaut, als es eigentlich sein müsste. Für 
Hobbyprojekte sicher nicht schlecht, aber wenn mir einer unserer 
Entwickler soetwas vorsetzen würde, dann wäre er in zwei Wochen sicher 
nicht mehr bei den Programmierern.

von Dennis (Gast)


Lesenswert?

big boy schrieb:
> Schreib etwas besseres

Schon längst passiert :-)

big boy schrieb:
> und stell es hier
> ein.

Damit Nullen, die von Tuten und Bl.... keine Ahnung haben hinterher auch 
noch kostenlos und erschöpfend Support einfordern?? Vergiss es. Selber 
lernen macht erst schlau...

von gettoblaster (Gast)


Lesenswert?

big boy schrieb:
> Also ab in den Sandkasten und lass die großen Jungs arbeiten.

Du meinst die dummen Jung's. Wer die stm32-lib gut findet kann nur 
dieser Kategorie angehören oder keine Ahnung haben. Man kan sie nutzen. 
Einverstanden. Aber Gut geht anders. Wie man eine größere Lib recht gut 
schreibt könnt ihr mal bei mbed nachsehen. Vorausgesetzt die 
Sprücheklopfer hier verstehen das überhaupt.

Die "großen Jungs" arbeiten ohnehin nicht ausschließlich mit STM32. 
Sobald aber mehrerer verschiedene Controller zum Einsatz kommen, wird 
man sich selbst eine Abstraktion für die Hardwarekomponenten die man 
selbst einsetzt schreiben. Da das dann nur dem eigenen Zweck dient wird 
es auch schlank und übersichtlich. Das aber auf den Müllhaufen ST32lib 
aufzusetzten wäre wirklich das Letzte.

big boy schrieb:
> um effektiv Code zu erzeugen
STM32lib und effektiv ist ein Widerspruch in sich.

von gettoblaster (Gast)


Lesenswert?

Dennis schrieb:
> Damit Nullen, die von Tuten und Bl.... keine Ahnung haben hinterher auch
> noch kostenlos und erschöpfend Support einfordern?? Vergiss es. Selber
> lernen macht erst schlau...

Dem kann ich mich anschließen. Wenn man sieht wieviel hier im Forum über 
solche trivialen Dinge wie z.B. Tastenentprellung gepostet wird, hat man 
manchmal das Gefühl hier sind nur Copykids unterwegs. Sich mal wirklich 
Gedanken machen und erst dann um Hilfe bitten wenn man wirklich am Ende 
ist, ist absolut die Ausnahme. Deshalb kann ich Dennis nur zu gut 
verstehen, wenn er hier keinen Code posten möchte. Die einen Nörgeln 
weil sie's nicht verstehen und hinkriegen und die anderen weil sie es 
selbst viel besser können.
Hier steht aber nicht ein einzelner Programmierer in der Kritik sondern 
ein Unternehmen. Und ja, es ist ein Armutszeugnis wenn man sieht wie 
lieblos die STM32lib das zusammengehauen wurde.

von Herbert (Gast)


Lesenswert?

Es ist mir ziemlich Latte, ob die Lib von Studenten programmiert wurde. 
Ich war auch mal einer und besser als meine Chefs.

gettoblaster schrieb:
> Hier steht aber nicht ein einzelner Programmierer in der Kritik sondern
> ein Unternehmen. Und ja, es ist ein Armutszeugnis wenn man sieht wie
> lieblos die STM32lib das zusammengehauen wurde.

Ich denke, dafür das Atmel das ganze von der Open-Source-Gemeinde 
kostenlos in den Arsch gesteckt wurde, hat sich ST schon Mühe gegeben. 
Wie auch immer.
Ich komme auch mit anderen Libs klar. Dafür sind sie ja da.

Dennis schrieb:
> big boy schrieb:
>> Schreib etwas besseres
>
> Schon längst passiert :-)

Das kenne ich auch. Das sind immer die, die es immer besser können und 
wissen und dann doppelt solange brauchen und nicht mal den Mut haben, zu 
zugeben, dass es am Ende umständlicher war.

Horrido

von gettoblaster (Gast)


Lesenswert?

Herbert schrieb:
> Ich war auch mal einer und besser als meine Chefs

Mehr brauchst du nicht sagen. Mit solchen Sprüchen ist dein Horizont 
ausreichend beschrieben.

von Herbert (Gast)


Lesenswert?

gettoblaster schrieb:
> Das aber auf den Müllhaufen ST32lib
> aufzusetzten wäre wirklich das Letzte.

Ich glaube Dir beim besten Willen nicht, dass Du diese Lib a) schon mal 
gesehen und b) wenn doch, überhaupt verstanden hast. Aber gut. Man lenke 
ein:

Bitte ein Beispiel einer besseren Lib (auch Deine, falls vorhanden). Die 
Lib brauchst Du auch nicht veröffentlichen. Also nur ein 
Anwendungsbeispiel in Gegenüberstellung mit einer Anwendung aus der 
STLib. Wenn Du dann noch in der Lage wärst einen Code-Größenvergleich 
aufzustellen, dann bin ich ruhig. Aber das wird ganz sicher nicht 
passieren.

von Dennis (Gast)


Lesenswert?

Herbert schrieb:
> Ich glaube Dir beim besten Willen nicht, dass Du diese Lib a) schon mal
> gesehen und b) wenn doch, überhaupt verstanden hast. Aber gut. Man lenke
> ein:

Glauben sollte man in der Kirche. Bei uns in der Firma ist Wissen 
angesagt :-)

Mit der st-Lib habe ich mich sowohl persönlich auseinandergesetzt als 
auch mit dem FAE von st bestimmt zwei Stunden darüber unterhalten. Die 
Lib wird von st ja auch nur als Entwicklungshilfe angeboten, vom 
professionellem Einsatz ist bei st meines Wissens nie die Rede gewesen. 
Wie dem auch sei. Wenn einer es im prof. Umfeld einsetzen möchte, so ist 
das sein Bier. Solche Konkurrenz ist allseits beliebt :-)

Herbert schrieb:
> Bitte ein Beispiel einer besseren Lib (auch Deine, falls vorhanden). Die
> Lib brauchst Du auch nicht veröffentlichen. Also nur ein
> Anwendungsbeispiel in Gegenüberstellung mit einer Anwendung aus der
> STLib. Wenn Du dann noch in der Lage wärst einen Code-Größenvergleich
> aufzustellen, dann bin ich ruhig. Aber das wird ganz sicher nicht
> passieren.

Tue ich sehr gerne. Du baust mit der st Lib, ich mit meiner. Compiler: 
Keil (gibt es auch kostenlos als Testversion). µC: STM32F051R8T6, 
Anwendung: USART mit 32Byte Receive Buffer, 64 Byte Transmit Buffer, INT 
gesteuert. Vorgabe: 921600 Baud, 8N1, CMSIS, industrielle Qualität :-)

Los gehts...

von big boy (Gast)


Lesenswert?

gettoblaster schrieb:
> big boy schrieb:
>> um effektiv Code zu erzeugen
> STM32lib und effektiv ist ein Widerspruch in sich.

Effektiv heisst nicht wenig, sondern stabilen, wartbaren und in 
kostenverträglicher Zeit erstellten Code. Wie lange braucht man die 
Zeilen der ST Lib "nach zu schreiben"?

Dennis schrieb:
> big boy schrieb:
>> Schreib etwas besseres
>
> Schon längst passiert :-)

Und wo isses? Nur wieder heiße Luft von unseren Pantoffelhelden. ;-)

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.