Hallo C-Experten :)
Beim einbinden der Standard Peripherals Library für einen STM32F3
Controller in meine GCC-Compiler Umgebung habe ich folgendes Problem.
DIE IDE setzt für diesen Compilertyp noch die Präprozessor-Definition
'STM32F30X', die aktuelle Library erwartet aber 'STM32F303xC'. Soweit
kein Problem, denn in der Datei 'stm32f30x.h' ist folgendes enthalten:
1 | #if defined(STM32F30X)
|
2 | #define STM32F303xC
|
3 | #endif
|
Allerdings tritt dann in der gleichen Datei weiter unten an folgender
Stelle ein Compiler-Fehler auf:
1 | typedef enum IRQn
|
2 | {
|
3 | NonMaskableInt_IRQn = -14,
|
4 | ...
|
5 | #ifdef STM32F303xC
|
6 | WWDG_IRQn = 0,
|
7 | ...
|
8 | FPU_IRQn = 81
|
9 | #endif /* STM32F303xC */
|
10 | #ifdef STM32F334x8
|
11 | WWDG_IRQn = 0, //expected ',' or '}' before 'WWDG_IRQn'
|
12 | ...
|
13 | } IRQn_Type;
|
Füge ich händisch die Präprozessor-Definition 'STM32F303xC' hinzu, so
tritt der Fehler nicht auf, allerdings an allen möglichen Stellen
'"STM32F303xC" redefined [enabled by default]'.
Woher kommt das Verhalten, dass sich die beiden genannten Fälle
unterscheiden und wie könnte ich es hinkriegen, dass der Compilerfehler
mit der Definition aus der Datei nicht auftritt?
Vielen Dank für Antworten,
Florian