一开始移置的标准库官方例程
在
单片机接收数据的地方增加LED状态控制来观察
static uint16_t VCP_DataRx (uint8_t* Buf, uint32_t Len)
{
uint32_t i;
for (i = 0; i < Len; i++)
{
USART_SendData(USART1, *(Buf + i) );
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
LED_TOGGLE;//LED状态翻转
return USBD_OK;
}
从上位机串口软件发送数据时第一次LED状态变化,再发就不动作了,也收不到数据,
串口工具关闭串口再重新打开后第一次发送还能变化一次,再发送就不变了。
开始以为标准版的固件不兼容最新的上位机驱动(我的系统是WIN7 X86 32位)又用CUBE生成了一个基于HAL的代码来测试,问题还是一模一样
- static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
- {
- /* USER CODE BEGIN 6 */
- USBD_CDC_SetRxBuffer(&hU***DeviceFS, &Buf[0]);
- USBD_CDC_ReceivePacket(&hU***DeviceFS);
-
- LED_TOGGLE;
-
- return (USBD_OK);
- /* USER CODE END 6 */
- }
有经验的朋友,给点意见,查这个问题应该从哪儿入手,谢谢!