解决上电第一次USB CDC收到数据后,Buf并没有更新为本次正确的内容,而是乱数据。
解决STM32上电第一次USB CDC收到数据后,Buf并没有更新为本次正确的内容,而是乱数据。
发现初始化时CDC_Init_FS()设置CDC接收区是UserRxBufferFS[],但事件发生时的函数CDC_Receive_FS()中的接收区是Buf[],推测是上电后CDC第一次收数据后存到了UserRxBufferFS[],但事件发生时函数中却使用Buf[],因此并没有用对正确的数据。因此将CDC_Receive_FS()中所有的Buf修改为UserRxBufferFS[]
static int8_t CDC_Init_FS(void) {
/* USER CODE BEGIN 3 /
/ Set Application Buffers /
USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0);
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS);
return (USBD_OK);
/ USER CODE END 3 */
}
static int8_t CDC_Receive_FS(uint8_t *Buf, uint32_t Len) {
/ USER CODE BEGIN 6 */
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); //确保能持续接收数据
USBD_CDC_ReceivePacket(&hUsbDeviceFS); //准备下一次接收
…
}

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)