STM32学习笔记之USB库文件分析
2017-12-02 11:45
405 查看
主要分析下其他一些文件:
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()从选中的端点中读出数据
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学习笔记之 USB驱动usb_endp.c文件和usb_istr.c文件分析
- STM32学习笔记之USB工程目录文件分析
- STM32学习笔记之USB数据接收和发送流程分析
- STM32 USB Host Library 学习笔记 (3) USBH_HandleControl()
- 基于STM32的USB枚举过程学习笔记(五)
- 基于STM32的USB枚举过程学习笔记(五)
- 基于STM32的USB枚举过程学习笔记(一)
- 关于stm32的USB学习笔记之usbcore.c
- 基于STM32的USB枚举过程学习笔记(一)
- STM32 usb_pwr.c文件分析
- 关于stm32的USB学习笔记之usbcore.c
- STM32 usb_prop.c文件分析与usb_core.h一些数据定义分析
- snmp学习笔记之二trap——分析notification.c文件
- PE文件学习系列笔记四-C++实现PE文件的分析
- 基于STM32的USB枚举过程学习笔记(四)
- STM32开发板学习笔记(一)-- 开篇及STM32按键中断分析
- 关于stm32的USB学习笔记之USB_HW.c
- 基于STM32的USB枚举过程学习笔记(三)
- STM32 USB Host Library 学习笔记 (2) USBH_InterruptSendData() USBH_ClrFeature()
- 基于STM32的USB枚举过程学习笔记(二)