STM32F207: Compilerfehler

Gast #2428381
Lesenswert?
• ▲
▼
Hi,

verwende als Toolchain den IAR Embedded Workbench.
Der IAR Compiler zeigt mir folgenden Fehler an:

Error[Pe167]: argument of type "void (*)(obSTM32UART *)" is incompatible 
with parameter of type "void (*)(void *)


Scheduler.c Datei:
1
//- Interruptfunktionen
2
obSTM32Scheduler_MLst.Parent.SetTimerInterrupt = (int(*)(obScheduler*,int,void(*)(void*),void*,int,int))  obSTM32Scheduler_SetTimerInterrupt;

UART.c Datei:
1
void  obSTM32UART_FrameEnd(obSTM32UART* pInst)
2
{
3
...
4
        // Frame-End Timer stoppen
5
        pInst->m_pTimer->pM->SetTimerInterrupt(pInst->m_pTimer,0,*obSTM32UART_FrameEnd,pInst,0,0);
6
...
7
}

Es liegt wahrscheinlich an der Verwendung des dritten Parameter von der 
SetTimerInterrupt Methode.
Wie kann ich den Fehler beheben ?
#2428440
Lesenswert?
• ▲
▼
Leo schrieb:
> Wie müsste ich den Pointer zurechtcasten ?

Der Compiler schreibt es dir doch sogar hin, wie der Datentyp aussehen 
muss

Error[Pe167]: argument of type "void (*)(obSTM32UART *)" is incompatible
with parameter of type "void (*)(void *)

Du hast einen
void (*)(obSTM32UART *)
und es sollte sein ein
void (*)(void *)

Ergo:
1
pInst->m_pTimer->pM->SetTimerInterrupt(pInst->m_pTimer,0,(void (*)(void *))obSTM32UART_FrameEnd,pInst,0,0);

mach dir am besten einen typedef dafür, das wirst du wahrscheinlich noch 
öfter brauchen.
1
typedef void (* voidPtrFnct)(void *);
2

3
....
4

5
pInst->m_pTimer->pM->SetTimerInterrupt(pInst->m_pTimer,0,(voidPtrFnct)obSTM32UART_FrameEnd,pInst,0,0);

> Ich habe jetzt schon alles erdenkliche ausprobiert.
Das einzig hilfreiche wahrscheinlich nicht: Das Studium von Literatur 
und dort wiederrum das Kapitel, in dem Funktionspointer besprochen 
werden.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.