www.pudn.com > lpc2146USB.rar > main.c


#include "lpc2136config.h" 
#include "type.h" 
#include "config.h" 
#include "USBConfig.h" 
#include "USBCI.h" 
#include "USBDriver.h" 
 
 
extern volatile uint32 usart0_timer_base;  					//	串口0接收间隔计时	新加 
extern volatile uint8 usart0_signal_flags;  				//	串口0的通讯标识 
 
#define usart0_receiving		usart0_signal_flags&0x01	//	检查正在接收数据	 
#define usart0_timer_over_value	200							//	串口0超时参数10us*200=2ms	 
 
extern volatile uint32 usart0_timer_update;  				//	串口0 
 
extern void config_system(void); 
extern void usart0_receive_process(void); 
extern void usart0_receive_timer_over_check(void); 
extern void usart0_send_process(uint8 *BufferPtr,uint32 Length); 
INT32U lastx,curx; 
INT32U lasty,cury; 
INT8U err; 
 
/* 
void Init_USBInterrupt(void) 
{ 
	VICVectCntl3=(0x20|22); 
	VICVectAddr3=(INT32U)Usb_Exception; 
	VICIntEnable|=1<<22; 
} 
*/ 
int main (void) 
{		 
	config_system();						//初始化函数:初始化中断、定时器等 
	usart0_timer_update=0;  				//	串口0 
	     
 
	     
	    err=USB_Initialize(); 
	    if(err!=0) 
	    	while(1); 
	    //Init_USBInterrupt(); 
	    IRQEnable(); 
	    lastx=2; 
	    lasty=3; 
	     
	while(1) 
    { 
	 
		//usart0_receive_timer_over_check();	//串口超时检查 
 
	    usart0_receive_process();				//串口接受发送数据处理 
	     
	    usbserve(); 
	    if(bEPPflags.bits.configuration) 
	    { 
	    	if(bEPPflags.bits.hid_enumed==1) 
	    	{ 
	    		DISABLE(); 
	    		curx=4; 
	    		cury=5; 
	    		GenEpBuf[0]=0x00; 
	    		GenEpBuf[1]=curx-lastx; 
	    		GenEpBuf[2]=cury-lasty; 
	    		GenEpBuf[3]=0x00; 
	    		USB_WriteEndpoint(3,4,GenEpBuf); 
	    		ENABLE(); 
	    		 
	    		lastx=curx; 
	    		lasty=cury; 
	       	} 
	    } 
    } 
}