📄 usb_device.c
字号:
#include "def.h"
#include "2410addr.h"
#include "2410lib.h"
#include "uart.h"
#include "interrupt.h"
#include "USB_device_lib.h"
#include "USB_device_config.h"
#include "240_320TFT_LCD.h"
extern int isUsbdSetConfiguration;
static void __irq IsrUsbd(void)
{
U8 usbdIntpnd, epIntpnd;
U8 saveIndexReg = rINDEX_REG;
ClearPending(BIT_USBD);
usbdIntpnd = rUSB_INT_REG;
epIntpnd = rEP_INT_REG;
if(usbdIntpnd&SUSPEND_INT)
{ Uart_Puts("\nUSB SUSPEND_INT !\n");
rUSB_INT_REG=SUSPEND_INT;
}
else if(usbdIntpnd&RESUME_INT)
{ Uart_Puts("\nUSB RESUME_INT !\n");
rUSB_INT_REG=RESUME_INT;
}
else if(usbdIntpnd&RESET_INT)
{ Uart_Puts("\nUSB RESET_INT !\n");
ReconfigUsbd();
rUSB_INT_REG=RESET_INT; //RESET_INT should be cleared after ResetUsbd().
}
else if(epIntpnd&EP0_INT)
{ // Uart_Puts("\nUSB EP0_INT !\n");
Ep0Handler();
rEP_INT_REG=EP0_INT;
}
else if(epIntpnd&EP1_INT)
{ Uart_Puts("\nUSB EP1_INT !\n");
rEP_INT_REG=EP1_INT;
//Ep1Handler();
}
else if(epIntpnd&EP2_INT)
{ Uart_Puts("\nUSB EP2_INT !\n");
rEP_INT_REG=EP2_INT;
//Ep2Handler();
}
else if(epIntpnd&EP3_INT)
{ Uart_Puts("\nUSB EP3_INT !\n");
rEP_INT_REG=EP3_INT;
//Ep3Handler();
}
else if(epIntpnd&EP4_INT)
{ Uart_Puts("\nUSB EP4_INT !\n");
rEP_INT_REG=EP4_INT;
//Ep4Handler();
}
rINDEX_REG=saveIndexReg;
}
void Usb_Device_Main(void)
{
//U8 fun;
rGPHCON = rGPHCON&~(0xf<<18)|(0x5<<18);
//To enhance the USB signal quality.
//CLKOUT 0,1=OUTPUT to reduce the power consumption.
rGPGCON &= 0xfff3ffff; //GPG9 input
UsbdInit(1);
Delay(1000);
rGPGCON |= 0x00040000;
rGPGDAT |= 0x0200; //GPG9 ouput 1
pISR_USBD =(unsigned)IsrUsbd;
ClearPending(BIT_USBD);
EnableIrq(BIT_USBD);
}
void Usb_Device_free(void){
DisableIrq(BIT_USBD);
rGPGCON &= 0xfff3ffff; //GPG9 input
}
void Mouse_Data_Sent(U32 address,U32 size){
static U8 i=1;
U8 saveIndexReg = rINDEX_REG;
rINDEX_REG = 1;
/* 试验程序 无用
if(i==1){
Uart_Puts("left key\n");
MOUSE_STATE.KEY=2;
MOUSE_STATE.X=0;
MOUSE_STATE.Y=0;
MOUSE_STATE.WHEEL=10;
}
else if(i==2){
Uart_Puts("right \n");
MOUSE_STATE.KEY=0;
MOUSE_STATE.X=30;
MOUSE_STATE.Y=0;
MOUSE_STATE.WHEEL=3;
}
else if(i==3){
Uart_Puts("down \n");
MOUSE_STATE.KEY=0;
MOUSE_STATE.X=0;
MOUSE_STATE.Y=30;
MOUSE_STATE.WHEEL=3;
}
else if(i==4){
Uart_Puts("left \n");
MOUSE_STATE.KEY=0;
MOUSE_STATE.X=-30;
MOUSE_STATE.Y=0;
MOUSE_STATE.WHEEL=3;
}
else if(i==5){
Uart_Puts("up\n");
MOUSE_STATE.KEY=0;
MOUSE_STATE.X=0;
MOUSE_STATE.Y=-30;
MOUSE_STATE.WHEEL=3;
i=1;
}
*/
//WrPktEp1((U8 *)&MOUSE_STATE,sizeof(MOUSE_STATE));
WrPktEp1((U8 *)address,size);
rIN_CSR1_REG= rIN_CSR1_REG|1 ;
rINDEX_REG = saveIndexReg;
i++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -