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

📄 untitled1

📁 采用ch375开发鼠标的例程
💻
字号:
void	USB_DeviceInterrupt( void )  // USB设备中断服务程序
{
	UINT8	s, l;
	static	UINT8	SetupReq, SetupLen;
	static	PUINT8	pDescr;
	s = Read374Byte( REG_INTER_FLAG );  // 获取中断状态
	if ( s & BIT_IF_BUS_RESET ) {  // USB总线复位
		Write374Byte( REG_USB_ADDR, 0x00 );  // 清USB设备地址
		Write374Byte( REG_USB_ENDP0, M_SET_EP0_TRAN_NAK( 0 ) );
		Write374Byte( REG_USB_ENDP1, M_SET_EP1_TRAN_NAK( 0 ) );
		Write374Byte( REG_USB_ENDP2, M_SET_EP2_TRAN_NAK( 0 ) );
		Write374Byte( REG_INTER_FLAG, BIT_IF_USB_PAUSE | BIT_IF_BUS_RESET );  // 清中断标志
	}
	else if ( s & BIT_IF_TRANSFER ) {  // USB传输完成
		s = Read374Byte( REG_USB_STATUS );
		switch( s & BIT_STAT_PID_ENDP ) {  // USB设备中断状态
			case USB_INT_EP2_OUT: {  // 批量端点下传成功 
			case USB_INT_EP2_IN: {  // 批量端点上传成功,未处理
			case USB_INT_EP1_IN: {  // 中断端点上传成功,未处理
			case USB_INT_EP0_SETUP: {  // 控制传输
				
					  // 标准请求
				SetupReq = SetupReqBuf.bReq;  // 请求码
				switch( SetupReq ) {
			        case DEF_USB_GET_DESCR:
			        case DEF_USB_SET_ADDRESS:
			      case DEF_USB_GET_CONFIG:
				case DEF_USB_SET_CONFIG:
				case DEF_USB_CLR_FEATURE:
				case DEF_USB_GET_INTERF:
				case DEF_USB_GET_STATUS:
				default:
				
			}
			case USB_INT_EP0_IN: {
			
			}
			case USB_INT_EP0_OUT: {
				switch( SetupReq ) {
//					case download:
//						get_data;
//						break;
					case DEF_USB_GET_DESCR:
					default:
						Write374Byte( REG_USB_ENDP0, M_SET_EP0_TRAN_NAK( 0 ) );  // 结束
						break;
				}
				break;
			}
			default: {
				break;
			}
		}
		Write374Byte( REG_INTER_FLAG, BIT_IF_USB_PAUSE | BIT_IF_TRANSFER );  // 清中断标志
	}
	else if ( s & BIT_IF_USB_SUSPEND ) {  // USB总线挂起
		Write374Byte( REG_INTER_FLAG, BIT_IF_USB_PAUSE | BIT_IF_USB_SUSPEND );  // 清中断标志
		Write374Byte( REG_SYS_CTRL, Read374Byte( REG_SYS_CTRL ) | BIT_CTRL_OSCIL_OFF );  // 时钟振荡器停止振荡,进入睡眠状态
	}
	else if ( s & BIT_IF_WAKE_UP ) {  // 芯片唤醒完成
		Write374Byte( REG_INTER_FLAG, BIT_IF_USB_PAUSE | BIT_IF_WAKE_UP );  // 清中断标志
	}
	else {  // 意外的中断,不可能发生的情况,除了硬件损坏
		Write374Byte( REG_INTER_FLAG, BIT_IF_USB_PAUSE | BIT_IF_INTER_FLAG );  // 清中断标志
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -