Forum: Mikrocontroller und Digitale Elektronik [S]uche - STM32 - Crossworks Beispiel - STM32F105


von C. H. (hedie)


Lesenswert?

Hallo

Ich versuche schon seit einigen Tagen ein Crossworks Projekt für einen 
STM32F105RB zu erstellen, zusammen mit der Firmwarelib 3.3 von ST


Doch leider bekomme ich es nicht hin.

Der Compiler findet immer Dateien nicht. zudem findet er die Funktion
Assert_Param nicht.


Hat vielleicht jemand ein Beispiel Projekt für mich?

Danke schonmal...

von C.H. (Gast)


Lesenswert?

Push :)

von Düsentrieb (Gast)


Lesenswert?

push hlft nicht viel, da deine frage etwas diffus ist...
stmmen die einstellungen, wo der compiler die libs sucht usw ?
hast mal ein beispiel-programm als test compiliert?

von Claudio Hediger (Gast)


Lesenswert?

Ich kann leider auch kein Test programm kompilieren...

Ich weiss leider nicht ob es an den Compiler einstellungen liegt.


Ich hab bei den User Defined Includes bei den Preprocessor einstellungen 
die Verzeichnisse inc / src und die des CMIS hinzugefügt

Leider meckert er das er assert_param nicht findet sowie diverse 
funktionen nicht.

Ich habe versucht die notwendigen dateien mit  #include einzubinden
oder diese bei sourcefiles dem projekt hinzuzufügen...

Erste variante klappt... jedoch nicht für Interrupts oder Timer da kennt 
er die nötigen bezeichner wie TIM2 nicht.

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


Lesenswert?

Bei mir ist die "stm32f10x_conf.h" eingebunden, diese hat dann alle .h 
Dateien der STM Lib.

Darin ist das Makro assert_param() definiert. Ich habe es nicht 
aktiviert:
1
/* #define USE_FULL_ASSERT    1 */

von Düsentrieb (Gast)


Lesenswert?

erstmal muss ein beispiel funktionieren !
was haste denn drin, in deinem prg?
..conf.h
..lib.h
..rcc.h
..it.h
..map.h
?

von Claudio Hediger (Gast)


Lesenswert?

Also ich gehe folgendermassen vor:

----Vorbereitung----
1. Ich erstelle einen neuen Ordner namens Test
2. Ich kopiere aus dem Ordner der Firmwarelib 3.3.0 den ordner inc (aus 
library)
3.  Ich kopiere aus dem Ordner der Firmwarelib 3.3.0 den ordner src (aus 
library)
4.  Ich kopiere aus dem Ordner der Firmwarelib 3.3.0 den ordner CM3 (aus 
library/CMSIS)
5.  Ich kopiere den INHALT aus dem Ordner der Firmwarelib 3.3.0 das 
Beispiel GPIO/IOToggle (aus Project/STM32F10x_StdPeriph_Examples)

----Crossworks----
1. Ich Öffne Crossworks 2.0 mit Adminrechten unter Windows7
   -> Info: Ich habe bei Crossworks das Package für die FW3.3.0 
installiert!
2. Ich gehe auf: File -> New Project
3. Ich wähle: Generic STM32 -> An Executable for STMicroelectronics 
STM32
4. Ich wähle den Ordner Test als ziel und gebe den namen Beispiel ein -> 
Next
5. Ich wähle 6MHz und als Prozessor STM32F105RB -> Next
6. -> Next
7. Finish

8. Ich gehe bei Projekt auf Sourcefiles -> Rechtemaustaste -> 
Addexisting -> Wähle main.c aus dem ordner test

9. Ich öffne main.c mit doppelklick

10. Ich mache rechtemaustaste auf Project "Beispiel"

11. Ich wähle oben rechts: Configuration -> Common
12. Ich scrolle bis zu Preprocessor
13. Ich editiere User Include Directories
    -> Info: Dort steht bereits: $(TargetsDir)/STM32/include
14. Ich füge hinzu: inc/; src/; CM3;
15. Bestätige mit Ok
16. Bestätige mit Ok

