3 votos

USB CDC flushing TX buffer

Una breve introducción a este problema:

Tengo un STM32F767 que está configurado para USB Device FS. La interfaz USB se utiliza para transmitir una gran cantidad de datos de MCU a la computadora. Si, por casualidad el usuario cierra el puerto virtual Com (USB) de MCU, la próxima vez que el usuario abre el puerto virtual Com (USB), MCU enviará los datos restantes que estaba transmitiendo a la computadora, creando un montón de problemas.

Quiero vaciar el búfer de transmisión del modo Dispositivo USB o abortar el progreso de la transmisión cada vez que VCP se abre/cierra en el ordenador. Tengo que mencionar que uso las bibliotecas HAL.

3voto

Tim Puntos 713

Estoy usando STM32Cube v1.16.0 y esto me funciona:

#include "stm32f4xx_ll_usb.h"

...

PCD_HandleTypeDef *hpcd = hUsbDeviceFS.pData;
USB_FlushTxFifo(hpcd->Instance, 0x10U);

Bandera 0x10U significa "Purgar todos los búferes de transmisión". Ver stm32f4xx_ll_usb.c para más detalles.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X