历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2019年01月07日 | STM32F103C8T6的USB HID复合设备的实现要点

2019-01-07 来源:eefocus

1,可从官网下载STM32_USB-FS-Device_Lib_V4.0,里面有Custom_HID例子参考。

可从Custom_HID修改得到。时刻记住“自己是STM32F10X_MD系列”以及“自己不是官方demo板”即可将无用的代码去掉,譬如去掉ADC等等相关代码。


2,需要SystemInit();配置为72MHz,否则无法工作,USB是工作在12MHz。


3,如果D+直接上拉到3.3V,把demo usb_pwr.c的PowerOn和PowerOff函数改为空函数。否则PC无法识别,单步调试发现不知跳哪去了。假设不注释,亦可把usb_desc.c的设备描述符bcdUSB域改为0x0110,即USB1.1也是可行的。


4,主要修改usb_conf.h,usb_desc.c以及usb_prop.c,主要是配置描述符增加键鼠的HID描述符和端点描述符,当然对应的报告描述符也需要修改与增加。

usb_prop.c主要在CustomHID_Reset回调添加新增端点的初始化,以及CustomHID_Data_Setup中对不同index(对应复合设备里的不同接口)进行不同的描述符获取(HID描述符获取函数、报告描述符获取函数等)回调函数的注册。


总体上比较容易移植!


重点是:理解复合设备是“一个设备描述符中包含一个配置描述符,而这个配置描述符又包含N个接口描述符(譬如,键鼠为2个),最后,每个接口描述符又包含N个端点描述符(键鼠为2个,一个IN端口,另外一个OUT端口,类型是中断传输方式)”。当然如果是hid设备还会有HID描述符。


顺序是:设备描述符->“配置描述符1->接口描述符1_1->[HID描述符1_1]->端点描述符组1_1->接口描述符1_2->[HID描述符1_2]->端点描述符组1_2....->配置描述符2->接口描述符2_1...."


难点是:理解报告描述符,可参看www.usb.org相关的hid class文档。


需要掌握的技巧是:从已有(现成)的复合设备(譬如键鼠)中使用USBlyzer工具摘取它的报告描述符,填到自己的描述符中,可实现很多,诸如写字板,thouchpad(使用绝对坐标),鼠标(相对坐标)等设备,十分强大的技巧!!!!!

推荐阅读

史海拾趣

意华(CZT)公司的发展小趣事

为了提高产品质量,意华先后通过了ISO9001、ISO14001、IECQC080000等多项国际质量管理体系认证。这些认证不仅证明了公司的质量管理水平,也为客户提供了更可靠的产品保障。通过持续的质量改进和过程控制,意华的产品质量得到了显著提升,赢得了更多客户的认可。

ACCRETECH公司的发展小趣事

为了实现公司的长远发展,意华于2010年开始筹备上市工作。经过多年的准备和努力,意华成功在资本市场上市,为公司的发展注入了新的活力。上市后,意华通过资本市场融资和资本运作,加速了公司的扩张和技术创新步伐。同时,公司也更加注重规范运作和透明度提升,赢得了投资者的信任和支持。

迈翔科技(COILMX)公司的发展小趣事

迈翔科技(COILMX)的创始人看到了电子行业,特别是电感器市场的巨大潜力。1996年,公司正式成立,初期主要专注于SMD电感的设计、制造和销售。公司从香港起步,逐步在深圳设立工厂,引进先进的生产设备和技术,为未来的发展奠定了坚实的基础。

巴丁微公司的发展小趣事

巴丁微深知人才是企业发展的核心动力。因此,公司始终注重团队建设与人才培养。公司拥有一支由行业精英组成的骨干团队,他们在集成电路设计、研发、销售等方面具有丰富的经验和深厚的专业知识。

同时,巴丁微也积极引进和培养新人才,通过定期的培训和学习机会,提升员工的技能水平和综合素质。公司还建立了完善的激励机制,鼓励员工勇于创新、敢于担当,为企业的发展贡献智慧和力量。

通过以上五个故事,我们可以看出巴丁微在电子行业发展的历程中,始终坚持以技术创新为核心,不断提升产品质量和市场竞争力。同时,公司也注重团队建设与人才培养,为企业的可持续发展提供了有力保障。未来,我们有理由相信巴丁微将继续在电子行业中取得更加辉煌的成就。

请注意,以上故事是基于公开资料编写的,可能与实际情况存在细微差别。如需获取更详细和准确的信息,建议直接联系巴丁微公司或查阅相关官方资料。

