STM32 VCP - Recibir datos de la PC

4

Estoy utilizando el firmware STM32 HAL VCP generado por CubeMX en la placa de descubrimiento STM32F4. El puerto COM virtual funciona, puedo transmitir desde el microcontrolador a la PC tantos mensajes como desee. Pero en la otra dirección, desde la PC al microcontrolador, solo puedo enviar un mensaje. Si intento enviar un segundo mensaje, no se llamará al static int8_t CDC_Receive_FS (char* Buf, uint32_t *Len) callback, y en la PC se cuelga RealTerm. El programa de mi cliente también se bloquea cuando intenta escribir en el puerto COM por segunda vez.

En el lado del microcontrolador, eliminé todo mi código en CDC_Receive_FS() , actualmente solo devuelve USBD_OK . En la función principal solo se llama periódicamente a HAL_Delay() , también intenté eliminar esto, pero no tuvo ningún efecto.

¿Alguna idea, cuál podría ser el problema?

    
pregunta ramez

1 respuesta

9

Encontré la respuesta para mi propia pregunta. Hay un ejemplo bien documentado en la siguiente página web: enlace

Primero que todo, tuve que completar el código generado en static int8_t CDC_Receive_FS (char* Buf, uint32_t *Len) como está escrito en la fuente de arriba.

Después de eso tuve que crear e implementar la función int VCP_read(void *pBuffer, int size) , como está escrito en la fuente mencionada anteriormente.

El punto clave fue que tuve que llamar periódicamente a la función int VCP_read(void *pBuffer, int size) para leer en el búfer los datos recibidos. Si no llamo a esta función, la PC no podrá escribir la próxima vez que el puerto COM.

    
respondido por el ramez

Lea otras preguntas en las etiquetas