Forum: Mikrocontroller und Digitale Elektronik STM32Cube & Eclipse & GCC


von GRRRECLIPSE (Gast)


Lesenswert?

Hallo Ihr,
hat jemand von euch schon Erfahrung mit dem STM32Cube und Eclipse?

Hab es soweit hinbekommen das ich das Plugin in Eclipse drin habe und 
auch schon mal aus Spaß mein Grundsystem mit RTOS zusammengeklickt habe.

Der Code wird auch schön generiet..

Und wie bekomme ich den nun in ein neues Projekt rein?

Hab es mal über Import versucht aber dann kann er alles mögliche nicht 
resolven...


Hat es schonmal jemand Zustande gebracht, ohne Keil und IAR ?

Also nur freie uneingeschränkte Tools??
Auf Linux hoffe ich ja schon gar nicht beim STM32Cube... aber nichtmal 
unter Windows gehts es mal so eben...

Da ist Microchip schon bei weitem besser....(sogar Linux läuft direkt 
alles...)


Naja gut Coocox geht soweit ganz gut.. unterstützt aber nicht das Cube 
und Rtos so direkt.. Das Cube ist schon nett wenn ich jetzt  noch in ein 
Projekt eingebunden bekomme...

von holger (Gast)


Lesenswert?

>hat jemand von euch schon Erfahrung mit dem STM32Cube und Eclipse?

Ja.

>Hab es soweit hinbekommen das ich das Plugin in Eclipse drin habe und
>auch schon mal aus Spaß mein Grundsystem mit RTOS zusammengeklickt habe.
>
>Der Code wird auch schön generiet..

Ja, cool nich;)

>Und wie bekomme ich den nun in ein neues Projekt rein?

Zu Fuß neues Projekt erstellen und den erzeugten Code dort
von Hand einfügen.

>Hab es mal über Import versucht aber dann kann er alles mögliche nicht
>resolven...

Ging mir genauso.

>Hat es schonmal jemand Zustande gebracht, ohne Keil und IAR ?

Vermutlich diejenigen die Atollic Truestudio haben;)

>Also nur freie uneingeschränkte Tools??

Da will ST scheinbar nicht so richtig. Die Projekte
können nur für IAR, Keil, und Atollic erzeugt werden.
Eclipse und ARM-GCC pur wollen sie wohl nicht unterstützen.

Zumindest ein kleiner Lichtblick erscheint am Horizont.
Mit Eclipse Keppler und dem CDT kann man jetzt ja zumindest
schon mal ein Grundgerüst mit Linker Scripten und Startupcode
für einige STM32 erstellen.

von GRRRECLIPSE (Gast)


Lesenswert?

Das heißt leeres ARM GCC Projekt erstellen und dann alles von Hand 
hinzufügen?

Boa... ich glaub ich überlege es mir mit ARM nochmal..

Wenn es für die PIC32MZ schon ordentliche Dev-Boards gäbe wäre es 
sowieso schon fest was ich nehme..

von GRRRECLIPSE (Gast)


Lesenswert?

Könntest du bitte einmal genauer beschrieben was du wo reinfügen 
musstest??

von holger (Gast)


Lesenswert?

>Das heißt leeres ARM GCC Projekt erstellen und dann alles von Hand
>hinzufügen?

Ja.

>Könntest du bitte einmal genauer beschrieben was du wo reinfügen
>musstest??

Nein, ich hatte mir das nur mal kurz angesehen und dann erst
mal wieder verworfen ein komplettes Projekt mit dem erzeugten
Code zu basteln.

von Lukas K. (carrotindustries)


Lesenswert?

Geht es euch hier um den Nachfolger der Standard peripheral library oder 
um die Peripherie-Zusammenklick-Software STM32CubeMX?

Für erstere bin ich gerade dabei, einen Paketmanager zu schreiben, der 
das Archiv von ST runterlädt und einem die gewünschten Bestandteile 
(CMSIS, HAL, etc) entpackt. Funktioniert schon recht gut, muss nur noch 
ein wenig poliert werden, damit's vorzeigbar wird. Landet dann 
hoffentlich dieses Wochenende oder so auf github.

von GRRRECLIPSE (Gast)


Lesenswert?

