⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb.c

📁 基于avr,D12的U盘设计,有完整的USB1.1的协议代码.
💻 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 + -