datasheet

STM32单片机

文章数:386 被阅读:1183478

账号入驻

基于 RT-Thread 在 STM32 上实现 USB 虚拟串口

2019-07-17
    阅读数:

作者:郭老师

之前由于工作需要,基于 RT-Thread 在 STM32 上实现了 USB 虚拟串口。为了方便大家,我在这里把在正点原子 F429 阿波罗开发板上实现 USB 虚拟串口的详细过程分享给大家,希望可以帮助到更多想要学习 USB 的人。

1、首先,需要更新了一下 RT-Thread 的源代码(因为 RT-Thread 的代码更新很快,短时间内就有可能有很多的代码更新,Github地址:https://github.com/RT-Thread/rt-thread  点star还能领10元柿饼派优惠券) 

2、然后进入 rt-thread\bsp\stm32目录下,找到正点原子 F429 阿波罗开发板对应的BSP stm32f429-atk-apollo ,打开此目录。

3、然后查看一下当前 BSP 支持不支持 USB 功能。在当前目录下打开 Env 工具,输入menuconfig 命令查看,可以看到在硬件配置的片上外设的配置菜单中并没有配置 USB 的选项,看来这个 BSP 还不支持 USB 设备。

4、想到新的 STM32 BSP 所有的 BSP 都是用的同一份驱动,这样就可以根据有没有做好的 USB 驱动来判断有没有 BSP 支持 USB 功能了。打开rt-thread\bsp\stm32\libraries\HAL_Drivers目录。如下所示,可以看到里面果然有 usb 的驱动文件,叫做drv_usbd_fs.c

5、然后根据同一目录下的 Sconscript 脚本文件,可以查看这个驱动的依赖关系,根据下面的图片可以看出,此驱动文件依赖于 BSP_USING_USBD_FS这个配置项。

6、全局搜索此 stm32 目录下所有的 BSP ,查看哪个 bsp 下有这个配置项。根据这个配置项可以判断出哪个 BSP 支持了 USB 的功能,也可以借此看出依赖关系。搜索发现 F469 的 bsp 有这个配置项,由下图可以看出:打开这个配置的同时,利用 select 命令打开了 RT_USING_USB_DEVICE 这个配置。

7、修改正点原子 F429 阿波罗 bsp 下 Kconfig 文件,添加这一段配置项。

8、然后,利用 Env 工具根据修改好的配置菜单配置工程。在 目录下输入 menuconfig 配置工程,开启刚刚添加的 usb 驱动的配置项。

9、然后,进入组件配置菜单下设备驱动的配置菜单中的 USB 配置,配置 usb 设备框架的选项。开启虚拟串口。

10、保存并重新生成工程。发现编译报错。看起来是硬件没有配置。需要打开 stm32CubMX 配置 usb 的硬件引脚。

11、打开stm32f429-atk-apollo\board\CubeMX_Config目录下 stm32CubMX 的工程,配置 usb.

12、开启 usb 功能之后,时钟配置报警告,还需重新配置一下时钟。配置好之后,重新生成代码。

13、由于更新了时钟树,所以还要把stm32f429-atk-apollo\board\CubeMX_Config\Src目录下main.c中的时钟配置函数SystemClock_Config更新到stm32f429-atk-apollo\board目录下的 board.c 文件中。

14、然后重新打开工程,编译,发现还是报错,cannot open source input file "stm32f4xx_hal_exti.h": No such file or directory,注释掉报错的头文件重新编译即可。再次编译,发现没有问题了。

15、下载运行,输入 list_device 命令可以看到注册到系统中的两个 usb 相关的设备。

16、然后在 main函数里添加一段测试代码,编译下载运行。

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved