usb小白学习之路hid键盘程序

kybyano kybyano     2022-10-06     307

关键词:

HID键盘程序

1. 特别注意

需要特别注意,各个例程中的设备描述符,配置描述符等各种描述符都是已经配置好了的,我们需要做的只是在例程中将代码修改为自己需要的部分即可,一般情况下是不可以串搭配的。

2. 程序解析

此程序使用的是端口1中断,进行数据的传输。

此程序的用户核心部分为periph.c文件中的“初始化函数TD_init()”和“循环执行函数TD_pull()”。

1可知,开发板上的两个按键S1S2和两个LEDD4D5都是接在端口PE上的。

 

开发板原理图

TD_init()函数就是完成对端口PE的初始化,以及端口1的中断使能。

TD_pull()函数就是通过检测PE4PE5电平的变化,来向上位机传送相应的代码。同时,检测端口1中断数据,通过控制PE0PE1的电平高低进行相应。

3. 实验验证

在通过Cypress USB Consloe给开发板烧录之后,就不能通过Cypress USB Console检测开发板了,因为这时已经被配置为HID设备,Cypress USB Console不能检测HID设备。

此时开发板上的S1S2分别对应ashift按键,可以通过在文档中输入检测。在键盘板上按Caps LockNum按键,开发板上的D4D5会随着键盘板上的灯同样变化。

在这里可以得出结论,我们USB键盘板上的灯不是通过键盘板上的按键直接控制的,而是上位机检测到键盘板上的按键被按下,然后给键盘发送一个命令,来控制键盘板上的指示灯亮灭的。

usb小白学习之路cypress固件架构解析

Cypress固件架构彻底解析及USB枚举1. RAM的区别56pin或者100pin的cy7c68013A,只有内部RAM,不支持外部RAM128pin的cy7c68013A在pin脚EA=0时为内部RAM,pin脚EA=1时,为外部RAM2. USB描述符DESR.A51中放的是USB描述符表,包括:1、设备描述符2、... 查看详情

usb小白学习之路端点in/out互换

端点2(out)和端点6(in)的out_in互换注:这里的out和in都是以host为标准说的,out是host的out,在设备(Cy7c68013)这里其实是输入端口;in是host的in,在设备(Cy7c68013)这里其实是输出端口。由于在PDF文档中,最后博主说了句将端点2改为... 查看详情

usb小白学习之路cy7c68013aslavefifo模式下与fpga通信

CY7C68013ASlaveFIFO模式下与FPGA通信CY7C68013A的时钟是由FPGA提供的24MHz,RESET引脚也是由FPGA控制。1、开始时没有给FPGA烧录程序,将CY7C68013A接到PC上,安装驱动后,是检测不到device的,经查找,原因有两个:  ①没有时钟,这种情况... 查看详情

(转)usb小白学习之路(12)cy7c68013固件之slavefifo

Cy7c68013固件之SlaveFIFO转自:http://blog.csdn.net/zengshaoqing/article/details/53053539 选择SlaveFIFO传输方式  SlaveFIFO传输示意如图1:图1SlaveFIFO传输示意图  在SlaveFIFO方式下,FX2LP内嵌的8051固件的功能只是配置SlaveFIFO 相关的寄存器以... 查看详情

usb小白学习之路fpgacommunicationwithpcbycy7c68013,td_init()解析

