Hallo zusammen!
Ich habe ein kleines Projekt vor mir, wobei ein älters Modul, welches
über USB->FT232->AT89S51 durch einen STM32 ersetzt werden soll,
welcher schon über USB verfügt. Wichtig ist hierbei das die neue Platine
kompatibel zur alten ist, also die selben Befehle verschickt/empfängt
Ich habe nun bereits mit einem F429ZI-Nucleo Board erste Schritte im
Bereich USB gemacht, und erfolgreich mit dem PC bzw. der Modulsoftware
auf dem PC kommuniziert - funktioniert einwandfrei.
Nun stecke ich aber etwas fest, in der data "usbd_cdc_if.c" werden ja
die Com-Daten empfangen
1 | static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
|
2 | {
|
3 | /* USER CODE BEGIN 6 */
|
4 | USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
|
5 | USBD_CDC_ReceivePacket(&hUsbDeviceFS);
|
6 | return (USBD_OK);
|
7 | /* USER CODE END 6 */
|
8 | }
|
Das ist mir auch schlüssig, und ich kann auch in diese Funktion z.b. die
Bufferdaten bearbeiten und auf die empfangenden Kommandos antworten.
Was ich nun aber tun möchte, ist das diese Funktion eine andere Funktion
von mir aufruft, also z.b. "handle_cmd(buf, len)".
Dazu möchte ich z.b. ein neues File anlegen und in main.c inkludieren.
Das ist ja kein Problem und habe ich schon oft gemacht, wo ich aber
aktuell feststecke ist, wie die Funktion CDC_Receive_FS meine eigene
Funktion dann aufrufen kann. Das ganze ist nötig, da ja beim Empfangen
eines Kommandos einige dinge getan werden müssen (Länge/Inhalt prüfen,
je nach Kommandobyte etwas ausführen, eine entsprechende Antwort
zusammenstellen etc etc).
Wie kann so etwas gemacht werden?
Vielen Dank für eure Unterstützung und ein schönes Wochenende,
Gruss Daniel