目录:
一、USB的“JoyStickMouse”例程结构分析
1、例程结构;
2、设备初始化所做的工作;
3、进入主循环;
4、中断处理过程大致理解;
二、STM32处理器的USB接口
1、接口模块的内部结构;
2、USB模块的寄存器认识;
1) 控制寄存器CNTR;
2)中断状态寄存器ISTR;
3)USB设备地址寄存器;
4)端点状态和配置寄存器,8个寄存器,支持8个双向和16个单向端点;
5)端点描述符表相关寄存器;
三、USB的“JoyStickMouse”工作过程详细分析(1)
1、初始化过程叙述
从main()函数开始
1)Set_System(void)的工作过程;
2)USB_Interrupt_Config(void)的工作过程;
3)Set_USBClock()的工作过程;
4)USB_Init()的工作过程;
2、进入设备检测状态
1)在PowerOn()中执行的情况
2)复位中断的处理
3)JoyStick_Reset()函数的处理
四、USB的“JoyStickMouse”工作过程详细分析(2)
1、枚举第一步:获取设备的描述符
从USB_init()开始
1)先要允许数据传输完成中断;
2)主动获取描述符;
3)Setup0_Process()函数的执行分析;
4)Data_Setup0()函数的执行分析;
5)DataStageIn()函数的执行分析;
6)执行流程返回到CTR_LP(void);
7)主机的IN令牌包;
8)追踪进入函数In0_Process();
9)进入状态过程;
2、枚举第二步:设置地址
1)重新从复位状态开始;
2)设置地址的建立阶段;
3)设置地址的状态阶段;
3、枚举第三步:从新地址获取设备描述符
1)上一阶段末尾的状态
2)建立阶段:主机发送令牌包、数据包、设备ACK;
3)数据阶段:主机发IN包、设备返回数据,主机ACK;
4)状态阶段:主机发OUT包、0字节包,设备ACK;
4、简单跟踪配置描述符、字符串描述符获取过程
5、主机设置配置
1)建立阶段:主机发SETUP包、发请求数据包(DATA0包)、用户ACK;
2)状态阶段:主机发IN令牌,设备返回0字节DATA1,主机ACK;
6、主机获取报告描述符
7、主机从中断端点读取鼠标操作数据