主要分析下其他一些文件:
usb_core.c、
usb_init.c、
usb_int.c、
usb_mem.c、
usb_reg.c
usb_sil.c
1、
usb_core.c -- 這個文件從名字上就可知,這是usb的核心文件。這個文件主要是USB在枚舉過程中的一些功能函數。比如控制傳輸的建立階段、數據階段、狀態階段的各種標準請求函數,各個階段的處理函數等。
uint8_t Setup0_Process(void); uint8_t Post0_Process(void); uint8_t Out0_Process(void); uint8_t In0_Process(void); RESULT Standard_SetEndPointFeature(void); RESULT Standard_SetDeviceFeature(void); uint8_t*Standard_GetConfiguration(uint16_t Length); RESULT Standard_SetConfiguration(void); uint8_t *Standard_GetInterface(uint16_t Length); RESULT Standard_SetInterface(void); uint8_t *Standard_GetDescriptorData(uint16_t Length, PONE_DESCRIPTOR pDesc); uint8_t *Standard_GetStatus(uint16_t Length); RESULT Standard_ClearFeature(void); void SetDeviceAddress(uint8_t); void NOP_Process(void);
2、
usb_init.c - 文件。這個文件很簡單,只有一個函數:void USB_Init(void),這個函數也很簡單,就是注冊usb設備的基本信息:
/******************************************************************************* * Function Name : USB_Init * Description : USB系統初始化 * Input : None. * Output : None. * Return : None. *******************************************************************************/ void USB_Init(void) { pInformation = &Device_Info; //注冊設備信息結構體 pInformation->ControlState = 2; //控制狀態為IN_DATA pProperty = &Device_Property; //注冊設備的常用一些函數結構體 pUser_Standard_Requests = &User_Standard_Requests; /* Initialize devices one by one */ pProperty->Init(); //注冊初始化函數 }
至于pProperty->Init()這樣的寫法,就是執行pProperty這個結構體的Init函數指針指向的函數,我們在usb_prop.c的DEVICE_PROP Device_Property中曾注冊過初始化函數CustomHID_init()。
3、
usb_int.c - 文件,這個文件定義了兩個中斷中斷服務程序:低優先級的端點正確傳輸中斷服務程序void CTR_LP(void)和高優先級端點正確傳輸的中斷服務程序void CTR_HP(void)。我們這個工程只使用了void CTR_LP(void)這個函數,CTR_LP在usb.istr.c文件的ISTR中斷事件的中斷服務程序USB_Istr中如果數據或請求正確傳輸正確就會被調用。
4、
usb_mem.c - 主要有兩個內存中的數據搬移函數:一個是從PMA緩沖區中拷貝數據到用戶指定的內存空間PMAToUserBufferCopy(),很明顯這個函數是在端點接收到數據后才會使用到的;另一個是從用戶空間拷貝數據到PMA緩沖區中,在端點要發送數據數才會被調用。
5、
usb_reg.c - 文件,是跟stm32的USB相關寄存器相關的代碼。看這段代碼就要閱讀stm32寄存器了。這個函數定義了設置和讀取各個寄存器的值或某位的值,具體的看代碼。
6、
usb_sil.c - 文件。端點具體的接發數據函數就在這里定義。這個文件也很簡單,只有三個函數:USB_SIL_Init()初始化USB設備IP和端點;USB_SIL_Write()往選中的端點中寫入數據;USB_SIL_Read()從選中的端點中讀出數據
上一篇:STM32官方庫文件分析及使用
下一篇:STM32F0在IAR新建工程
推薦閱讀
史海拾趣
福斯特(FIRST)公司在光伏封裝材料領域取得了顯著成就。自2003年公司前身杭州福斯特熱熔膠膜有限公司成立以來,團隊成功研發出EVA太陽能電池膠膜,正式進軍光伏行業。此后,公司不斷投入研發,擴大產能,光伏膠膜(EVA/POE膠膜)的設計產能已達10.51億平米。至2020年,公司光伏膠膜銷量達8.65億平米,占據全球市場份額約55%-60%,大幅領先其他競爭對手。這一成就不僅鞏固了福斯特在光伏膠膜市場的領導地位,還推動了整個行業的發展。
在環保意識日益增強的今天,Carroll & Meynell Transformers Ltd公司積極響應國家綠色發展的號召,致力于研發和生產綠色環保的變壓器產品。公司采用環保材料和節能技術,減少生產過程中的能源消耗和環境污染。同時,公司還加強了對廢舊產品的回收和處理工作,實現了資源的循環利用。這種綠色環保的發展理念不僅為公司贏得了良好的社會聲譽,也為公司的可持續發展奠定了堅實基礎。
隨著產品線的不斷豐富,Compostar Technology Co Ltd開始積極尋求市場拓展。公司通過與國內外知名電子品牌建立戰略合作關系,成功將產品打入國際市場。同時,公司還積極參加各類行業展會和技術交流會,與業界同行建立了廣泛的聯系。這些努力不僅為公司帶來了更多的商機,也進一步提升了公司的知名度和影響力。
隨著全球電子市場的不斷擴大,Apex Tool Group積極實施全球化戰略,拓展市場版圖。公司在全球范圍內建立了多個生產基地和分銷網絡,以便更好地服務全球客戶。同時,Apex Tool Group還積極與全球知名的電子企業開展合作,共同推動電動工具技術的創新和發展。這些舉措使得Apex Tool Group在全球電子行業中的地位日益穩固。
3、“平安城市”的概念成為新時期的監控行業的熱點。除了網絡化、無線有線結合、高倍數鏡頭的趨勢外,專門開發的高性能的攝像機和光學鏡頭引起了參觀者的興趣。高分辨率、超寬動態、超低照度。… 查看全部問答∨ |
|
飛思卡爾HCS08系列單片機, 需要在CodeWarrior的環境下用C語言編程, 單片機需要通過SPI送8位指令給一個IC, 然后接受16位數據. 3次操作后對所接受的數據進行計算, 把得到的結果送到RS232 IC. 已有部分源程序. 并要把初始化數據寫到EEPROM 或 FLASH. ...… 查看全部問答∨ |
|
已有文件abc.inf和abc.sys,如何用wise打包驅動? reference manual已閱,但是依然沒有找到方法。 基本的使用我已經明白,設計到inf如何使用的部分不是很清楚,目前已經完成的操作就是: 1.拷貝文件。 abc.sys -> $(WINNT)\\System32\\DRIVERS abc.inf -> $(WINNT)\\inf 2.寫注冊表 [HKEY ...… 查看全部問答∨ |
我在vs2005下開發CE程序,已經安裝dx81sdk,并在vs中配置了dxsdk的頭文件和庫文件,路徑均在最前面.在程序中也引用了dxguid.lib ddraw.lib,程序很簡單,只有幾句: LPDIRECTDRAW lpDD=NULL; if(FAILED(DirectDrawCreate(NULL , &lpDD , NULL))) re ...… 查看全部問答∨ |
筆者在上海參加FTF ,聽中國電力科學院首席專家胡學浩中國智能電網發展戰略部署和實踐的報告,智能電網就是SMART GRID ,中國建設堅強智能電網意義重大,具體實施是三步走。筆者對智能電網的智 ...… 查看全部問答∨ |