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

📄 usb_driver.c

📁 我改了一部分别人的USB,原来的不方便看逻辑
💻 C
字号:
#include"usb_driver.h"
#include"port.h"
#include"d12_value.h"
#include"d12_command.h"
#include"epsetup.h"
#include"epmain.h"
#include"uar.h"
USB_FLAGS usb_flags;
INT_REG Interrupt_Register;
CONTROL_DATA_BUFF Control_Data;
LAST_STATUS Last_Status; 



void init_usb(void) 
{disp(0x00);
 disconnect_usb(); 	   //断开USB连接
 del(1000);         	 //延迟
 set_addr_enable(0);
 set_endpoint_enable();		   //初始化USB芯片
 usb_flags.value=0;
 connect_usb();		   //连接USB
}
void usb_int(void) 
{
read_interrupt_register(); 
if(Interrupt_Register.value!=0)
 { 
 		if(Interrupt_Register.Status.bus_reset)
     	   usb_flags.Status.bus_reset = 1;	                	//USB总线复位标志
else		if(Interrupt_Register.Status.DMA_EOT )
 			dma_eot();								//;DMA传输技术处理
else		if(Interrupt_Register.Status.suspend_change)
	    	usb_flags.Status.suspend = 1;					//挂起改变标志置1
else		if(Interrupt_Register.Status.control_out_port)// & D12_INT_ENDP0OUT)
 			endp0_out();							//控制端点接收数据处理
else		if(Interrupt_Register.Status.control_in_port)// & D12_INT_ENDP0IN)
 			endp0_in();							//控制端点发送数据处理
else		if(Interrupt_Register.Status.port_in_1)
 			ep1_in();							//端点 1发送数据处理
else		if(Interrupt_Register.Status.port_out_1)
 			ep1_out();							//端点 1接收数据处理
else		if(Interrupt_Register.Status.main_in_port)
 			ep2_in();							//端点 2发送数据处理
else		if(Interrupt_Register.Status.main_out_port)
 			ep2_out();							//端点 2接收数据处理
       }
}
void usb_serve(void) 
{
	if (usb_flags.Status.setup_packet&&(!usb_flags.Status.not_end)) 
	{		//Setup包处理 
    	usb_flags.Status.setup_packet = 0;
		call_c9();	             			//调用请求处理子程序
 
	}//if setup_packet

if (usb_flags.Status.bus_reset) {			//USB总线复位处理
 
        usb_flags.value=0;
		usb_bus_reset();
	} // if bus reset

	if (usb_flags.Status.suspend) {			//D12挂起改变处理
		usb_flags.Status.suspend= 0;
		usb_bus_suspend();
	} // if suspend change
}

⌨️ 快捷键说明

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