STM32学习笔记之USB工程目录文件分析
2017-12-02 11:43
453 查看
接下去要分别分析下这几个文件:
hw_config.c:
这个文件主要是配置一些跟板载及系统相关的代码,比如说USB系统时钟配置,上拉电阻引脚及LED灯配置,还有USB的中断灯。主要的函数如下:
void Set_System(void); /*设置系统时钟,USB 及LED引脚配置*/void Set_USBClock(void); /*设置USB的时钟频率*/void GPIO_AINConfig(void); /*设置GPIO模拟输入(这里是空函数)*/void Enter_LowPowerMode(void); /*进入低功耗模式(这里是空函数)*/void Leave_LowPowerMode(void); /*离开低功耗模式(这里是空函数)*/void USB_Interrupts_Config(void); /*设置USB中断配置*/void USB_Cable_Config (FunctionalState NewState);/*USB连接断开选择,其实是控制上拉电阻引脚*//*void Joystick_Send(uint8_t Keys);*/ /*操作杆发送(没有用)*//*uint8_t JoyState(void); */ /*操作杆状态(没有用到)*/void Get_SerialNum(void); /*创建字符串描述符的序列号*/
usb_des.c:
这个文件主要是定义了USB的一些描述符:分别是:设备描述符、配置描述符集合(包括接口描述符,HID描述符,端点描述符)、HID报告描述符、语言ID描述符、厂家的字符串描述符、产品的字符串描述符、产品序列号的字符串描述符。
CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_DESC];CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC];CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC];CustomHID_StringLangID[CUSTOMHID_SIZ_STRING_LANGID];CustomHID_StringVendor[CUSTOMHID_SIZ_STRING_VENDOR];CustomHID_StringProduct[CUSTOMHID_SIZ_STRING_PRODUCT];CustomHID_StringSerial[CUSTOMHID_SIZ_STRING_SERIAL];
usb_endp.c:
这个文件主要是定义了几个端点输入输出的回调函数,这里指定以了端点1输入输出回调及端点2输入回调函数,如下:
void EP1_IN_Callback(void); /*端点1输入回调函数*/void EP1_OUT_Callback(void); /*端点1输出回调函数*/void EP2_IN_Callback(void); /*端点2输入回调函数*/
usb_Istr.c:
这个文件主要是每个端点对应的回调函数的注册;USB中断服务程序的处理,通过读取STM32 ISTR中断状态寄存器来判断是什么中断,并做相应的专断处理。
void (*pEpInt_IN[7])(void) = /*端点输入回调函数注册*/ { EP1_IN_Callback, EP2_IN_Callback, EP3_IN_Callback, EP4_IN_Callback, EP5_IN_Callback, EP6_IN_Callback, EP7_IN_Callback, }; void (*pEpInt_OUT[7])(void) = /*端点输出回调函数的注册*/ { EP1_OUT_Callback, EP2_OUT_Callback, EP3_OUT_Callback, EP4_OUT_Callback, EP5_OUT_Callback, EP6_OUT_Callback, EP7_OUT_Callback, }; void USB_Istr(void);/*ISTR事件中断服务程序*/
usb_propc:
这个文件主要是把之前定义的一些列描述符注册到USB库中,并且注册一些USB常用的处理函数如获取设备描述符等和一些标准请求函数,具体如下:
DEVICE_PROP Device_Property = /*注册一些CustomHID函数*/{ CustomHID_init, /*CustomHID的初始化函数*/ CustomHID_Reset, /*CustomHID的复位函数*/ CustomHID_Status_In, /*CustomHID状态输入函数*/ CustomHID_Status_Out, /*CustomHID状态输出函数*/ CustomHID_Data_Setup, /*CustomHID的处理带数据的特殊类请求函数*/ CustomHID_NoData_Setup, /*CustomHID的处理不带数据特殊类请求函数*/ CustomHID_Get_Interface_Setting, /*CustomHID获取接口及备用接口设置是否可用 */ CustomHID_GetDeviceDescriptor, /*CustomHID获取设备描述符*/ CustomHID_GetConfigDescriptor, /*CustomHID获取配置描述符*/ CustomHID_GetStringDescriptor, /*CustomHID获取字符串描述符*/ 0, /*当前库未使用*/ 0x40 /*MAX PACKET SIZE*/ /*最大的包长度为64字节*/};/*注册USB标准请求的实现函数*/USER_STANDARD_REQUESTS User_Standard_Requests ={ CustomHID_GetConfiguration, /*获取配置请求*/ CustomHID_SetConfiguration, /*设置配置请求*/ CustomHID_GetInterface, /*获取接口请求*/ CustomHID_SetInterface, /*设置接口请求*/ CustomHID_GetStatus, /*获取状态请求*/ CustomHID_ClearFeature, /*清除特性请求*/ CustomHID_SetEndPointFeature, /*设置端点特性请求*/ CustomHID_SetDeviceFeature, /*设置设备特性请求*/ CustomHID_SetDeviceAddress /*设置设备地址请求*/};/*注册设备描述符信息*/ONE_DESCRIPTOR Device_Descriptor;/*注册报告描述符信息*/ONE_DESCRIPTOR CustomHID_Report_Descriptor;/*注册HID描述符信息*/ONE_DESCRIPTOR CustomHID_Descriptor;/*注册字符串描述符,包括语言ID、厂商、产品、序列号描述符*/ONE_DESCRIPTOR String_Descriptor[4];
usb_pwr.c:
这个文件主要一些USB与功耗方面的函数,如上电、掉电、挂起等。
void Suspend(void); /*挂起*/void Resume_Init(void); /*恢复初始化*/void Resume(RESUME_STATE eResumeSetVal);/*恢复到某个状态状态*/RESULT PowerOn(void); /*上电*/RESULT PowerOff(void); /*掉电*/
hw_config.c:
这个文件主要是配置一些跟板载及系统相关的代码,比如说USB系统时钟配置,上拉电阻引脚及LED灯配置,还有USB的中断灯。主要的函数如下:
void Set_System(void); /*设置系统时钟,USB 及LED引脚配置*/void Set_USBClock(void); /*设置USB的时钟频率*/void GPIO_AINConfig(void); /*设置GPIO模拟输入(这里是空函数)*/void Enter_LowPowerMode(void); /*进入低功耗模式(这里是空函数)*/void Leave_LowPowerMode(void); /*离开低功耗模式(这里是空函数)*/void USB_Interrupts_Config(void); /*设置USB中断配置*/void USB_Cable_Config (FunctionalState NewState);/*USB连接断开选择,其实是控制上拉电阻引脚*//*void Joystick_Send(uint8_t Keys);*/ /*操作杆发送(没有用)*//*uint8_t JoyState(void); */ /*操作杆状态(没有用到)*/void Get_SerialNum(void); /*创建字符串描述符的序列号*/
usb_des.c:
这个文件主要是定义了USB的一些描述符:分别是:设备描述符、配置描述符集合(包括接口描述符,HID描述符,端点描述符)、HID报告描述符、语言ID描述符、厂家的字符串描述符、产品的字符串描述符、产品序列号的字符串描述符。
CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_DESC];CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC];CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC];CustomHID_StringLangID[CUSTOMHID_SIZ_STRING_LANGID];CustomHID_StringVendor[CUSTOMHID_SIZ_STRING_VENDOR];CustomHID_StringProduct[CUSTOMHID_SIZ_STRING_PRODUCT];CustomHID_StringSerial[CUSTOMHID_SIZ_STRING_SERIAL];
usb_endp.c:
这个文件主要是定义了几个端点输入输出的回调函数,这里指定以了端点1输入输出回调及端点2输入回调函数,如下:
void EP1_IN_Callback(void); /*端点1输入回调函数*/void EP1_OUT_Callback(void); /*端点1输出回调函数*/void EP2_IN_Callback(void); /*端点2输入回调函数*/
usb_Istr.c:
这个文件主要是每个端点对应的回调函数的注册;USB中断服务程序的处理,通过读取STM32 ISTR中断状态寄存器来判断是什么中断,并做相应的专断处理。
void (*pEpInt_IN[7])(void) = /*端点输入回调函数注册*/ { EP1_IN_Callback, EP2_IN_Callback, EP3_IN_Callback, EP4_IN_Callback, EP5_IN_Callback, EP6_IN_Callback, EP7_IN_Callback, }; void (*pEpInt_OUT[7])(void) = /*端点输出回调函数的注册*/ { EP1_OUT_Callback, EP2_OUT_Callback, EP3_OUT_Callback, EP4_OUT_Callback, EP5_OUT_Callback, EP6_OUT_Callback, EP7_OUT_Callback, }; void USB_Istr(void);/*ISTR事件中断服务程序*/
usb_propc:
这个文件主要是把之前定义的一些列描述符注册到USB库中,并且注册一些USB常用的处理函数如获取设备描述符等和一些标准请求函数,具体如下:
DEVICE_PROP Device_Property = /*注册一些CustomHID函数*/{ CustomHID_init, /*CustomHID的初始化函数*/ CustomHID_Reset, /*CustomHID的复位函数*/ CustomHID_Status_In, /*CustomHID状态输入函数*/ CustomHID_Status_Out, /*CustomHID状态输出函数*/ CustomHID_Data_Setup, /*CustomHID的处理带数据的特殊类请求函数*/ CustomHID_NoData_Setup, /*CustomHID的处理不带数据特殊类请求函数*/ CustomHID_Get_Interface_Setting, /*CustomHID获取接口及备用接口设置是否可用 */ CustomHID_GetDeviceDescriptor, /*CustomHID获取设备描述符*/ CustomHID_GetConfigDescriptor, /*CustomHID获取配置描述符*/ CustomHID_GetStringDescriptor, /*CustomHID获取字符串描述符*/ 0, /*当前库未使用*/ 0x40 /*MAX PACKET SIZE*/ /*最大的包长度为64字节*/};/*注册USB标准请求的实现函数*/USER_STANDARD_REQUESTS User_Standard_Requests ={ CustomHID_GetConfiguration, /*获取配置请求*/ CustomHID_SetConfiguration, /*设置配置请求*/ CustomHID_GetInterface, /*获取接口请求*/ CustomHID_SetInterface, /*设置接口请求*/ CustomHID_GetStatus, /*获取状态请求*/ CustomHID_ClearFeature, /*清除特性请求*/ CustomHID_SetEndPointFeature, /*设置端点特性请求*/ CustomHID_SetDeviceFeature, /*设置设备特性请求*/ CustomHID_SetDeviceAddress /*设置设备地址请求*/};/*注册设备描述符信息*/ONE_DESCRIPTOR Device_Descriptor;/*注册报告描述符信息*/ONE_DESCRIPTOR CustomHID_Report_Descriptor;/*注册HID描述符信息*/ONE_DESCRIPTOR CustomHID_Descriptor;/*注册字符串描述符,包括语言ID、厂商、产品、序列号描述符*/ONE_DESCRIPTOR String_Descriptor[4];
usb_pwr.c:
这个文件主要一些USB与功耗方面的函数,如上电、掉电、挂起等。
void Suspend(void); /*挂起*/void Resume_Init(void); /*恢复初始化*/void Resume(RESUME_STATE eResumeSetVal);/*恢复到某个状态状态*/RESULT PowerOn(void); /*上电*/RESULT PowerOff(void); /*掉电*/
相关文章推荐
- STM32学习笔记之 USB驱动usb_endp.c文件和usb_istr.c文件分析
- STM32学习笔记之USB库文件分析
- STM32学习笔记之Keil工程Lib库文件的制作和运用
- STM32学习笔记之USB数据接收和发送流程分析
- STM32 USB工程的文件分析
- STM32 USB工程的文件分析
- cocos2d-x 3.x游戏开发学习笔记(2)--cocos2d-x 3.x文件目录结构分析
- Zigbee系列 学习笔记二(工程文件分析)
- Python学习笔记(三):文件和目录工具
- linux学习笔记-读《Linux编程技术详解》(4-2)-文件和目录
- [libjingle学习笔记]libjingle生成vs工程文件
- [Linux学习笔记]目录、路径、文件、目录常用命令
- C#学习笔记21——文件、目录、注册表操作
- 关于stm32的USB学习笔记之USB_HW.c
- [libjingle学习笔记]libjingle生成vs工程文件
- 1 学习笔记——start.S文件分析
- 【学习笔记】Linux平台的文件,目录及操作
- PHP学习笔记--第六章 .文件和目录操作
- matlab学习笔记--matlab目录和文件操作
- VC++各工程项目含义及文件类型——学习笔记