|
VirtualCOMPort 例子丢失数据的可能原因
刚刚收到武汉力源的朋友发来的email如下,楼主可以试试:
STM32虚拟串口提供的代码存在丢失串口数据的问题,其可能原因如下: 以下是串口接收中断调用的函数及USB发送完回调函数 void USART_To_USB_Send_Data(void) { if (linecoding.datatype == 7) { buffer_in[count_in] = USART_ReceiveData(USART1) & 0x7F; } else if (linecoding.datatype == 8) { buffer_in[count_in] = USART_ReceiveData(USART1); } count_in++; UserToPMABufferCopy(buffer_in, ENDP1_TXADDR, count_in); SetEPTxCount(ENDP1, count_in); SetEPTxValid(ENDP1); } void EP1_IN_Callback(void) { count_in = 0; }
其中 count_in为串口接收数据指针,串口接收中断及USB发送完回调函数都会修改count_in指针,这样就会造成数据丢失。 以上代码版本为V2.2.1 /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** * File Name : main.c * Author : MCD Application Team * Version : V2.2.1 * Date : 09/22/2008 * Description : Virtual Com Port Demo main file ******************************************************************************** |
|