STM32 Virtual USB: Device weg nach Datensenden

OP Persönliche Seite #1906291
Lesenswert?

Hallo,

ich habe gerade den Artikel STM32 USB-FS-Device Lib gelesen und das 
Beispiel ausprobiert.

Das ganze klappt (nachdem ich die RCC-Initialisierungen wieder eingebaut 
hatte) soweit, dass sich das Gerät enummeriert und im Gerätemanager 
(Win7) angezeigt wird. Per HTerm kann ich auch den Port öffnen.

Sende ich aber Daten, verschwindet das Gerät aus dem Gerätemanager. Und 
ich bekomme (natürlich) auch keinen String zurückgeschickt.

Hat jemand eine Idee, woran das liegen könnte?


Sollten Daten/Code/WhatEver fehlen, reich ich's gerne nach. Aber ich hab 
eigentlich nur den Code aus dem Artikel benutzt.

Viele Grüße
Lasse

PS: Kennt jemand ein gutes (kostenloses) Programm, mit dem man den 
USB-Verkehr mitschneiden kann um zu gucken, ob da irgendwelche 
Fehlermeldungen auftreten, die Windows mir nicht mitteilt?
Persönliche Seite #1906999
Lesenswert?

Lasse S. schrieb:
> Okay, Fehlerpräzision geglückt:
>
> Er springt in der usb/main Funktion in der Zeile
>
1
buffer[bufferPos] = buffer_out[i];
> In einen Hartfault.
>
> Ideen, woran das liegt?

Poste mal deine ganze main, eigentlich funktioniert der ST-Code recht 
gut.

An USB-Tools kann ich USBTrace empfehlen, siehe

http://www.sysnucleus.com/

Es gibt eine beschränkte kostenlose Version, die irgendwann abläuft. Man 
kann sie aber wieder neu installieren.
OP Persönliche Seite #1907689
Lesenswert?

Hi,

der Code ist der gleiche wie im Artikel.

Es funktioniert, sobald ich die Variablen innerhalb der main deklariere. 
Also diese Änderung:
1
  uint8_t buffer[128];
2
  uint8_t SendBuffer[128];
3

4
int usb_main(void)
5
{
1
int usb_main(void)
2
{
3

4
  uint8_t buffer[128];
5
  uint8_t SendBuffer[128];

mache.

Anscheinend mag der GCC das nicht, wenn solche Variablen global aber nur 
innerhalb einer Code-Datei und in keinem Header vorkommen?

Ich bin so also glücklich und es funktioniert :) Danke trotzdem :)

Gruß
Lasse

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