voidTD_Init(void){   CPUCS=((CPUCS&~bmCLKSPD)|bmCLKSPD1);     //设置CPU时钟频率为48M,寄存器CPUCS的位如下所示。此语句就是将CPUCS的b4,b3位设为10,         & 查看详情

(转)usb小白学习之路fx2lpcy7c68013——slavefifo与fpga通信

此博客转自CSDN:http://blog.csdn.net/xx116213/article/details/50535682 1USB概述USB名称解释 USB是通用串行总线(UniversalSerialBus)的缩写。能过在计算机运行过程中随意地接入,并且立刻就能投入工作,那么这样的特性叫做即插即用PnP... 查看详情

(转)usb小白学习之路(11)cy7c68013驱动电路设计注意事项

Cy7c68013驱动电路设计注意事项转自:http://group.chinaaet.com/116/79029#0-tsina-1-71467-397232819ff9a47a7b7e80a40613cfe1  CY7C68013的驱动电路非常简单,除了提供24MHz时钟源,设计好USB差分接口,做好电源滤波,其他信号均可由数字控制。这里简... 查看详情

(转)usb小白学习之路(10)cy7c68013slavefifo模式下的标志位

转自良子:http://www.eefocus.com/liangziusb/blog/12-11/288618_bdaf9.html   CY7C68013含有4个大端点,可以用来处理数据量较大的传输,如数据采集、视频等方面的应用。每个大端点都可以独立配置对应的FIFO,同时,也提供了相应的标志位... 查看详情

小白的ctf学习之路1——程序与cpu

刚刚注册了这个博客园,尽量保持每日一更(*/ω\*)今天看了po学院的教学视频,了解了程序是什么,如何在CPU当中工作的等各种之前未曾想过的问题,特此记录,以防忘记首先我们学习程序与CPU之前需要了解这么几个问题:1... 查看详情

62stm32usb自定义hid复合设备修改实验(代码片段)

...    最近因为项目需要,我们希望单片机既能有hid键盘功能,又能有hid设备的功能。即单片机的一个usb接口插入电脑后,电脑能识别出键盘设备和hid设备,两者同时存在的。        基于项目只是要求实现功... 查看详情

技巧.在虚拟机vmware中使用hid设备(如usb免驱键盘)

https://blog.csdn.net/future_ai/article/details/80603724 1、2、3、4、5、  查看详情

前端小白的学习之路--html学习

HTML的补充学习1.meta与base<metahttp-equiv="refresh"content="2">2秒刷新一次<basehref="https://www.baidu.com"target="_blank">设置默认跳转地址以及跳转方式<linkrel="icon 查看详情

如何从 USB HID 设备读取输入?

...入。如何从C#获取扫描仪的输入?我可以区分扫描仪和USB键盘吗?(扫描仪是HID设备)【问题讨论】:【参考方案1】:在CodeProject上使用“原始输入”实现之前,我成功地做到了这一点:R 查看详情

小白艰苦学习之路(记录学习历程——java篇)day4(代码片段)

Day4用户交互Scanner对象可以通过Scanner类来获取用户的输入。(其中,java.util.Scanner是它的包)基本语法:Scanners=newScanner(System.in)通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使... 查看详情

修改后的 USB 键盘驱动程序不接收按键 (Linux)

】修改后的USB键盘驱动程序不接收按键(Linux)【英文标题】:ModifiedUSBKeyboardDriverNotReceivingKeyPresses(Linux)【发布时间】:2016-11-2623:15:54【问题描述】:我正在尝试编写修改/自定义的USB键盘驱动程序。我遇到了irq处理程序没有按预期... 查看详情

小白艰苦学习之路(记录学习历程——预备篇)day1

学习路线Java预科知识博客的重要性Markdown语法标题#(空格)+标题名称【一级标题】或ctrl+1##(空格)+标题名称【二级标题】或ctrl+2###(空格)+标题名称【三级标题】或ctrl+3以此类推到六... 查看详情

badusb攻击(代码片段)

...HID设备是指计算机直接与人交互的设备,例如:键盘、鼠标和游戏杆等。在HID出现之前,每一个外接设备在接入电脑时,都需要初始化驱动程序和协议,比如更换鼠标键盘,新接入USB类型的设备等,大... 查看详情

usb接口程序编写

...是操作系统已经内置了HID设备驱动,一般不需要安装驱动程序。通用的HID设备可以直接使用HID设备类驱动程序(hidclass.sys)和HID小驱动程 查看详情