Moin,
der STM32 HAL stellt "Dummys" für Interrupt-Callbacks in Form von
Funktionen mit __weak-Symbol in den perepheriespezifischen .c-Files
bereit.
Das ganz sieht dann zum Beispiel wie folgt aus:
1 | __weak void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan)
|
2 | {
|
3 | /* Prevent unused argument(s) compilation warning */
|
4 | UNUSED(hcan);
|
5 | /* NOTE : This function Should not be modified, when the callback is needed,
|
6 | the HAL_CAN_RxCpltCallback can be implemented in the user file
|
7 | */
|
8 | }
|
Meine Frage lautet nun: wie sieht die Implementierung von void
HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan) in z.B. main.c
korrekterweise aus?
In meinem Fall erkennt der Linker nicht, dass in main.c eine
gleichnamige Funktion ohne __weak-Symbol vorhanden ist und diese die
HAL-Funktion "überschreiben" sollte. Was mache ich falsch?