STM32 USB學習整理3

2021-10-16 12:21:35 字數 2887 閱讀 6241

這個檔案主要和 vcp 驅動有直接關係!很多部分都是空的內容,其中包含了一些引數的設定,需要注意的是 波特率的大小與usb速度沒有關係,波特率的設定會影響串列埠速度;

//usb虛擬串列埠相關配置引數

line_coding linecoding =

; u8 usart_printf_buffer[

usb_usart_rec_len];

//usb_printf傳送緩衝區(200位元組)

//用類似串列埠1接收資料的方法,來處理usb虛擬串列埠接收到的資料.

u8 usb_usart_rx_buf

[usb_usart_rec_len];

//接收緩衝,最大usart_rec_len(200)個位元組.

//接收狀態

//bit15, 接收完成標誌

//bit14, 接收到0x0d

//bit13~0, 接收到的有效位元組數目

u16 usb_usart_rx_sta=0

;//接收狀態標記 ]

;//虛擬串列埠傳送緩衝區(發給電腦)

//虛擬串列埠配置函式(供usb核心呼叫)

cdc_if_prop_typedef vcp_fops =

;//初始化vcp

//返回值:usbd_ok

uint16_t vcp_init

(void

)//復位vcp

//返回值:usbd_ok

uint16_t vcp_deinit

(void

)//控制vcp的設定

//buf:命令資料緩衝區/引數儲存緩衝區

//len:資料長度

//返回值:usbd_ok

uint16_t vcp_ctrl

(uint32_t cmd, uint8_t* buf, uint32_t len)

return

usbd_ok

;}

vcp_datatx ();傳送乙個位元組給虛擬串列埠(發給電腦),實際上是把乙個8位資料傳送到 u8的快取區裡面了,這個快取區預設大小2048,從0開始寫,寫到2048個數之後,下一次重新寫入到第1個位置,如此往復。

//返回值:usbd_ok

uint16_t vcp_datatx

(uint8_t data)

return

usbd_ok

;}

vcp_datarx ();處理從usb虛擬串列埠接收到的資料(電腦發來的資料),與串列埠一的接收程式差不多。

//返回值:usbd_ok

uint16_t vcp_datarx

(uint8_t* buf, uint32_t len)

else

//還沒收到0x0d}}

}return

usbd_ok

;}

usb_printf();這個函式是最通用的傳送函式,作用相當於 printf();但是實際上還是內部呼叫vcp_datatx()。

//usb虛擬串列埠,printf 函式

//確保一次傳送資料不超usb_usart_rec_len位元組

void

usb_printf

(char* fmt,

...)

}

usb_otg_bsp_init();函式是底層io口的初始化函式,stm32f429使用的是microusb,此usb有5根線,vcc,d-,d+,nc,gnd,pa11和pa12硬體上連線到d+.d-上。本例程的兩個延時函式採用system資料夾的delay.c裡面的delay_us函式實現

,官方例程採用的是定時器2來實現的。此外,這裡面還有中斷優先順序設定和中斷使能。

//usb otg 底層io初始化

//pdev:usb otg核心結構體指標

void

usb_otg_bsp_init

(usb_otg_core_handle

*pdev)

//usb otg 中斷設定,開啟usb fs中斷

//pdev:usb otg核心結構體指標

void

usb_otg_bsp_enableinterrupt

(usb_otg_core_handle

*pdev)

//usb otg 中斷設定,開啟usb fs中斷0(本例程未用到)

//pdev:usb otg核心結構體指標

void

usb_otg_bsp_disableinterrupt

(void

)//usb otg 埠供電設定(本例程未用到)

//pdev:usb otg核心結構體指標

//state:0,斷電;1,上電

void

usb_otg_bsp_drivevbus

(usb_otg_core_handle

*pdev, uint8_t state)

//usb_otg 埠供電io配置(本例程未用到)

//pdev:usb otg核心結構體指標

void

usb_otg_bsp_confi**bus

(usb_otg_core_handle

*pdev)

//usb_otg us級延時函式

//usec:要延時的us數.

void

usb_otg_bsp_udelay

(const uint32_t usec)

//usb_otg ms級延時函式

//msec:要延時的ms數.

void

usb_otg_bsp_mdelay

(const uint32_t msec)

STM32 USB學習筆記

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

STM32 USB設計 硬體篇

stm32晶元內部整合了usb外設,大大減輕了usb電路的設計負擔,只需設計usb介面電路,就可以實現基於stm32晶元的電路板的usb通訊設計。本文將具體講述基於stm32f103rbt6晶元的usb設計 本文為硬體篇。首先,我們來認識一下stm32f103rbt6晶元。其中usb相關引腳為pa1...

STM32 USB 復合裝置實現

可實現用乙個usb介面實現多個usb裝置,如 hid msc hid cdc hid cdc msc等等 使用hal庫,以hid msc為例 具體步驟 目錄四 初始化使用 增加端點,同時修改fifo配置大小,stm32 usb fs fifo總大小為1.25kb,設定是使用的單位是32bit 原始碼...