cancel
Showing results for 
Search instead for 
Did you mean: 

Application gets stuck when sending string in USB_CDC

SSmit.13
Senior

Hi

  I am using a STML4xx processor and use HAL for system initialising, and sending strings through the USB port. It works most of the time. I call the below function SendString(...) to send string through the USB port , never within an interupt. I have a volatile variable as a timeout and decremented within the System timer. Sometimes the system sticks inside the CDC_Transmit_FS command, when stuck the System timer doesnt get called. Seems to stick within the routine.

I cant see whay it doesnt break the loop , if it cant send the string. Anyone any idea?

Best Regards

Scott

 

 

 

extern volatile short int USBTimeout;
void SendString(char *Data)
{
   int Length=strlen(Data);
   USBTimeout=500;
   while(CDC_Transmit_FS(Data,Length)==USBD_BUSY && USBTimeout)
	 ;
}
void SysTick_Handler(void)
{
   if(USBTimeout)
	USBTimeout--;
}

 

 

 

1 REPLY 1
FBL
ST Employee

Hi @SSmit.13 

Consider using a non-blocking approach to send data and check your USB configuration.

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.