您的位置:首页 > 其它

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