📄 usb.c
字号:
#include "usb.h"
CONTROL_DATA_BUFF controldata;
USBFLAG flag;
void ClearFeature()
{
uchar temp;
uchar endp;
temp=controldata.DeviceRequest.bmRequestType&0x1f;
if(temp==0)//设备
{
if(controldata.DeviceRequest.wValue==DEVICE_REMOTE_WAKEUP)
{
flag.bits.remote_wakeup=0;
}
//向主机返回0个字节数据
}
else
if(temp==2)//endpoint
{
if(controldata.DeviceRequest.wValue==ENDPOINT_HALT)
{
endp=controldata.DeviceRequest.wIndex&0x3;
//停止挂起 端点的输入输出
//向主机返回0字节的数据
}
}
else
//停止挂起状态
}
void GetConfiguration()//要求返回一个非零值
{
uchar config;
config=1;
//向主机返回一个值
}
void GetDescriptor()
{
uchar temp;
uchar dis;
//temp=controldata.DeviceRequest.bmRequestType;
dis=controldata.DeviceRequest.wValue;
/*if(temp==0x80)
{
if()
}*/
if(dis==DEVICE)
{
//发送设备描述符
}
else
if(dis==CONFIGURATION)
{
//返回配置描述符
}
else
if(dis==STRING)
{
//返回字符串描述符
}
else
{
//端点停止挂起状态
}
}
void GetInterface()
{
uchar inte;
//向主机返回一个值
}
void GetStatus()
{
uchar temp;
uchar endp;
temp=controldata.DeviceRequest.bmRequestType&0x3;
switch(temp)
{
case 0: //返回设备状态
break;
case 1: //返回接口状态
break;
case 2: //返回端点状态
break;
default :
//激活0号端点
}
}
void SetAddress()
{
uchar addr;
addr=controldata.DeviceRequest.wValue;
//设置设备地址
//返回0字节数据
}
void SetConfiguration()
{
uchar config;
config=controldata.DeviceRequest.wValue;
if(config==0)
{
//返回0字节数据
}
else
if(config==1)
{
//返回0字节数据
//进入配置模式,设置配置
}
//读取配置值
//返回0字节数据
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -