Closed SkylerLiang closed 4 weeks ago
使用的单片机为STM32F103RCT6,用CubeMX生成工程,在使用UART发送以及UART中断接收时,可以正常使用,代码如下:
short userShellWrite(char *data, unsigned short len) { HAL_UART_Transmit(&huart1, (uint8_t *)data, len, 0xFF); return len; }
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart->Instance == huart1.Instance) { shellHandler(&shell, uartRxBuf); } HAL_UART_Receive_IT(&huart1, &uartRxBuf, 1); }
但使用CubeMX生成的USB虚拟串口时,出现了错误,代码如下:
short userShellWrite(char *data, unsigned short len) { if (0 != CDC_Transmit_FS((uint8_t *)data, (uint16_t)len)) { return 0; } return (short)len; }
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 6 */ for (int i = 0; i < (*Len); i++) { shellHandler(&shell, (char)Buf[i]); } USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); USBD_CDC_ReceivePacket(&hUsbDeviceFS); return (USBD_OK); /* USER CODE END 6 */ }
显示如下: 不显示用户名等内容 请问可能是什么导致的
看着是没啥问题,不过我没有试过虚拟串口,会不会有什么缓冲区之类的设置
没用ST的驱动,你尝试一下cherryUSB,它比st的屎山好的多
同问题,现在解决了吗
还没有,后面没有研究这个问题了
搞定了,是官方库的传输函数连续使用会有问题
把rxFlag和rxBuf声明为全局变量即可
明白了,多谢
使用的单片机为STM32F103RCT6,用CubeMX生成工程,在使用UART发送以及UART中断接收时,可以正常使用,代码如下:
但使用CubeMX生成的USB虚拟串口时,出现了错误,代码如下:
显示如下: 不显示用户名等内容 请问可能是什么导致的