17. Ich mache auf Projekt rechtemaustaste -> Build

Error: stm32f10x.h: No such file or directory
Error: stm32_eval.h: No such file or directory
Error: 'RCC_APB2Periph_GPIOA' undeclared (first use in this function)
Error: 'GPIO_Pin_All' undeclared (first use in this function)

Und noch ein paar weitere....

Habe mir mühe gegeben es so ausführlich wie möglich zu beschreiben....

Danke für eure Hilfe!

von C. H. (hedie)


Lesenswert?

So endlich wieder eingeloggt :)

von Claudio Hediger (Gast)


Lesenswert?

Push :)

von Thomas B. (escamoteur)


Lesenswert?

Du solltest Deine Pfade relativ zu $(ProjektDir) anlegen. Das aktuelle 
Verzeichnis ist nähmlich mitnichten das Projektverzeichnis

Gruß
Tom

von Mic (Gast)


Lesenswert?

Hallo Claudio,

wollte mal nachfragen, ob Du das Problem mitlerweile gelöst hast...
ich möchte nämlich auch gerade im Vorfeld klären ob, und wie weit sich 
die Std_Lib von ST in Crossworks verwenden lässt, bevor ich dafür eine 
Lizenz kaufe.

Viele Grüße,
Mic

von Claudio Hediger (Gast)


Lesenswert?

Hallo

Leider hat niemand mehr etwas geantwortet...

Somit ist es im Sande verlaufen :(

von Thomas B. (escamoteur)


Lesenswert?

Hast Du das mit den relativen Pfaden probiert? Bei mir läuft dsa system 
problemlos

Gruß
Tom

von Claudio Hediger (Gast)


Lesenswert?

nein hab ich ehrlich gesagt nicht getestet...

Kannst du mir vielleicht eine Komplettes Beispiel Programm senden?

Also Ordner Mit allem drin als Zip... wäre meega nett...

Am besten an

claudio.hediger (aäääaatt) gmail.com :)

Danke

von Mic (Gast)


Lesenswert?

vielleicht könntest du das beispiel auch hier reinstellen? würde mich 
auch interessieren...
ich finde die ST- Lib eingentlich sehr schön, wär prima, wenn man die 
auch in Crossworks verwenden könnte.

THX!

von Claudio Hediger (Gast)


Lesenswert?

Also ich hab noch nichts bekommen :)

von Thomas B. (escamoteur)


Lesenswert?

Bitte sehr, hier auf dem Silbertablett ;-)

STM32F10x Standard Peripherals Library kuck mal gleich am Anfang 
gibts nen neuen Abschnitt mit Link.

Gruß
Tom

von Claudio Hediger (Gast)


Lesenswert?

Vielen Dank

Hab es gleich Ausprobiert... doch leider klappts nicht :(

Hier die Fehler meldungen:

Building “ARM_LED_Test” in configuration “THUMB Flash Debug” — 5 errors, 
1 occurrence
  Compiling system_stm32f10x.c — 5 errors, 1 occurrence
    In file included from 
C:/Users/darkhedie/Desktop/cw/ARM_LED_TEST/../ST_StandardLib/CMSIS/CM3/D 
eviceSupport/ST/STM32F10x/stm32f10x.h:8073,
                     from 
C:/Users/darkhedie/Desktop/cw/ARM_LED_TEST/../ST_StandardLib/CMSIS/CM3/D 
eviceSupport/ST/STM32F10x/system_stm32f10x.c:33:
    stm32f10x_exti.h: No such file or directory
    stm32f10x_gpio.h: No such file or directory
    stm32f10x_rcc.h: No such file or directory
    stm32f10x_usart.h: No such file or directory
    misc.h: No such file or directory
Build failed

von Thomas B. (escamoteur)


Lesenswert?

Sorry, da weiß ich jetzt echt nicht mehr weiter wo das Problem sein 
soll. Ich hab bei mir das ganze ziemlich schnell (1Tag) am Laufen 
gehabt.
Ist eigentlich wirklich nicht so schwer.

Gruß
Tom

von Mic (Gast)


Lesenswert?

Thomas Burkhart schrieb:
> Bitte sehr, hier auf dem Silbertablett ;-)
>
> STM32F10x Standard Peripherals Library kuck mal gleich am Anfang
> gibts nen neuen Abschnitt mit Link.
>
> Gruß
> Tom

