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
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.
Ales klar! Die Antworten haben mir geholfen und nun funktioniert es! Vielen Dank!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.