河南城建学院本科毕业设计(论文) USB鼠标的实现
对于全速模式和低速模式,只有获取设备、配置和字符串描述符这三种。在返回配置描述符的时候,接口描述符、端点描述符和类特殊描述符(如HID描述符和报告描述符)要一起返回,这两类描述符不能单独请求返回。图4.1是HID设备描述符的结构。
设备描述符
字符串描符 配置描述符 接口描述符 端点描述符 HID描符符
报告描符符 图4.1 HID设备描述符结构
物理串描符4.2 USB鼠标的运行
①程序采用JTAG下载,将开发板通过下载器连接到电脑,并用一根USB数据线把开发板连接到电脑的USB上。
②打开设计目录下的project.uvproj文件,编译连接工程。
③检查无误后,点击“Target Option”按钮可查看芯片类型和下载方式,点击“Debug”设置完成后,在主界面点击“Download”下载。
④重启开发板。电脑会提示“找到新的USB设备”,因为是标准USB设备, 所电脑会自动安装驱动。
⑤分别控制开发板上的四个键,观察电脑屏幕上鼠标光标的变化,如果光标随按键按下移动,则表明程序运行成功,一个USB简易鼠标就做好了。
4.3 硬件实现
图4.2所示为设备管理器上显示的已成功安装的USB鼠标。
12
河南城建学院本科毕业设计(论文) USB鼠标的实现
图 4.2 设备管理器
图4.3为STM32F103开发板。
图4.3 STM32F103开发板
13
河南城建学院本科毕业设计(论文) 设计总结
设计总结
随着计算机技术的发展,个人电脑的价格越来越低,现在基本上每个家庭都有一台电脑,而鼠标作为与电脑配套的设备之一,正处于开发研制的高潮。通过学习设计USB鼠标,不仅与时代接轨,毕业之后可以从事相关工作,而且也为嵌入式系统的开发奠定了基础。论文研究了基于STM32的嵌入式系统的实现方案,并对HID协议和USB的标准请求进行了深入学习,最终实现了以STM32为核心的USB简易鼠标。此鼠标属于HID类设备,在现在的各种Windows系统中都可以即插即用,不需要再开发安装驱动程序。现在的电脑都至少配备了两个以上的USB接口,不够用的话,还可以用USB集线器拓展,非常方便,所以USB设备的应用前景非常广阔。在完全掌握设计USB鼠标之后,设计其他的HID设备也会非常简单。 本论文主要完成了以下工作:
1、学习了USB协议,并对HID设备进行了深入的研究与分析; 2、了解STM32单片机,熟练掌握了STM32F103开发板的使用; 3、对HID设备的开发流程开发和程序进行分析与学习;
4、编写了程序代码并下载验证,对程序中的错误经过多次的修改,最终达到理想结果。
当然在设计过程中也出现了这样那样的问题,特别是在对USB协议的理解上,因为我不是学嵌入式的,看了一个月的书都没弄懂USB是怎么通信的。本来选这个题目就是为了学东西,虽然我确实没有什么天赋,但不论遇到什么困难,都不能让我止步。最终在我看完了报告描述符的实现方法之后,明白了整个USB鼠标的实现过程。还有就是设备有显示但就是不能工作的问题,通过向同学和老师请教,原来是报告描述符的程序出错,修改之后就完美运行了。
14
河南城建学院本科毕业设计(论文) 附录
附 录
附录A main.c
/***************************************************************** *
* File : main.c * Hardware Environment: stm32f103
* Build Environment : RealView MDK-ARM Version: 4.35 * Version : V1.0 * By : fakor *
*****************************************************************/
/*Includes ------------------------------------------------------*/ #include \#include \#include \#include \
#ifdef __GNUC__
/* With GCC/RAISONANCE, small printf
(option LD Linker->Libraries->Small printf set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__ */
/* Private function prototypes -----------------------------------*/
void Delay (uint32_t nCount);
15
相关推荐: