- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
usb协议分析软件.doc
usb协议分析软件
篇一:官方USB程序和例程
一、USB的“JoyStickMouse”例程结构分析
1、例程的结构
(1)底层结构
包括5个文件:usb_core.c(USB总线数据处理的核心文件),usb_init.c,usb_int.c(用于端点数据输入输入中断处理),usb_mem.c(用于缓冲区操作),usb_regs.c(用于寄存器操作)。它们都包含了头文件“usb_lib.h”。在这个头文件中,又有以下定义:
#include usb_type.h
#include usb_regs.h
#include usb_def.h
#include usb_core.h
#include usb_init.h
#include usb_mem.h
#include usb_int.h
usb_lib.h中又包含了七个头文件,其中usb_type.h中主要是用typedef为stm32支持的数据类型取一些新的名称。usb_def.h中主要是定义一些相关的数据类型。
还有一个未包含在usb_lib.h中的头文件,usb_conf.h用于USB设备的配置。
(2)上层结构
上层结构总共5个文件:hw_config.c(用于USB硬件配置)、usb_pwr.c(用于USB连接、断开操作)、usb_istr.c(直接处理USB中断)、usb_prop.c(用于上层协议处理,比如HID协议,大容量存储设备协议)、usb_desc.c(具体设备的相关描述符定义和处理)。
可见,ST的USB操作库结构十分清晰明了,我先不准备直接阅读源代码。而是先利用MDK的软件模拟器仿真执行,先了解一下设备初始化的流程。
2、设备初始化所做的工作
(1)Set_System(void)
这个是main函数中首先调用的函数,它位于hw_config.c文件中。它的主要功能是初始化时钟系统、使能相关的外围设备电源。
配置了JoyStickMouse所用到的5个按键,并且配置了两个EXTI中断,一个是用于把USB从挂起模式唤醒,还有一个用途未知。
(2)USB_Interrupts_Config();
这个是main函数中调用的第二个函数,它也位于hw_config.c文件中。主要功能是配置USB所用到的中断。
跟踪到代码中,主要设配置了USB低优先级中断和唤醒中断,又有一个EXTI中断功能未知。
(3)Set_USBClock()
这个是main函数中调用的第三个函数,它也位于hw_config.c文件中。它的功能是配置和使能USB时钟。
(4)USB_Init(void)
这个是main函数中调用的第四个函数,它也位于usb_init.c文件中。它初始化了三个全局指针,指向DEVICE_INFO、USER_STANDARD_REQUESTS和DEVICE_PROP结构体。
后面两个是函数指针结构体,里面都是USB请求实现、功能实现的函数指针。 void USB_Init(void)
{
pInformation = amp;Device_Info;
pInformation-ControlState = 2;
pProperty = amp;Device_Property;
pUser_Standard_Requests = amp;User_Standard_Requests;
/* Initialize devices one by one */
pProperty-Init();
}
这三个结构体都是与具体设备枚举和功能实现相关的,定义在usb_prop.c和usb_desc.c文件中。
DEVICE_PROP Device_Property =
{
Joystick_init,
Joystick_Reset,
Joystick_Status_In,
Joystick_Status_Out,
Joystick_Data_Setup,
Joystick_NoData_Setup,
Joystick_Get_Interface_Setting,
Joystick_GetDeviceDescriptor,
Joystick_GetConfigDescriptor,
Joystick_GetStringDescriptor,
0,
0x40 /*MAX PACKET SIZE*/
};
USER_STANDARD_REQUESTS User_Standard_Requests =
{
Joystick_GetConfiguration,
Joystick_SetConfiguration,
Joys
您可能关注的文档
- 简述静默营销.doc
- 【oo案例】步步高:本土化 差异化=全渠道.doc
- 基于rs-数据采集系统下位机设计.docx
- GS-H新油色谱在线监测系统系统介绍.doc
- 红木家具展会策划方案.doc
- 巩膜炎的中医特色治疗.docx
- 从文献整理简析郑樵对文化传播的贡献_论文.docx
- 2017年高考真题分学科汇编(文理)——数列(含答解析).doc
- 草原经济发展的新途径论文.doc
- 施工进度滞后原因分析 项目管理软件在施工进度管理中的应用状况分析.doc
- 603618_2023_#CSR_杭电股份_杭电股份:2023年度社会责任报告_2024-04-17.pdf
- 600229_2023_#CSR_城市传媒_青岛城市传媒股份有限公司2023年度社会责任报告_2024-04-27.pdf
- 600983_2023_#CSR_惠而浦_惠而浦2023年度社会责任报告_2024-04-30.pdf
- 600611_2023_#CSR_大众交通_大众交通(集团)股份有限公司2023年度社会责任报告_2024-03-29.pdf
- 600838_2023_#CSR_上海九百_上海九百2023年度社会责任报告_2024-03-30.pdf
- 688068_2023_#CSR_热景生物_2023年度社会责任报告_2024-04-30.pdf
- 688002_2023_#CSR_睿创微纳_2023年度社会责任报告_2024-04-23.pdf
- 688266_2023_#CSR_泽璟制药_泽璟制药2023年度社会责任报告_2024-04-20.pdf
- 600960_2023_#CSR_渤海汽车_渤海汽车2023年社会责任报告_2024-04-26.pdf
- 600933_2023_#CSR_爱柯迪_2023年度社会责任报告_2024-04-27.pdf
文档评论(0)