Eigentlich beides, dass KlickiBunti ist schon ganz nett. Und vor allem 
die einfache Configration und die Überwachung ob etwas nicht 
zusammenpasst.

Wo ich halt nun hänge, wie bekomme ich den erstellten Code in Eclipse 
rein? So das ich den Compilieren kann?

Atollic ist ja Eclipse und GNU GCC...

Also sollte das ja eigentlich klappen. Aber ich bekomme es nicht hin..

von holger (Gast)


Lesenswert?

>Geht es euch hier um den Nachfolger der Standard peripheral library oder
>um die Peripherie-Zusammenklick-Software STM32CubeMX?

Laut ST ist dieser Cube Kram der Nachfolger der Standard
Peripheral Library. Dafür gibt es auch ein Eclipse Plugin.
Das erzeugt aber nur Projekte für Atollic. Die erzeugten
Projekte kann man nicht einfach so in Eclipse importieren.

von Lukas K. (carrotindustries)


Lesenswert?

holger schrieb:
> Das erzeugt aber nur Projekte für Atollic. Die erzeugten
> Projekte kann man nicht einfach so in Eclipse importieren.

Einfach mal die erzeugten Dateien ins Projekt einwerfen und so lange 
HAL-Bibliotheken importieren bis es baut?

von GRRRECLIPSE (Gast)


Lesenswert?

Und um sowas zu umgehen wollte ich wissen ob es schonmal jemand 
geschafft hat und weiß worans hängt..


Hintergrund ist auch es wird mein erstes ARM Projekt (bis auf bissel LED 
Blinken usw.)
Da wollte ich gern direkt möglichst Komfortabel und mit dem aktuellsten 
(was dann hoffentlich auch länger so bleibt) einsteigen..

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ich nutze schon seit Jahren Eclipse/GCC um STM32 Programme zu erstellen.

Nachteil:
Man muss vieles selbst machen

Vorteil:
Man weiß genau welche Dateien eingebunden sind und kann jeden Codeblock 
genau dort hin in den Speicher schieben wie man mag.

Schlussendlich hat man damit die volle Kontrolle - wenn man weiß wie es 
geht. Selbst der Startup-Code habe ich in C geschrieben - und der macht 
genau das was ich will.

Zum Eclipse nutze ich das CDT Plugin und den Segger J-LINK zum debuggen, 
das klappt reibungslos, auch größere Projekt mit 300KB FLASH.

Eclipse & STM32 nutze ich seit Gallileo, bis heute mit Keppler.

Hier ein Artikel: STM32 Eclipse Installation

Ein Projekt von mir:
"Blink-LED, komplettes Eclipse-Workspace von MmVisual"
gibt es auch in dem Artikel zum Download. Damit hätte man zumindest mal 
eine Grundlage und weiß wie es geht.

Wer von 0 anfängt, für den ist CooCox durchaus ausreichend.
Wer die absolute Freiheit mag, für den ist Eclipse die erste Wahl. Damit 
kann man Code für jeden µC (C, C++) erstellen, man muss nur den 
passenden Compiler einbinden (was im "makefile" deklariert wird).

: Bearbeitet durch User
von holger (Gast)


Lesenswert?

>Einfach mal die erzeugten Dateien ins Projekt einwerfen und so lange
>HAL-Bibliotheken importieren bis es baut?

Sicher kann man das so machen, und ich hätte auch kein Problem
damit. Aber der Wunsch das das ohne grosse Handarbeit direkt
über das Eclipse Plugin geht bleibt natürlich. Darum geht es.
So wie es jetzt ist muss man sich ausser dem kopieren
von Dateien auch noch die ganzen Compiler defines, die
Include Pfade usw. aus dem Atollic Projekt rauspopeln.
Da hatte ich bisher noch keine Lust zu.

von Frage (Gast)


Lesenswert?

Naja wie gesagt bisher hab ich nur mit 8bit Pic zu tun gehabt und ein 
wenig mit Pic32.

Nun für meine Masterarbeit bin ich ins kalte Wasser geschmissen worden.
Und da für spätere Projekte Platz nach oben bleiben soll, soll ich einen 
möglichst Leistungsfähigen µC nehmen.

