记录RT-Thread 在 STM32 上实现 USB 虚拟串口(2)

60 篇文章 12 订阅

驱动文件依赖于 BSP_USING_USBD(有的是BSP_USING_USBD_FS)这个配置项

if GetDepend('RT_USING_HWCRYPTO'):
    src += ['drv_crypto.c']
	
if GetDepend(['BSP_USING_WDT']):
    src += ['drv_wdt.c']

if GetDepend(['BSP_USING_SDIO']):
    src += ['drv_sdio.c']

if GetDepend(['BSP_USING_USBD']):
    src += ['drv_usbd.c']

if GetDepend(['BSP_USING_PULSE_ENCODER']):
    src += ['drv_pulse_encoder.c']

 

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

添加

config BSP_USING_USBD(有的是BSP_USING_USBD_FS)

bool "Enable OTGHS as USB device"

select RT_USING_USB_DEVICE

default n

配置menuconfig

CubeMX_Config配置

 

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

 

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

 

添加代码打印

 

 #include <rtthread.h>
 #include <rtdevice.h>

 int usbtest(void)
 {
     rt_device_t dev = RT_NULL;
     char buf[] = "hello rt-thread!\r\n";
 
     dev = rt_device_find("vcom");

    if (dev)
        rt_device_open(dev, RT_DEVICE_FLAG_RDWR);
    else
        return -RT_ERROR;

    while (1)
    {
        rt_device_write(dev, 0, buf, rt_strlen(buf));
       rt_thread_mdelay(2000);
    }

    return RT_EOK;
}

 

但是不能输入,容易死机

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值