記錄RT-Thread 在 STM32 上實現 USB 虛擬串口(2)

驅動文件依賴於 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;
}

 

但是不能輸入,容易死機

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章