Hallo, ich habe mir das STM32F429 Discovery (mit LCD) gekauft und möchte mit Eclipse unter Linux entwickeln. Einfache Beispiele, wie LEDs blinken lassen, bekomme ich soweit hin. Um die High-Level-Sachen, wie das TFT, zu benutzen, habe ich mir die STM32CubeF4 Firmware heruntergeladen (http://www.st.com/web/en/catalog/tools/PF259243). Diese hat Beispiele und Projektdateien für verschiedene Toolchains, aber nichts für Eclipse. Bin leider noch blutiger Anfänger und offenbar etwas überfordert ;-). Mein naiver Versuch war, folgende Ordner zu den includes meines Projekts hinzuzufügen: STM32Cube_FW_F4_V1.1.0/Drivers/BSP/STM32F429I-Discovery/ STM32Cube_FW_F4_V1.1.0/Drivers/CMSIS/Include/ STM32Cube_FW_F4_V1.1.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include/ STM32Cube_FW_F4_V1.1.0/Drivers/STM32F4xx_HAL_Driver/Inc/ Wenn ich das Projekt baue, bekomme ich jede Menge Kompilierfehler. Bevor ich hier ins Detail gehe, was die konkreten Fehler angeht: Kann mir jemand sagen, wie ich am besten vorgehe, um mit der Eclipse Toolchain die cube libraries einzusetzen? Oder gibt es vielleicht alternative Libraries, die ich verwenden könnte?
Ich bin leider auch nicht der richtige Experte. In den letzten drei Jahren habe ich aber immer die Erfahrungen gemacht, dass eine richtige Anleitung eher einem Sechser im Lotto gleicht... Von daher sind die Fehlermeldungen schon interessant und koennten hier helfen das Problem zu loesen (natuerlich nicht alle - die ersten Fehlermeldungen sollten reichen). Deine Projektstruktur waere auch hilfreich. Welche Datein hast du (bzw. welche Libs) und welche Dateien hast du fuers Bauen eingebunden - STM32Cube_FW_F4_V1.1.0/Drivers/STM32F4xx_HAL_Driver/Inc/ wird es ja noch ein Src Ordner zu geben...)?
Nimm einfach z.B. Demonstrations/EWARM/Project.ewp
als Vorlage und füge die darin spezifizierten
Dateien und Include-Pfade Deinem eclipse-Projekt hinzu.
Z.B.
<option>
<name>CCIncludePath2</name>
<state>$PROJ_DIR$\..\Core\inc</state>
<state>$PROJ_DIR$\..\Config</state>
<state>$PROJ_DIR$\..\..\..\..\Utilities\CPU</state>
<state>$PROJ_DIR$\..\..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include<
/state>
<state>$PROJ_DIR$\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Inc</state>
<state>$PROJ_DIR$\..\..\..\..\Drivers\BSP\STM32F429I-Discovery</state>
<state>$PROJ_DIR$\..\..\..\..\Drivers\BSP\Components\Common</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\ST\STM32_USB_Host_Library\Core
\Inc</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\ST\STM32_USB_Host_Library\Clas
s\MSC\Inc</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Co
re\Inc</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Cl
ass\MSC\Inc</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\ST\STemWin\inc</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\FatFs\src</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\FatFs\src\drivers<
/state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\FreeRTOS\Source\po
rtable\IAR\ARM_CM4F</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\FreeRTOS\Source\in
clude</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\FreeRTOS\Source\CM
SIS_RTOS</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\LwIP\src\include\<
/state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\LwIP\src\include\i
pv4
</state>
<state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\LwIP\system</state
>
und
<name>User</name>
<group>
<name>Core</name>
<file>
<name>$PROJ_DIR$\..\Core\Src\k_bsp.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\Core\Src\k_calibration.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\Core\Src\k_log.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\Core\Src\k_mem.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\Core\Src\k_menu.c</name>
</file>
...
Hallo, die Beispiele von ST sind oft mit älteren Versionen der Systemdateien erstellt. Ich habe in eclipse dann ein geeignetes Projekt angelegt, also bei Dir eines für STM32F4x9, und die Quelldateien der Anwendung aus dem Beispiel kopiert. Dann noch das main anpassen, und es hat geklappt. Grüße, Kurt
Danke für die Antworten. Ich finde nicht so richtig Zeit, da durchzusteigen. Ich habe versucht, die Projektfiles unter EWAM zu nehmen und die includes in die .cproject-Datei von Eclipse zu transferieren. Toll wäre ein Koverter, z.B. von den EWAM-Projekten (oder Keil oder TrueStudio) nach Eclipse. Konnte aber leider nichts finden mit dem ich was anfangen kann. Vielleicht kommt man noch mit TrueStudio am weitesten, weil das offenbar auf Eclipse basiert. Was ich bislang rausfinden konnte, war, dass es wohl Konflikte mit den STM-Libraries gibt, die mein Eclipse-Projekt mir vorgibt (ich nehme ein 'STM32F4xx StdPeriph C/C++ Project' als Ausgangsbasis). Z.B. gibt es DMA_InitTypeDef sowohl in stm32f4xx_hal_dma.h als auch in stm32f4xx_dma.h in den StdPeriph includes. Ich habe keine Ahnung ob die libs aus dem Eclipsetemplate komplett überflüssig sind und alles in den cube libraries enthalten ist, was ich brauche. Zum anderen fürchte ich, dass ich jede Menge Präprozessor-Deklarationen machen muss, damit die Sachen compilen. Auch da blicke ich nicht so richtig durch. Ich werde hoffentlich am Wochenende noch mal einsteigen und melde mich hier noch mal falls ich irgendwie weiterkomme. Gruß
Bin jetzt mal 'nen anderen Weg gegangen und hab es mit den Beispielen von hier versucht: http://mikrocontroller.bplaced.net/wordpress/?page_id=2736 Funktioniert wunderbar. Einfach aus dem CoIDE-Projekt den Ordner ub_lib in den libs-Ordner des Eclipse StdPeriph-Projekts kopieren und als include eintragen. Es gibt auch ein Beispiel um GUIs mit STEmWin zu bauen. Dafür muss dann die statische library gelinkt werden. Damit das klappt, muss man allerdings unter 'C/C++ Build -> Settings -> Target Processor' Float-ABI auf 'FP Instructions (hard)' setzen.
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.