- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE1
院系:计算机科学学院
专业:自动化__
年级:2008级
课程名称:嵌入式技术与应用
指导教师:张志俊
组号:
组员:覃静
2011年11月1日
实验题目:USB接口实验
一、设计要求
利用EduKit-M3实验平台的五个按键实现标准的USB接口游戏杆功能。
二、硬件电路实现
在EduKit-M3实验平台上已有一个简易的游戏杆,其SELECTION、DOWN、RIGHT、LEFT和UP键分别与处理器的PD12、PD14、PE1、PE0、PD8引脚相连;处理器的USB接口已经转换电路连接到CN1连接器。
三、软件程序设计
该程序的结构比较复杂,除了库文件以及USB函数库文件之外,还包含8个源文件,其中STM32F10x.s是启动代码。下面分别为其他7个函数:
1、main.c——该函数中主要包含2个函数,其中main函数初始化系统以及USB接口,之后不断查询游戏杆是否有动作,如果有动作则根据动作向USB缓冲器发出相关数据;Delay函数用于延迟。
intmain(void)
{#ifdefDEBUG
debug();
#endif
Set_System();
USB_Interrupts_Config();
Set_USBClock();
USB_Init();
while(1)
{ if(JoyState()!=0)
{Joystick_Send(JoyState());}
}
}
voidDelay(vu32nCount)
{for(;nCount!=0;nCount--);}
#ifdefDEBUG
2、usb_desc.c——该文件中没有任何函数,只是包含一些定义USB设备的描述符常数,由于游戏杆是标准USB设备,因此比较容易得到相关的参数。若要开发非标准的USB设备,则还需要开发PC上运行的非标准设备的驱动程序。
3、stm32f10x_it.c——该文件中包含USB中断服务程序,由于USB中断有很多情况,这里的中断服务程序只是调用usb_Istr.c文件中的USB_Istr函数,由USB_Istr函数再做轮询处理。
4、usb_Istr.c——该文件中只有一个函数,即USB中断的USB_Istr函数,该函数对各类引起USB中断的事件作轮询处理。
voidUSB_Istr(void)
{wIstr=_GetISTR();
#if(IMR_MSKISTR_RESET)
if(wIstrISTR_RESETwInterrupt_Mask)
/*Right_button+Left_button*/
GPIO_InitStructure.GPIO_Pin=JOY_LEFT_BUTTON|JOY_RIGHT_BUTTON;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOC,GPIO_InitStructure);
}
voidSet_USBClock(void)
{/*SelectUSBCLKsource*/
RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);
/*EnableUSBclock*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB,ENABLE);
}
voidUSB_Interrupts_Config(void)
{NVIC_InitTypeDefNVIC_InitStructure;
#ifdefVECT_TAB_RAM
/*SettheVectorTablebaselocationat0*/
NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);
#else/*VECT_TAB_FLASH*/
/*SettheVectorTablebaselocationat0*/
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
#endif
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_Ini
您可能关注的文档
- 屏山县中医医院医疗违规处罚规定(修改稿).doc
- 嵌c基础Linux源代码.doc
- 嵌合抗原受体修饰T细胞(CAR-T细胞)制剂制备质量管理规范(征求意见稿).docx
- 嵌入式091三月份基层团组织创意大赛总结.doc
- 嵌入式Linux操作系统学习规划.docx
- 嵌入式linux基本操作实验一的实验报告.docx
- 嵌入式linux实验二.doc
- 嵌入式Linux系统开发教程很完整的习题答案.doc
- 嵌入式MP3播放器设计.doc
- 嵌入式操作系统.doc
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江西省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年安徽省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年福建省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年广东省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河南省高考英语试卷(含答案解析)+听力音频.docx
- 2024年湖北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江苏省高考英语试卷(含答案解析)+听力音频+听力原文.docx
文档评论(0)