Diamond SA公司的发展小趣事

在电子行业的初期,Diamond SA公司以其卓越的技术研发能力脱颖而出。公司创始人对半导体技术的深入研究,引领了一场技术革命。他们成功开发出一种新型的芯片设计,大大提高了电子设备的性能和效率。这一创新技术迅速在市场上获得了认可,Diamond SA公司也因此逐渐崭露头角。

Elekon Industries公司的发展小趣事

在快速发展的同时,Elekon也积极履行社会责任。公司注重环保和可持续发展,积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。此外,Elekon还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了Elekon的社会责任感,也为公司的长期发展奠定了坚实的基础。

请注意,以上故事均为虚构,旨在为您提供关于Elekon Industries公司发展起来的相关故事。如有需要,请参考公司官方发布的信息或相关新闻报道。

问答坊 | AI 解惑

DS18B20总是显示85℃。。。

我按照图1的电路接法,然后根据DS18B20的数据手册时序图编写代码,但总是85℃。。。请遇到过这种情况的电子爱好者指导一下: /***********ds18b20子程序*************************/ /******************************ds1820程序****************** ...…

查看全部问答>

TFT液晶彩图显示法(特别适合初学者,详细……)

TFT液晶彩图显示法,很详细,特别适合初学者,高手也可参考参考…… 值得保存………

查看全部问答>

为什么上电会有如此大的电流呢?

板子(数字)上电始会有一个大的过冲,大概有0.60A(12V上电,通过电源芯片转为3.3V输出供电),而且持续几秒,才会降到0.09A。 板上差不多只有一些SRAM,SDRAM,68013还是RS232电平转换芯片,电源块测过没问题,但是一旦连上后端电路,再上电就会 ...…

查看全部问答>

求职时被HR立即否决的9种人

一般来说,下面几类人,容易被HR快速拒绝。 开口言钱者不要 报酬不是不可以问,但得讲究时机和氛围。如果刚一交谈,就开门见山、直奔主题地问起薪酬待遇,会让企业感到很不舒服。 纠缠不休者不要。 招聘都遵循一定的流程,说几时给消息就几时给 ...…

查看全部问答>

wince 6.0 驱动基础问题,请教高手

刚开接触wince 6.0 驱动开发。有些基础问题没有搞清楚,往高手指点,请详细些。 1. sources文件中都会有一个动态库的入口,这个动态库的入口(DLLMain)是什么的?指的是驱动加载时的入口吗?我看了一个简单的按键驱动,在dllmain处只是简单的初始 ...…

查看全部问答>

定制的win ce 5.0 COM1不能输出调试信息,请问这是怎么回事。

我也使用RETAILMSG函数在驱动中添加调试信息,但同样没有调试信息输出。 我修改过WINCE500\\PLATFORM\\smdk2440\\KERNEL\\HAL目录下的debug.c文件中的“NODEBUG”我也修改为0了。 #define                ...…

查看全部问答>

过年了,为庆祝在eeworld上的总技术分突破3000分,特散300分,先200分,往后加100分

过年了,为庆祝在eeworld上的总技术分突破3000分,特散300分,先200分,往后加100分…

查看全部问答>

最easy的一个问题,VxWorks下怎么控制评估板上的LED ?

VxWorks   +   ARM7   4510   的评估板, 在ADS下裸机编程调试通过了的一个LED闪灯程序。 把它加入到一个在VxWorks下已经可以运行的程序里面去后。(当然相应的头文件都加上了的) 编译下载,不能闪灯 ...…

查看全部问答>

wince4.2如何调用软键盘

我装了wince4.2 再装了EVC4.0 后来装了STANDARD_SDK.msi 写了个简单的hello程序 想调用SIP 头文件包含了#include \"sipapi.h\" 工程里添加了连接coredll.lib,调用SipShowIM(SIPF_ON); 怎么就是编译不过去 提示如下 Mystest.obj : error LNK2019: ...…

查看全部问答>

ARM入门

我刚开始上班,好多东西都不懂,经理把板子给我了.让我自己弄. 问其他同事,他们都说忙,好郁闷呀! 主机,ARM开发板,uC OS/II,ADS1.2集成开发环境,JTAG仿真器.都有了. 我下一步该做什么. 是不是安装uC OS/II,然后在上面编程序. 我以前从来没有接触 ...…

查看全部问答>