Hallo,
ich muss hier leider mal ein bischen Frust von der Seele schreiben...
vielleicht geht es ja jemandem genauso und vielleicht hat jemand meine
Phase gerade hinter sich gebracht und kann mit Rat und Tat zur Seite
stehen...
Arbeite mich gerade in die STMicro Controller STM32F4 ein und wechsele
munter zwischen Projektansätzen mit der Cube Software und solchen mit
nativem leeren Projekt in der SW4STM32 hin und her...
Problem ist dabei irgendwie:
Kein einziges Projekt läuft wirklihch ansatzfrei vom Compilieren weg...
Dauernd fehlen irgendwelche Projektverzeichnisse oder sie sind falsch
eingerichtet, Compilerpfade sind nicht gesetzt und so weiter und so
fort.
Kein einziges Beispielprojekt läuft ohne Comilerfehler vom Stapel weg...
Mache ich irgendetwas grundlegendes falsch?
Selbst die durchweg gute Webeite von dem U.Becker weist durchweg
veraltete Bibliotheken auf, die nur noch mit HAL-Treibern des Jahres
~2013 arbeiten, neu erzeugte Projekte können mit den Bibliotheken schon
garnichts mehr anfangen...
Suche ich an den falschen stellen, oder welche Beispiele könnt ihr
vielleicht empfehlen?
Ich bin ein konservativer alter Knacker und benutze deswegen Coocox
1.7.7 mit Std.Peri.Lib.
Coocox bastelt einem ein recht ansehnliches Projektverzeichnis zusammen,
wenn man weiss, was man möchte (also z.B. nur GPIO, oder den ADC, usw.)
so das ein Projekt nur ein paar Minuten bis zur ersten Blink LED
braucht.
Cube ist bestimmt toll, aber für so eine kleine MC Kiste mir persönlich
schon zu abstrahiert - das ist ja kein 3D Spiel für Windows, sondern nur
ein MC :-P
Mit der o.a. IDE lassen sich z.B. auch Uwe B.s Libraries ohne Probleme
bauen und benutzen.
Das Durcheinander bei den IDE für STM32 ist schon recht ansehnlich, von
Keil und Konsorten mal ganz abgesehen - deswegen halte ich mich da auch
raus.
Hallo ST,
bisher hatte ich solche Probleme noch nicht.
Du hast 2 Möglichkeiten die STD Lib oder die HAL Lib zu nutzen.
Beide haben wenn du die komplette bei ST runter lädst einige Beispiele
für diverse IDEs enthalten. Ich nutze den IAR zu Hause in der 32k
begrenzten Version.
Mittlerweile baue ich mir die Projekte selbst zusammen und orientiere
mich an den Beispielen aus der Lib.
Was bisher auch immer funktioniert hatte war ein Grundprojekt mit dem
CubeMx für IAR zu erzeugen, wo je nach tiefe einiges initalisiert wird
und gleich funktionierte.
Welche IDE nutzt du denn?
ich nutze die SW4STM32 von AC6.
Das ist, soweit ich es überblicke, die einzige IDE, die tatsächhlich
100% Freeware ist und offiziell von ST unterstützt wird.
ST schrieb:> Problem ist dabei irgendwie:> Kein einziges Projekt läuft wirklihch ansatzfrei vom Compilieren weg...
Schau Dir mal die wordclock24 hier im Forum an. Toll strukturiertes, gut
kommentiertes Projekt mit vielen Facetten für STM32 ... und ließ sich
nach dem Download sofort problemlos compilieren.
ST schrieb:> ich nutze die SW4STM32 von AC6.
Das ist sehr vernünftig.
Zusammen mit STM32CubeMX eine gute Sache.
Bin auch gerade dabei für ein Nucleo F7 alle Hardware in kleinen
Einzelprojekten zu erforschen.
LED, Taste, RS232 und selbst Webserver mit CGI und SSI lassen sich in
kurzer Zeit bedienen.
Wenn man sich an ein paar Grundlagen hält kann man auch später noch
einmal CubeMX aufrufen und so beliebig alle kleinen Projekte
kombinieren.
Code Begrenzung ist nicht das was man dabei will.
Vielleicht noch eine kleine Frage zu dieser Antwort:
>Du hast 2 Möglichkeiten die STD Lib oder die HAL Lib zu nutzen.
Ist das eine strikte entweder oder Frage, oder werden die beiden
Librarys auch kombiniert genutzt und worin unterscheiden sie sich?
In beiden Fällen soll doch derselbe Controller programmiert werden,
warum also werden dann zwei unterschiedliche Librarys ins Spiel
gebracht?
mfg
Die HAL ist einfach abstrakter als die STD.
Wenn Du mal eine HAL Funktion verfolgst, wirst Du auf die gleichen
Befehle stossen.
HAL hat einfach nur den Vorteil das man "meist" auch die STM32 Familie
wechseln kann ohne gross etwas anzupassen.
ST schrieb:> Kein einziges Beispielprojekt läuft ohne Comilerfehler vom Stapel weg...>> Mache ich irgendetwas grundlegendes falsch?
Ja. Jedenfalls mMn.
Du tingelst zwischen dem Benutzen diverser mehr oder weniger schlecht
vorgekauter Beispiele, aufgebauschter HAL-Libs und anderem Zeugs herum,
ohne tatsächlich einen eigenen Plan zu haben, was du tatsächlich tun
willst.
Beispiele sind allenfalls zum verstehenden Lesen da, aber nicht zum
direkten Benutzen. Oftmals sind sie jedoch nicht wirklich verständlich
und noch öfter sind sie einfach nur da, um den Leuten irgendwelche
verquaasten Libs anzudrehen.
Wer nicht gelernt hat, sienen Chip selbst aufzusetzen und sich
stattdessen auf Cube oder St-Lib oder CMSIS oder sonstwelchen Strunz
einläßt, der ist anschließend mit beiden Ohren dort angenagelt.
Gleiches gilt für Leute, die zu doof sind, die zugrunde liegende
Hardware und deren Register zu verstehen und direkt zu programmieren
oder wenigstens das winzige bissel an ARM-Assembler zu lernen, was man
braucht, um sich seinen Startupcode selber aufzusetzen - und die genau
deshalb das Großmaul herauskehren "sowas hat man heutzutage ja nicht
nötig".."dazu hat man ja die XYZ_InitStructure".."sowas macht doch Cube
für mich viel besser" und so weiter. Es ist das Unverständnis, was so
spricht.
Mein Rat wäre, zu allererst das richtige Benutzen der eigentlichen Tools
zu erlernen, also Compiler bis Linker. Wenn du das kannst, dann
relativiert sich die Not, den Overhead einer IDE bedienen zu müssen. Als
nächstes wäre das Verzichten auf Nachäffen von Beispielen dran. Denk dir
deine eigenen Projekte aus und ziehe sie ohne irgendwelche HAL's und
dergleichen durch. Nur so wirst du potent mit der Zeit.
Nochwas: Ich mache mir für jedes Projekt ein separates Verzeichnis - und
dort kommt alles hinein, was man zum Projekt braucht - und zwar plain,
also keine weiteren Unterverzeichnisse. Das ergibt Includes ohne
Pfad-Getingel und entkoppelt das Projekt vom Rest der Welt. Sowas macht
die Sache viel einfacher als irgendwelche verzwickten
Verzeichnisstrukturen, zu denen eigentlich alle IDE's neigen.
W.S.
ST schrieb:>>Du hast 2 Möglichkeiten die STD Lib oder die HAL Lib zu nutzen.>> Ist das eine strikte entweder oder Frage, oder werden die beiden> Librarys auch kombiniert genutzt und worin unterscheiden sie sich?
tertium datur.
Man kann auch beide NICHT benutzen. Darin unterscheiden sie sich nicht.
W.S.
Als Entwicklungsumgebung ist jetzt auch Atollic True Studio frei
verfügbar. Das funktioniert normalerweise "out of the box".
Mit den STM32Cube Treibern (HAL) kann man arbeiten, muss aber nicht.
Teilweise macht man sich damit das Leben schwer, manchmal ist es
nützlich...
Wenn du dir von ST die STM32Cube-Library runter lädst, sind da schon
sehr viele fertige Beispiel-Projekte drinnen.
Ich habe mir die Bare Metal Variante von openSTM32 ins Eclipse
integriert. Läuft einwandfrei. Am Anfang kann man auswählen ob man STD
oder HAL Lib nutzen will. Dann sind bereits alle notwendigen Includes im
Projekt vorhanden.