STM32 USB 復合裝置實現

2022-08-19 17:15:10 字數 1250 閱讀 4253

可實現用乙個usb介面實現多個usb裝置,如 hid+msc; hid+cdc; hid+cdc+msc等等

使用hal庫,以hid+msc為例

具體步驟:

目錄四、初始化使用

增加端點,同時修改fifo配置大小,stm32 usb fs fifo總大小為1.25kb,設定是使用的單位是32bit;

原始碼 usb_core.c 中的函式

usb_otg_sts usb_otg_selectcore(usb_otg_core_handle *pdev, 

usb_otg_core_id_typedef coreid)

中部分內容修改如下:

if (coreid == usb_otg_fs_core_id)

另乙個函式

usb_otg_sts usb_otg_coreinitdev (usb_otg_core_handle *pdev)
部分內容修改如下:

if(pdev->cfg.coreid == usb_otg_fs_core_id  )

usbd_desc.c 檔案中部分內容修改如下

uint8_t usbd_devicedesc[usb_siz_device_desc] =

; /* usb_devicedescriptor */

新建 usbd_hid_msc_core.c 檔案。

usbd_class_cb_typedef  usbd_msc_hid_cb = 

;

__align_begin static uint8_t usbd_msc_hid_cfgdesc[usb_msc_hid_config_desc_siz] __align_end =

;

以 usbd_msc_hid_init() 函式為例,其他函式同理。

static uint8_t  usbd_msc_hid_init (void  *pdev, 

uint8_t cfgidx)

在加上結構體中的其他函式。

usbd_init(&usb_otg_dev,usb_otg_fs_core_id,&usr_desc,&usbd_msc_hid_cb,&usr_cb);

STM32 USB學習筆記

stm32 usb學習筆記 一 usb fs device firmware library 使用韌體庫開發程式,需要包含幾個檔案 從圖中可見,應用程式介面部分,有 usb pwr,usb conf,usb desc,usb istr,usb prop,usb endp六個檔案,在裝置驅動中有六個檔...

STM32 USB 上位機程式實現

libusb是開源的c庫,使用該庫是的使用者可以在應用程式中直接訪問 usb 裝置,無需為 usb 裝置編寫核心驅動。libusb支援多個平台 linux,window,ios 所以可以很方便地將應用程式移植到其他平台。tar jxvf libusb 1.0.20.tar.bz2 cd libusb...

STM32F207 USB復合裝置

最近乙個專案需要用f207的usb做乙個復合裝置,目標是將msc和vcp裝置復合,msc裝置使用的是spiflash。根據其他人的經驗,做usb復合裝置的過程,大致上就是將兩個裝置的描述符和 融合在一起。不過做起來可是沒有這麼簡單,我剛開始把兩部分 一下子融合在一起,各種問題和錯誤,什麼描述符問題,...