1000 Dank Tom!
Ist ja wirklich auf dem Silbertablett serviert :)
Ich bin z.Zt. noch auf der "Suche" nach der richtigen IDE...
Wahrscheinlich werd ich auch auf CW setzen, bin noch am Infos zusammen 
suchen. Wollte net gleich die 30 Tage Testversion damit "verschwenden" 
die Lib einzubinden.

Also nochmal Danke!!!

von Thomas B. (escamoteur)


Lesenswert?

Kein Problem!
Ich hab hier im Forum schon so viel Hilfe bekommen, da helfe ich auch 
gerne
Tom

von Mic (Gast)


Lesenswert?

@Claudio Hediger:

So... hatte zunächst die selben Fehler wie Du...
hab dann zusätzlich noch unter
Project->Properties->Preprocessor Options->System Include Directories
hinzugefügt:
Ort von inc und src Ordner, d.h.
C:\...\STM32F10x_StdPeriph_Driver\inc
C:\...\STM32F10x_StdPeriph_Driver\src

Und die CMSIS Dateien
C:\...\CMSIS\CM3\CoreSupport
C:\...\CMSIS\CM3\DeviceSupport\ST\STM32F10x

vielleicht hilft Dir das auch?

Grüße,
MIC

von Rooney B. (rooney)


Lesenswert?

Das Problem mit assert_param konnte ich lösen indem ich folgende 
Preprocessor Definitions in den Einstellungen definiert habe:
USE_STDPERIPH_DRIVER
STM32F10X_HD
INITIALIZE_STACK

In diesem Fall wird in stm32f10x.h die Header stm32f10x_conf.h 
eingebunden, in der assert_param definiert ist. Sieh dir dazu die 
Beispiele an, die mit dieser Lib ausgeliefert werden.

In den Include Directories musst noch $(ProjectDir) definiert werden, 
damit die Header Datei gefunden wird.

von Stefan H. (sekhet)


Lesenswert?

Hi, ich habe ebenfalls dieses assert_param-Problem.

Ich habe mir zunächst dieses Beispiel 
[[Datei:CrossWorks_StandardLib_Setup.zip]] geladen und geöffnet. Da ich 
aber einen STM32f103 RB und keinen RE auf meinem Board habe, musste 
ich (glaube ich wenigstens) unter Project-Properties -> Build Options -> 
Target Processor den Prozessor-Typ ändern.
An dieser Stelle fangen wohl meine Problemchen an.
Kann man überhaupt so einfach das Target ändern?

Bekomme nun 5 ähnliche Fehler :
E:/...../../ST_StandardLib/STM32F10x_StdPeriph_Driver/src/misc.c:98: 
undefined reference to `assert_param'

ein #define USE_FULL_ASSERT hat leider auch nichts gebracht :(

@ Rooney Bob

Wie ich gesehen habe hast due diesen Fehler beseitigen können.
An welcher Stelle machst du die entsprechenden Eintragungen?
USE_STDPERIPH_DRIVER
STM32F10X_HD (in meinem Fall wohl STM32F10X_MD)
INITIALIZE_STACK



Gruß Stefan

von Thomas B. (escamoteur)


Lesenswert?

Die entsprechenden #defines setzt Du am Afnag von

ST_StandardLib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h

INITIALIZE_STACK
Habe ich bei mir nicht gesetzt.

In

ST_StandardLib\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c

Am Anfang Deinen CPU Takt setzen.

Gruß
Tom

von Stefan (Gast)


Lesenswert?

Vielen danke, ich habe nicht daran gedacht einfach ein #define ... zu 
schreiben.
Bin davon ausgegangen, dass ich in den Crossworks-Einstellungen 
irgendetwas ändern müsste.

Werde es heute Abend direkt mal ausprobieren.

Gruß Stefan

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.