Problem externe Funktion in C einzubinden

Gast #3037302
Lesenswert?

Hallo Experten,

ich programmiere gerade meinen STM32F4 und habe folgendes Problem:
In der Datei usbd_cdc.c ist folgende Funktion:

static uint16_t cdc_DataTx (uint8_t* Buf, uint32_t Len)
{

  uint32_t i;
  for( i = 0; i < Len; i++ )
  {
    APP_Rx_Buffer[APP_Rx_ptr_in] = Buf[i] ;
    APP_Rx_ptr_in++;
    if(APP_Rx_ptr_in == APP_RX_DATA_SIZE)
    {
      APP_Rx_ptr_in = 0;
    }
  }
  return USBD_OK;
}

Der Funktionsprototyp ist nstürlich folglich:
static uint16_t cdc_DataTx   (uint8_t* Buf, uint32_t Len);

Nun versuche ich in meiner stm32f4xx_it.c die funktion von oben zu 
verwenden:
cdc_DataTx(&test[0], 2);

Nun ist klar dass ich ihm einen Funktionprototypen geben muss.
Also habe ich folgendes Probiert:
extern uint16_t cdc_DataTx   (uint8_t* Buf, uint32_t Len);

Da mault er aber:
THUMB Debug/stm32f4xx_it.o: In function `TIM3_IRQHandler':
undefined reference to `cdc_DataTx'

Was mach ich falsch beim Funktionsprototypen??

Vielen Dank für Antworten!
Florian
#3037314
Lesenswert?

Die Funktion ist static definiert, deshalb ist sie nur innerhalb von 
usbd_cdc.c sichtbar. Sie ist also nicht dazu gedacht, von außen 
aufgerufen zu werden.

Wenn die usbd_cdc.c von Dir ist, dann mach das static weg. Wenn sie 
nicht von Dir ist, hat sich derjenige sicherlich etwas dabei gedacht. 
Das heißt, Du verwendest die Schnittstelle nicht richtig und willst 
eigentlich eine andere Funktion aufrufen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren