代码分析:
对于USB全速设备,主机可以保证每1ms一笔事务,一笔事务最大64字节,我们这里设置为8字节(USB键盘需要8字节存放信息,第1字节用来表示特殊键,第二字节保留,第三至第八字节为同时按下的键值)
第一字节的特殊键定义:
BYTE1 -- 特殊按键
|--bit0: Left Control是否按下,按下为1
|--bit1: Left Shift 是否按下,按下为1
|--bit2: Left Alt 是否按下,按下为1
|--bit3: Left GUI(Windows键) 是否按下,按下为1
|--bit4: Right Control是否按下,按下为1
|--bit5: Right Shift 是否按下,按下为1
|--bit6: Right Alt 是否按下,按下为1
|--bit7: Right GUI 是否按下,按下为1
BYTE3-BYTE8 当前按下的普通按键键值,也就是最多六个按键同时按下,其键值代码如上图所示,详细代码可访问usb.org下载或本文附件下载。
返回头我们看看源代码中的实现,回调函数中实现了隔一段时间发送PageUp,然后再隔一段时间发送PageDown,依次循环。两个按键的键值分别为0x4B和0x4E。
在看看键值表中,4B和4E确实是PageUp和PageDown。
至此,USB例程学习完毕,由于USB通讯相对复杂,更详细的信息还在逐渐学习中。