gpt4 book ai didi

c - STM32 USB VCP(虚拟串口)

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:33 25 4
gpt4 key购买 nike

我使用 CubeMX 为 USB VCP 生成了“stm32f103c8t6”代码,当我添加“CDC_Transmit_FS”命令发送数据时,windows10 无法识别该端口!我应该怎么办?这是编译没有错误的代码:

#include "stm32f1xx_hal.h"
#include "usb_device.h"
#include "usbd_cdc_if.h"

int main(void)
{
uint8_t Text[] = "Hello\r\n";
while (1)
{
CDC_Transmit_FS(Text,6); /*when commented the port is recognized*/
HAL_Delay(1000);
}
}

最佳答案

根据我的经验,您需要检查三件事:

  1. startup_stm32f405xx.s --> 增加堆大小。我也使用堆大小 800 和堆栈大小 800。
  2. usbd_cdc_if.c --> APP_RX_DATA_SIZE 64 和 APP_TX_DATA_SIZE 64
  3. usbd_cdc_if.c --> 将以下代码添加到 CDC_Control_FS() 函数

代码:

case CDC_SET_LINE_CODING:
tempbuf[0]=pbuf[0];
tempbuf[1]=pbuf[1];
tempbuf[2]=pbuf[2];
tempbuf[3]=pbuf[3];
tempbuf[4]=pbuf[4];
tempbuf[5]=pbuf[5];
tempbuf[6]=pbuf[6];
break;
case CDC_GET_LINE_CODING:
pbuf[0]=tempbuf[0];
pbuf[1]=tempbuf[1];
pbuf[2]=tempbuf[2];
pbuf[3]=tempbuf[3];
pbuf[4]=tempbuf[4];
pbuf[5]=tempbuf[5];
pbuf[6]=tempbuf[6];
break;

并在用户 private_variables 部分定义 uint8_t tempbuf[7];

如果不增加堆大小,Windows 根本不会使用react。如果没有第 3 点,Windows 将发送波特率信息,然后读取波特率,期望返回相同的值。由于您没有返回任何值,因此虚拟 com 端口保持为未加载驱动程序。

如果您完成所有这些操作,则可以使用 Windows 10 开箱即用的 VCP 驱动程序。无需在您的系统上安装非常旧的 ST VCP 驱动程序。

PS:我在某处读到打开 VSense 也会出现问题。不知道,我还没有配置它,一切都很顺利。

关于c - STM32 USB VCP(虚拟串口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40597612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com