HAL库如何使用USB虚拟串口

时间:2024-10-14 13:09:59

对于STM32的USB功能,通常都使用官方的USB库涠础险渥操作,虽然它已经将协议的具体实现封装好了,但是庞大的代码量让刚接触它的人望而却步。利用HAL库可以很快地生成一个USB代码,本人经过一番摸索,终于成功在STM32F103系列芯片上成功使用了USB虚拟串口功能,在这里记录下,也希望对需要的朋友有帮助。

HAL库设置

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 Sett足毂忍珩ings”,给新工程起个名,Toolchain/IDE这里选择Keil5,其它的保持默认,需要注意的是,默认的堆栈比较小,可根据需求设置为需要的容量。设置完成后点击“OK”确认。

HAL库如何使用USB虚拟串口
HAL库如何使用USB虚拟串口

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

HAL库如何使用USB虚拟串口
HAL库如何使用USB虚拟串口

10、第十步:将编译后的代码烧录到目标板,重启目标板,如果在设备管理中看到一个新的STMicroelectroni艘早祓胂cs 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虚拟串口
© 手抄报圈