zoukankan      html  css  js  c++  java
  • USB小白学习之路(4)HID键盘程序

    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键盘板上的灯不是通过键盘板上的按键直接控制的,而是上位机检测到键盘板上的按键被按下,然后给键盘发送一个命令,来控制键盘板上的指示灯亮灭的。

    真正不羁的灵魂不会真的去计较什么,因为他们的内心深处有着国王般的骄傲。
  • 相关阅读:
    伺服电机常见故障分析汇总
    PLC常见四大故障及其处理方法
    Qt QString的arg()方法的使用
    Qt 线程池QThreadPool类、QRunnable类
    C++线程池的实现
    C++ List的用法
    C++语言堆栈的详细讲解
    QT中的QQueue类、C++中的queue类
    Qt platform plugin 'windows' 问题的解决方法
    电气接地的相关介绍
  • 原文地址:https://www.cnblogs.com/kybyano/p/8093394.html
Copyright © 2011-2022 走看看