STM32F4中USB與PC雙向通信


STM32F4系列處理器內部集成了USB-OTG控制器,在不要外部USB IC下就可以實現USB通信,最近兩天看了下如何利用STM32的USB實現通信,記錄下關鍵步驟:

1. 從http://www.stmcu.org/document/list/index/category-524下載所需要的USB_OTG主機和設備庫;

2. 新建STM32工程,並把STM32_USB-Host-Device_Lib下的Libraries中的3個USB庫放到工程文件中;

3.在Keil中建立USB相關文件夾,並加入相應的驅動文件:(可參考STM32_USB-Host-Device_Lib—>Project—>USB_Device_Examples—>HID,指示官方給的HID例程是用按鍵作為鼠標與PC連接),建立好的工程文件如下圖:

4. 修改驅動文件,其中usb_hid_core.c位於STM32_USB-Host-Device_Lib—>Project—>USB_Device_Examples—>HID,即官方給的驅動。主要修改以下幾個文件:usb_bsp.c(USB引腳初始化,可只需要兩根數據引腳),usbd_desc.c(USB設備描述符,當然這個也可以不用修改,采用默認即可),usbd_usr.c(用於設備連接過程的信息顯示),usbd_hid_core.c(此為重點修改文件,主要在USBD_HID_cb中添加USBD_HID_DataOut,USBD_HID_CfgDesc中添加HID_OUT_EP,修改HID_MOUSE_ReportDesc,USBD_HID_Init中添加DCD_EP_PrepareRx,並添加USBD_HID_DataOut函數)

5. 修改了usbd_hid_core.c后,同時需要修改usbd_hid_core.h中的USB_HID_CONFIG_DESC_SIZ等參數。注:HID_MOUSE_ReportDesc參數含義不是很清楚。

6. 添加USB FS中斷服務函數

void OTG_FS_IRQHandler(void)
{
USBD_OTG_ISR_Handler(&USB_OTG_dev);
}

7. 完成上述部分內容后,便可實現STM32與PC機雙向通信,發送函數調用USBD_HID_SendReport,接收函數調用USBD_HID_DataOut(數據存儲在USBD_HID_DataOut一個字符數組中)。

附言:可以通過PortHelper調試助手完成USB調試,Beyond Compare可用於比較兩個文件中的內容的不通,很實用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM