Ersteinmal die Facts: Customboard mit STM32G07KB programmiert mit PlatformIO und geflasht mit STLINK v2. Das Board tut aber eigentlich auch nichts zur Sache, wenn ich das Programm für den "bluepill_f103c6" compiliere bekomme ich die gleiche Fehlermeldung.
Ich habe schon eine Weile im Internet gesucht aber keine passende Lösung gefunden. Es geht nur um eine Demo in der ein Interruppt-Routine aufgerufen wird die von Timer TIM2 ausgelöst wird. Mit anderen MCUs habe ich schon einiges gemacht aber bei den STM32 bin ich Anfänger.
Ich bin zum Beispiel nach folgendem Tutorial vorgegangen: https://hackmd.io/@0xff07/Sy8U-l7Ec
Hier mein Code-Ausschnitt
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
Bis dahin funktioniert auch alles. In der main.cpp lese ich den Zählerwert periodisch aus und gebe ihn aus. Um jetzt den Interrupt hinzuzufügen ändere ich
1 |
|
zu
1 |
|
Dann hält das Programm an wenn der Timer bei 0 angekommen ist. Wahrscheinlich ganz klar weil ich noch keine Interrupt Routine gwschrieben habe. Also noch
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
hinzugefügt. Aber da bekomme ich die Compiler/Linker Fehlermeldung:
"main.cpp:(.text.HAL_TIM_PeriodElapsedCallback+0x0): multiple definition of `HAL_TIM_PeriodElapsedCallback'; ... SrcWrapper/src/HardwareTimer.cpp.o:HardwareTimer.cpp: .text.HAL_TIM_PeriodElapsedCallback+0x0): first defined here"
Ich verstehe das eigentlich so, im HAL-Driver ist diese Funktion als "weak" gekennzeichnet und es sollte meine Funktion verwendet werden.
Was mache ich falsch?