BeagleBone wäre eine alternative (Linux kann ich ein wenig) aber da ich 
außer SPI und UART auch wohl ein paar Sachen Parallel über GPIO 
ansprechen muss ist es mit dem PRU Gedöns nicht ganz so einfach..

Außerdem soll es in C sein (am liebsten Matlab....) und die PRU mit 
Assembler geht also schonmal nicht...
Also würde ich halt nun auf die Cortex M4 oder Pic32MZ gehen. Pic32 wäre 
mir leiber aber die sind ja bisher nur schlecht verfügbar und ein 
geeignetes Dev-Board gibt es auch noch nicht..

Daher wird es wohl auf nen ARM rauslaufen. Die LPC4370 sind wohl die 
schnellsten wobei ein Dual-Core mir den Einstieg wohl nicht 
erleichtert... somit bin ich bei den STM32F437 gelandet. Sollten 
hoffentlich genug Leistung haben...

Man muss dazu sagen ich bin nicht Informatiker sondern E-Techniker..

Daher bevorzuge ich einen leichten Einstieg mit Klicki-Bunti..

Zusätzlich bin ich noch an einem RTOS am überlegen was wohl sinnvoll ist 
bei dem Projekt aber halt nomma bissel die Anforderung an den Einstieg 
nach oben schraubt...

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Für Deinen Einstieg empfehle ich erst mal das Board "STM32F4DISCOVERY". 
Kostet 12..20 EUR und ein Debugger (ST-LINK/V2) ist da auch schon mit 
drauf.

Per Klicki-Bunti bekommst Du das Board innerhalb weniger Minuten zum 
Laufen:
Artikel: STM32 CooCox Installation

von GRRRECLIPSE (Gast)


Lesenswert?

Ja sowas hab ich ja sogar schon gemacht.

Da ich immermal mit ARM anfangen wollte hab ich bereits ein paar Boards 
und sogar einen J-Link.

Mit Coocox hab ich halt ein wenig blinken lassen und sogar mit ein wenig 
Code Unterstützung auch schon über Bluetooth und UART Sachen versendet.

Nur jetzt wird es halt größer und da wollte ich auf die STM32Cube 
Unterstützung zurückgreifen. Eben weil ich auch mit FreeRTOS Einsteigen 
werde (wohl muss aber auch möchte...)

Und da kam mir das Klicki-Bunti sehr recht.. Leider habe ich halt kein 
Keil/IAR/Atollic zur Verfügung...

von Michi (Gast)


Lesenswert?

Mit EM:Blocks kannst du ein von CubeMx erstelltes Project laden. MDK ARM 
als Toolchain in CubeMX einstellen. Und dann einfach in EM:Blocks laden.

von GRRRECLIPSE (Gast)


Lesenswert?

Das ist sehr interessant. Werde ich morgen mal ausprobieren.

von Michi (Gast)


Lesenswert?

GRRRECLIPSE schrieb:
> Das ist sehr interessant. Werde ich morgen mal ausprobieren.

Bevor du die 30Mb evtl. umsonst runterlädst, wenn du ein Keil Project in 
E::B importierst muss zum kompilieren der Keil Compiler installiert 
sein.

Es lässt sich aber recht einfach ein Projekt erstellen das das gleiche 
Projekt Verzeichnis wie CubeMx benutzt. Dann kannst du in CubeMX den 
Code generieren lassen kannst und in Em::Blocks kompilieren lassen 
kannst.
Das sollte auch mit CooCox gehen. Ich kann es dir bei Interesse aber nur 
für E::B erklären.

von GRRRECLIPSE (Gast)


Lesenswert?

Also wenn ich mit EM:Blocks ein Projekt erstelle und mit CubeMX den Code 
generieren lasse kann ich den irgendwie in EM:Blocks reinbekommen und 
mit einem freien Compiler also GCC ohne Beschränkungen nutzen??

Wenn ja, dann erklär bitte ein wenig mehr hier. Wenn ich heut Abend zu 
Hause bin versuche ich es mal. Es interessiert bestimmt noch andere.

von Michi (Gast)


Lesenswert?

Um ein Project in E::B zu erstellen das mit CubeMX läuft.

