院系:计算机科学学院专业:自动化__年级:2008级课程名称:嵌入式技术与应用指导教师:张志俊组号:组员:覃静2011年11月1日实验题目:USB接口实验一、设计要求利用EduKit-M3实验平台的五个按键实现标准的USB接口游戏杆功能。二、硬件电路实现在EduKit-M3实验平台上已有一个简易的游戏杆,其SELECTION、DOWN、RIGHT、LEFT和UP键分别与处理器的PD12、PD14、PE1、PE0、PD8引脚相连;1连接器。三、软件程序设计该程序的结构比较复杂,除了库文件以及USB函数库文件之外,还包含8个源文件,。下面分别为其他7个函数:1、——该函数中主要包含2个函数,其中main函数初始化系统以及USB接口,之后不断查询游戏杆是否有动作,如果有动作则根据动作向USB缓冲器发出相关数据;Delay函数用于延迟。intmain(void){#ifdefDEBUGdebug();#endifSet_System();USB_Interrupts_Config();Set_USBClock();USB_Init();while(1){ if(JoyState()!=0){Joystick_Send(JoyState());}}}voidDelay(vu32nCount){for(;nCount!=0;nCount--);}#ifdefDEBUG2、——该文件中没有任何函数,只是包含一些定义USB设备的描述符常数,由于游戏杆是标准USB设备,因此比较容易得到相关的参数。若要开发非标准的USB设备,则还需要开发PC上运行的非标准设备的驱动程序。3、——该文件中包含USB中断服务程序,由于USB中断有很多情况,,由USB_Istr函数再做轮询处理。4、——该文件中只有一个函数,即USB中断的USB_Istr函数,该函数对各类引起USB中断的事件作轮询处理。voidUSB_Istr(void){wIstr=_GetISTR();#if(IMR_MSK&ISTR_RESET)if(wIstr&ISTR_RESET&wInterrupt_Mask){_SetISTR((u16)CLR_RESET);();#ifdefRESET_CALLBACKRESET_Callback();#endif}#endif#if(IMR_MSK&ISTR_DOVR)if(wIstr&ISTR_DOVR&wInterrupt_Mask){_SetISTR((u16)CLR_DOVR);#ifdefDOVR_CALLBACKDOVR_Callback();#endif}#endif#if(IMR_MSK&ISTR_ERR)if(wIstr&ISTR_ERR&wInterrupt_Mask){_SetISTR((u16)CLR_ERR);#ifdefERR_CALLBACKERR_Callback();#endif}#endif#if(IMR_MSK&ISTR_WKUP)if(wIstr&ISTR_WKUP&wInterrupt_Mask){_SetISTR((u16)CLR_WKUP);Resume(RESUME_EXTERNAL);#ifdefWKUP_CALLBACKWKUP_Callback();#endif}#endif#if(IMR_MSK&ISTR_SUSP)if(wIstr&ISTR_SUSP&wInterrupt_Mask){if(fSuspendEnabled){Suspend();}else{Resume(RESUME_LATER);}_SetISTR((u16)CLR_SUSP);#ifdefSUSP_CALLBACKSUSP_Callback();#endif}#endif#if(IMR_MSK&ISTR_SOF)if(wIstr&ISTR_SOF&wInterrupt_Mask){_SetISTR((u16)CLR_SOF);bIntPackSOF++;#ifdefSOF_CALLBACKSOF_Callback();#endif}#endif#if(IMR_MSK&ISTR_ESOF)if(wIstr&ISTR_ESOF&wInterrupt_Mask){_SetISTR((u16)CLR_ESOF);#ifdefESOF_CALLBACKESOF_Callback();#endif}#endif#if(IMR_MSK&ISTR_CTR)if(wIstr&ISTR_CTR&wInterrupt_
嵌入式实验报告-宗子轩 来自淘豆网www.taodocs.com转载请标明出处.