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

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

记录RT-Thread 在 STM32 上实现 USB 虚拟串口(2)_第1张图片

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

记录RT-Thread 在 STM32 上实现 USB 虚拟串口(2)_第2张图片

记录RT-Thread 在 STM32 上实现 USB 虚拟串口(2)_第3张图片

CubeMX_Config配置

记录RT-Thread 在 STM32 上实现 USB 虚拟串口(2)_第4张图片

 

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

 

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

记录RT-Thread 在 STM32 上实现 USB 虚拟串口(2)_第5张图片

 

添加代码打印

 

 #include 
 #include 

 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;
}

 

记录RT-Thread 在 STM32 上实现 USB 虚拟串口(2)_第6张图片

但是不能输入,容易死机

记录RT-Thread 在 STM32 上实现 USB 虚拟串口(2)_第7张图片

 

你可能感兴趣的:(ARM,物联网)