2017-05-30 4 views
0

J'utilise stm32l151 et je veux utiliser un périphérique USB en mode cdc. J'ai utilisé stm32 cubeMx pour générer le projet. cependant la fonction CDC_Transmit_FS() retourne toujours USBD_BUSY. Quelqu'un peut-il m'aider?STM32 USB CDC ne fonctionnait pas

Voici mon code:

while (1) 
{ 
    CDC_Transmit_FS(Buffer, 6); 
    HAL_Delay(2000); 
} 

Je n'ajouté le code ci-dessus pour le projet créé par STM32cubeMX mais cela n'a pas fonctionné.

+0

Je peux dire que https://stackoverflow.com/questions/33549084/stm32cubemx-usb-cdc-vcp cela fonctionne. –

+0

@BenceKaulics Je vois cet article et j'écris le code exactement comme ça. mais ça ne marche pas. – Mohammad

+0

Côté matériel, s'agit-il d'une carte personnalisée? Comment les lignes USB sont-elles connectées? –

Répondre

0
  1. La bibliothèque STM est buggée et elle se bloque lorsque vous essayez par exemple d'envoyer de nombreux paquets de données plus volumineux.
  2. Il y a un problème avec les pilotes Windows et il y a des délais assez longs entre les paquets. Donc 12 Mo est assez difficile à archiver - en utilisant CubeMx je ne pouvais avoir que 3-4 Mo (12 Mo quand le paquet est envoyé).
  3. Un autre problème que j'avais - je devais envoyer des données à l'appareil bofore je pourrais transmettre le prochain paquet (maximum 8kB dans mon cas), sinon il a calé au hasard.
0

Heureusement, le problème est résolu et je peux recevoir des données dans le PC à partir du STM32. Il y avait un problème dans mon logiciel de terminal. J'ai utilisé un port série pour surveiller les données reçues du port série, cependant ce logiciel de moniteur série n'ouvre pas le port série seul et si un autre logiciel ouvre le port série et reçoit les données, il surveille les réceptions de données. Je ne le savais pas. Merci