STM32 USB CDC Funktion umplatzieren

Gast #6804113
Lesenswert?

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
Gast #6804131
Lesenswert?

Sinnigerweise haben die Software-Leute von STM den gezeigten, vom
Code-Generator vorgefertigten Code ja in einen Rahmen gesetzt

  /* USER CODE BEGIN 6 */

  /* USER CODE END 6 */

und signalisieren damit dass hier durchaus in das Sourcen-
Gefüge von STM "eingegriffen" werden kann/soll.
Gast #6804202
Lesenswert?

Niklas Gürtler schrieb:
> Noch eine Alternative:

"Alternative" würde bedeuten dass man den Vorschlag anstelle
des ersten oder zweiten ohne viel Aufhebens einsetzen kann.

Diese Möglichkeit kann ich hier jedoch nicht erkennen. Auch
wird sich der TO nicht mit der Einbindung in ein Sourcen-
Gefüge auseinandersetzen (wollen) das von CubeMX Codegenerator
erzeugt worden ist. Da wären nämlich noch andere Schnittstellen
zu bedienen.

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