Hallo zusammen,
Zuerst mal mein Problem:
Ich weiss nicht wie wie ich mit stm32f10x_conf.h umzugehen habe. Die
StdPeriph Lib setzt die Definition des assert_param Makros in *.c Files
voraus, ohne dass stm32f10x_conf.h (aus meiner Sicht) eingebunden wird.
Und jetzt die Schritt fuer Schritt beschreibung meines Problems:
Ich bin gerade dabei mich in STM32 Entwicklung einzuarbeiten, und habe
inzwischen auch einen funktionierenden gcc Toolchain (Das Olimex
Blinking Light Beispiel tut).
Ich wollte nun die neuste Version STM32F10x_StdPeriph_Lib_V3.3.0 der
Standard Peripherals Library benutzten, und habe dazu ein makefile
Template von Micromouser[1] auf mein ETT STM32F103 Development Board [2]
angepasst.
Das Template compiliert auch soweit, alles gut. Wenn ich jetzt anfange
Funktion zum Quelltext hinzuzufuegen, geht irgendetwas schief.
Als erstes wollte ich stm32f10x_rcc.h nutzen, also das mal schnell in
der stm32f10x_conf.h auskommentiert. Allerdings sehe ich nirgends, wo
stm32f10x_conf.h includiert wird => Also habe ich sie auch zu meinem
Hauptfile wo auch die main() drin ist mit aufgenommen.
Das wirft mir dann beim Linken ein
/home/mabl/arm/srcs/STM32_Blinklight/Application.cpp:14: undefined
reference to `RCC_APB2PeriphClockCmd'
Klar, denn stm32f10x_rcc.c wurde ja nicht compiliert. Also das noch
schnell zu SRC im makefile hinzu gefuegt. Der naechste Fehler ist dann:
1 | Compiling C: ./Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c \
|
2 | arm-none-eabi-g++ -c -mthumb -mcpu=cortex-m3 -mthumb-interwork -I. \
|
3 | -gdwarf-2 -Dgcc -DSTM32F10X_MD -Os -ffunction-sections -fdata-sections \
|
4 | -Wall -Wimplicit -Wcast-align -Wpointer-arith -Wswitch -Wredundant-decls \
|
5 | -Wreturn-type -Wunused -Wa,-adhlns=\
|
6 | ./Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.lst \
|
7 | -I./Libraries/STM32F10x_StdPeriph_Driver/inc \
|
8 | -I./Libraries/CMSIS/CM3/CoreSupport \
|
9 | -I./Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x -MD -MP \
|
10 | -MF .dep/stm32f10x_rcc.o.d -fno-rtti -fno-exceptions \
|
11 | ./Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c -o stm32f10x_rcc.o
|
12 | ./Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c: In function 'void RCC_HSEConfig(uint32_t)':
|
13 | ./Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c:282: error: 'assert_param' was not declared in this scope
|
Gut er kennt also das assert_param macro nicht, was in stm32f10x_conf.h
definiert ist. Leider gibt es aber kein include in stm32f10x_rcc.c
welches stm32f10x_conf einbindet. Da ich die Library aber ungern
modifizieren will, kann ich in stm32f10x_rcc.c ja kein #include
stm32f10x_conf.h einfuegen.
Irgendwie bin ich also zu doof dazu herauszufinden wie man mit
stm32f10x_conf.h umgeht. Ich habe auch schon das CHM Manual (doofes
Format..) durchgeschaut und nichts gefunden. Die Beispiele die bei der
Lib dabei sind, nutzen leider auch kein makefile.
Ich hoffe, dass mein Problem irgendwie etwas verstaendlich wird,
Matthias
[1]
http://www.micromouseonline.com/blog/2009/10/19/another-stm32-project-template
[2] http://www.futurlec.com/STM32_Development_Board.shtml