這個檔案主要和 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 原始碼...