1. ein neues Project erstellen wie hier beschrienen 
http://www.mikrocontroller.net/articles/STM32_-_Einstieg_mit_Em::Blocks 
"Das erste Projekt erstellen" nur Schritte bei 1. ausführen.

2. im E::B Project Manager rechtsklick auf den Projectnamen und 'remove 
files' wählen , im folgenden Auswahlfenster alle Dateien auswählen.

3. im Project Ordner die Datei startup_stm32f4xx.S aus dem /src 
Verzeichnis ins Project Verzeichnis verschieben. Also eine Ebene hoch.

4. In CubeMX neues Project erstellen, Verzeichnis und Namen wählen wie 
in E::B erstellt.

5. In CubeMX Configuration zusammenklicken und Generate Code wählen.

6. im E::B Project Manager rechtsklick auf den Projectnamen und 'add 
files recursively' wählen.

7. In E::B die Pfade zu den Header Dateien angeben, und Compiler 
#defines STM32F407xx und USE_HAL_DRIVER eingeben.

Dann sollte es gehen ;)

von GRRRECLIPSE (Gast)


Lesenswert?

So, ich bin bis Punkt 7 gekommen. Sieht soweit auch gut aus. Habe in 
CubeMX Keil genommen.

Aber mit Punkt 7 komm ich nicht klar.

Habe untern den Build Options #defines die 2 Sachen eingetragen.
Also direkt einfach ohne was davor 1:1 reingeschrieben.

Wo ich jetzt die Headerfile Pfade angeben muss erschließt sich mir 
gerade nicht.

Naja auf jedenfall wenn ich auf "Build" klicke kommen unmengen Fehler. 
Der benutzt anscheinend die Falsche startup:
Mein Build Log:

[Code]

-------------- Build: Debug in Test_Cube2 ---------------

