Board logo

标题: STM32的USB例程JoyStickMouse代码分析(12) [打印本页]

作者: yuyang911220    时间: 2014-9-22 12:50     标题: STM32的USB例程JoyStickMouse代码分析(12)

3JoyStick_Reset()函数的处理。

这里将一句句来分析:

void Joystick_Reset(void)

{


pInformation->Current_Configuration = 0;
//
当前配置为0


pInformation->Current_Interface = 0;/
当前接口为0


pInformation->Current_Feature = Joystick_ConfigDescriptor[7];



//
需要总线供电


SetBTABLE(BTABLE_ADDRESS);
//设置包缓冲区地址。


SetEPType(ENDP0, EP_CONTROL);
//
端点0为控制端点


SetEPTxStatus(ENDP0, EP_TX_STALL);
//
端点状态为发送无效,也就是主机IN令牌包来的时候,回送一个STALL



SetEPRxAddr(ENDP0, ENDP0_RXADDR); //
设置端点0描述符表,包括接收缓冲区地址、最大允许接收的字节数、发送缓冲区地址三个量。


SetEPTxAddr(ENDP0, ENDP0_TXADDR); //
这是发送缓冲区地址


Clear_Status_Out(ENDP0);
//
清除EP_KINDSTATUS_OUT位,如果改位被设置,在控制模式下只对0字节数据包相应。其它的都返回STALL。主要用于控制传输的状态过程。


SetEPRxCount(ENDP0, Device_Property.MaxPacketSize); //
接收缓冲区支持64个字节。


SetEPRxValid(ENDP0);
//
使能端点0的接收,因为很快就要接收SETUP令牌包后面跟着的数据包了。


SetEPType(ENDP1, EP_INTERRUPT);
/
/端点1为中断端点


SetEPTxAddr(ENDP1, ENDP1_TXADDR); //
设置发送缓冲区地址


SetEPTxCount(ENDP1, 4);
//
每次发送四个字节


SetEPRxStatus(ENDP1, EP_RX_DIS);
//
接收禁止,只发送Mouse信息,而不从主机接收。


SetEPTxStatus(ENDP1, EP_TX_NAK); /
/现在发送端点还不允许发送数据。


bDeviceState = ATTACHED;
//
连接状态改为已经连接,默认地址状态。


SetDeviceAddress(0); //
地址默认为0.

}

复位中断执行完成后,开发板的USB接口能够以默认地址对主机来的数据包进行响应了。这个阶段的分析到此结束,下一个阶段就是正式分析代码实现的枚举过程了。






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0