驅動文件依賴於 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;
}
但是不能輸入,容易死機