Assembling: 
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s
Assembling: 
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xe.s
Assembling: 
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f405 
xx.s
Assembling: 
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f407 
xx.s
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:  Assembler messages:
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:1:  Error: junk at end of line, first unrecognized character is `*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:2:  Error: junk at end of line, first unrecognized character is `*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:3:  Error: junk at end of line, first unrecognized character is `*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:4:  Error: junk at end of line, first unrecognized character is `*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:5:  Error: junk at end of line, first unrecognized character is `*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:6:  Error: junk at end of line, first unrecognized character is `*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:7:  Error: junk at end of line, first unrecognized character is `*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:8:  Error: junk at end of line, first unrecognized character is `*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:9:  Error: junk at end of line, first unrecognized character is `*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:10:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:11:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:12:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:13:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:14:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:15:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:16:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:18:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:19:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:20:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:21:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:22:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:23:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:24:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:25:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:26:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:27:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:28:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:29:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:30:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:31:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:32:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:33:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:34:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:35:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:35:  Error: bad instruction `loss OF USE,DATA,OR PROFITS'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:35:  Error: bad instruction `or BUSINESS INTERRUPTION)HOWEVER'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:36:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:37:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:38:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:40:  Error: junk at end of line, first unrecognized character is 
`*'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:42:  Error: bad instruction `amount of memory(in bytes)allocated 
for Stack'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:43:  Error: bad instruction `tailor this value to your application 
needs'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:44:  Error: junk at end of line, first unrecognized character is 
`<'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:45:  Error: junk at end of line, first unrecognized character is 
`<'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:46:  Error: junk at end of line, first unrecognized character is 
`<'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:48:  Error: bad instruction `stack_size EQU 0x00000400'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:50:  Error: bad instruction `area STACK,NOINIT,READWRITE,ALIGN=3'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:51:  Error: bad instruction `stack_mem SPACE Stack_Size'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:52:  Error: bad instruction `__initial_sp'
Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401 
xc.s:55:  Error: junk at end of line, first unrecognized character is 
`<'
Process terminated with status 1 (0 minutes, 4 seconds)
50 errors, 0 warnings (0 minutes, 4 seconds)

Process terminated with status 1 (0 minutes, 6 seconds)

Process terminated with status 1 (0 minutes, 8 seconds)

Process terminated with status 1 (0 minutes, 10 seconds)

von GRRRECLIPSE (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch ein Bild.

von Michi (Gast)


Angehängte Dateien:

Lesenswert?

GRRRECLIPSE schrieb:
> Wo ich jetzt die Headerfile Pfade angeben muss erschließt sich mir
> gerade nicht.

Du solltest die #defines nicht nur fürs Debug Build setzten sondern für 
das gesamte Projekt. Siehe Bilder.

Und c99 unter Compiler Flags -> Language standard setzen.

>Naja auf jedenfall wenn ich auf "Build" klicke kommen unmengen Fehler.

Du siehst wahrscheinlich im Project Manager unter ASM Sources einen 
Ordner 'Drivers' , entfern den mit Rechtsklick 'Remove Drivers/*'
So das im Project Manager unter ASM Sources nur die Datei 
startup_stm32f4xx.S drin steht, die gehört zu E::B.

von Gerald_G (Gast)


Angehängte Dateien:

Lesenswert?

Bei mir findet er komischerweise die Standardbibliothek (denke ich, da 
er die Befehle nicht kennt) nicht, obwohl sie eingebunden sind und unter 
directories die includes hinzugefügt sind.

Das mit dem klicken auf "Projekt" war zwar ein wichtiger hinweis den ich 
ebenfalls falsch gemacht habe (sollte im Tutorial ergänzt werden, da 
standardmäßig debug ausgeählt ist) gebracht hat es dennoch nichts :(

von Gerald_G (Gast)


Lesenswert?

Kommando zurück, man muss "#include "stm32f4xx.h" anstatt "#include 
"stm32f4xx_hal.h" nutzen, dann geht es :)

von GRRRECLIPSE (Gast)


Lesenswert?

Bin mittlerweile auch weiter gekommen. Aber jetzt komm ich mal wieder 
nicht weiter:
1
-------------- Build: Debug in Test_Cube2 ---------------
2
3
Compiling: Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c
4
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c
5
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc.c
6
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc_ex.c
7
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c
8
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c
9
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c
10
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp.c
11
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp_ex.c
12
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dac.c
13
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dac_ex.c
14
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dcmi.c
15
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c
16
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c
17
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c
18
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_eth.c
19
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c
20
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c
21
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c
22
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hash.c
23
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hash_ex.c
24
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hcd.c
25
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c
26
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c
27
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s.c
28
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s_ex.c
29
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_irda.c
30
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_iwdg.c
31
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c
32
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_msp_template.c
33
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_nand.c
34
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_nor.c
35
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pccard.c
36
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd.c
37
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c
38
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c
39
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c
40
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c
41
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rng.c
42
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc.c
43
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c
44
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c
45
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c
46
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c
47
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_smartcard.c
48
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c
49
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c
50
Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c: In function 'HAL_SPI_Receive':
51
Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c:465:17: warning: variable 'tmpreg' set but not used [-Wunused-but-set-variable]
52
Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c: In function 'HAL_SPI_TransmitReceive':
53
Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c:639:17: warning: variable 'tmpreg' set but not used [-Wunused-but-set-variable]
54
Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c: In function 'SPI_RxCloseIRQHandler':
55
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c
56
Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c:1621:17: warning: variable 'tmpreg' set but not used [-Wunused-but-set-variable]
57
Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c: In function 'SPI_DMAReceiveCplt':
58
Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c:1802:17: warning: variable 'tmpreg' set but not used [-Wunused-but-set-variable]
59
Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c: In function 'SPI_DMATransmitReceiveCplt':
60
Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c:1862:17: warning: variable 'tmpreg' set but not used [-Wunused-but-set-variable]
61
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c
62
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c
63
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c
64
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_wwdg.c
65
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c
66
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fsmc.c
67
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c
68
Compiling: Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c
69
Compiling: Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS\cmsis_os.c
70
Compiling: Middlewares\Third_Party\FreeRTOS\Source\croutine.c
71
Compiling: Middlewares\Third_Party\FreeRTOS\Source\list.c
72
Compiling: Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_1.c
73
Compiling: Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_2.c
74
Compiling: Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_3.c
75
Compiling: Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c
76
Compiling: Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c
77
Compiling: Middlewares\Third_Party\FreeRTOS\Source\queue.c
78
Compiling: Middlewares\Third_Party\FreeRTOS\Source\tasks.c
79
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:75:3: error: #error This port can only be used when the project options are configured to enable hardware floating point support.
80
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:258:7: error: expected '(' before 'void'
81
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:269:2: error: stray '#' in program
82
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:302:2: error: stray '#' in program
83
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:436:2: error: stray '#' in program
84
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:447:2: error: stray '#' in program
85
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:450:2: error: stray '#' in program
86
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:463:2: error: stray '#' in program
87
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:684:2: error: stray '#' in program
88
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:161:13: warning: 'prvStartFirstTask' declared 'static' but never defined [-Wunused-function]
89
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:166:13: warning: 'prvEnableVFP' declared 'static' but never defined [-Wunused-function]
90
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:204:24: warning: 'ucMaxSysCallPriority' defined but not used [-Wunused-variable]
91
Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\port.c:205:24: warning: 'ulMaxPRIGROUPValue' defined but not used [-Wunused-variable]
92
Process terminated with status 1 (0 minutes, 11 seconds)
93
9 errors, 9 warnings (0 minutes, 11 seconds)

von Michi (Gast)


Lesenswert?

In CubeMX in den Project Settings->Code Generator 'Copy only the 
necessary library files' auswählen. Und es erstmal mit einem kleinen 
Project versuchen.

von Leddel (Gast)


Lesenswert?

Hello

First of all, sorry for my english. I'm a regular visitor of this site 
due to the high level of knowledge here on the forum. I'm from the 
Netherlands but my English is much better than my German, so that's why 
I will write in English.

I'm Also trying to get Emblocks work together with CubeMx. I produced 
the steps 1 till 7 which stated above. Now I get the same error message 
as quoted above by: GRRRECLIPSE

||=== testcube, Debug ===|
Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h|857|error: 
unknown type name 'RCC_PeriphCLKInitTypeDef'|
Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h|858|error: 
unknown type name 'RCC_PeriphCLKInitTypeDef'|
||=== Build finished: 2 errors, 0 warnings (0 minutes, 0 seconds) ===|
Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h|857|error: 
unknown type name 'RCC_PeriphCLKInitTypeDef'|
Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h|858|error: 
unknown type name 'RCC_PeriphCLKInitTypeDef'|

Gerald_G replies with:

Kommando zurück, man muss "#include "stm32f4xx.h" anstatt "#include
"stm32f4xx_hal.h" nutzen, dann geht es :)

But I can't seem to find what Gerald means with this.
Can someone or maybe Gerald himself explains what the solution for my 
problem is?

My sincerly!

Leddel

von Gerald G. (gerald_g)


Lesenswert?

I wanted to use the HAL Drivers, so I thought I had to include the 
stm32f4xx_hal.h in my main c-file. But I had to use the regular 
stm32f4xx.h, as typed in every STM Cortex M4 code (mostly the first 
line)

von Leddel (Gast)


Lesenswert?

I removed the #include "stm32f4xx_hal.h in the main file and replaced it 
with: #include "stm32f4xx.h"

But the compiler still gives error with the RCC_PeriphClkInitTypeDef:

||=== testcube, Debug ===|
Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h|857|error: 
unknown type name 'RCC_PeriphCLKInitTypeDef'|
Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h|858|error: 
unknown type name 'RCC_PeriphCLKInitTypeDef'|
||=== Build finished: 2 errors, 0 warnings (0 minutes, 2 seconds) ===|
Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h|857|error: 
unknown type name 'RCC_PeriphCLKInitTypeDef'|
Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h|858|error: 
unknown type name 'RCC_PeriphCLKInitTypeDef'|


Very strange.

von Andreas (Gast)


Lesenswert?

In der Release Notes steht, dass nur REV C (MB997C) des STM32F4 
DISCOVERY Boards unterstützt wird.

Seltsam, denn der einzige dokumentierte Unterschied ist der verwendete 
Beschleunigungssensor. Für den alten (REV B und REV A) ist aber trotzdem 
noch Code vorhanden in der STM32Cube Software.

Was stimmt denn nun? Ich habe nur das REV B board. REV C scheint zielich 
neu zu sein, und ist sicherlich noch nicht überall zu haben.

Hinzu kommt, dass REV C wegen des neuen Beschleunigungssensors auch 
nicht mit dem alten Firmwarepaket kompatibel ist.

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.