HAL库如何使用USB虚拟串口
来源:网络收集 点击: 时间:2024-08-15第一步:打开STM32CubeMX软件,新建一个工程,选择目标板对应的芯片。

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


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


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


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


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

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


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


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


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

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


发送函数CDC_Transmit_FS有两个参数,第一个是要发送的数据指针,第二个是需要发送的数据个数(以字节位单位),由于没有其他程序,这里使用HAL_Delay阻塞延时。HAL_Delay(1000);//延时1000毫秒CDC_Transmit_FS((uint8_t *)Hello world !\r\n, sizeof(Hello world !\r\n));

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

1、如果插上电脑后设备显示感叹号,请确认是否安装了STM的虚拟串口驱动。
2、如果插上电脑,设备管理没有任何更新,那么请确认USB的D+是否有上拉电阻(通常为1.5k)。
3、STM32的USB虚拟串口不受波特率限制。
STM32HALUSB虚拟串口版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.ff371.cn/art_1124409.html