HAL库如何使用USB虚拟串口

2025-09-29 01:49:58

1、第一步:打开STM32CubeMX软件,新建一个工程,选择目标板对应的芯片。

HAL库如何使用USB虚拟串口

2、第二步:在Peripherals配置SYS的Debug为“Serial Wire”,因为HAL库默认配置会导致不能正常烧录程序,配置为“Serial Wire”则可以使用ST-LINK正常刷程序。

HAL库如何使用USB虚拟串口

HAL库如何使用USB虚拟串口

3、第三步:在Peripherals展开“USB”使能Device。

HAL库如何使用USB虚拟串口

HAL库如何使用USB虚拟串口

4、第四步:展开“MiddleWares”->“USB_DEVICE”,配置“Class For FS IP”为“Communication Device Class (Virtual Port)”,即虚拟串口。

HAL库如何使用USB虚拟串口

HAL库如何使用USB虚拟串口

5、第五步:展开“Peripherals”->“RCC”,配置时钟,这里选择“Crystal/Ceramic Resonator”即外部晶振,为了方便,这里将高速和低速时钟都选择外部时钟。

HAL库如何使用USB虚拟串口

HAL库如何使用USB虚拟串口

6、第六步:外设配置完成后芯片引脚图如下。

HAL库如何使用USB虚拟串口

7、第七步:切换至“Clock Configuration”页,配置时钟树,如果是第一次切入会弹出提示“自动计算时钟”的提示,因为USB的时钟配置要求比较多,如果不是很熟悉建议选择“Yes”,软件会根据设置的时钟源将时钟树自动设置好。

HAL库如何使用USB虚拟串口

HAL库如何使用USB虚拟串口

8、第八步:软件配置OK,接下来通过点击“Project”->“Setting...”调出“Project Settings”,给新工程起个名,Toolchain/IDE这里选择Keil5,其它的保持默认,需要注意的是,默认的堆栈比较小,可根据需求设置为需要的容量。设置完成后点击“OK”确认。

HAL库如何使用USB虚拟串口

HAL库如何使用USB虚拟串口

9、第九步:生成并编译代码。

HAL库如何使用USB虚拟串口

HAL库如何使用USB虚拟串口

10、第十步:将编译后的代码烧录到目标板,重启目标板,如果在设备管理中看到一个新的STMicroelectronics Virtual COM Port那么操作就成功了,当然前提是已经安装了STM虚拟串口驱动,这个可以在STM的官方网站获得。

HAL库如何使用USB虚拟串口

1、接下来测试下虚拟串口的发送功能,需要用到位于usbd_cdc_if.c的CDC_Transmit_FS函数,为此需要将usbd_cdc_if.h包含到调用该函数的c文件中。

HAL库如何使用USB虚拟串口

HAL库如何使用USB虚拟串口

2、发送函数CDC_Transmit_FS有两个参数,第一个是要发送的数据指针,第二个是需要发送的数据个数(以字节位单位),由于没有其他程序,这里使用HAL_Delay阻塞延时。

 

HAL_Delay(1000); //延时1000毫秒

 

  CDC_Transmit_FS((uint8_t *)"Hello world !\r\n", sizeof("Hello world !\r\n"));

HAL库如何使用USB虚拟串口

3、确认修改后重新编译并烧录程序,重启目标板,打开PC端的串口调试助手,可以看到熟悉的“Hello world!”了。

HAL库如何使用USB虚拟串口

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