STM32的USB键盘及鼠标例程

发布者:WiseThinker最新更新时间:2011-08-25 来源: EEWORLD关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

STM32的USB键盘及鼠标例程通过网络可以搜到很,但是在同一个设备中集成键盘及鼠标的例程却比较少见(我通过GOOGLE只搜到圈圈的基于51+D12的版本)。以下为我参考圈圈的例程做出来的集成键盘及鼠标的STM32的程序。

  程序上除了usb_desc.c及usb_endp.c外,其它部份同单一的键盘鼠标一样。下面着重说一下usb_desc.c及usb_endp.c的不同之处。

  单一键盘鼠标跟集成键盘鼠标这区别主要是报告描述符不同。单一键盘鼠标的报告描述符因只有一组报告输入/输出,故没有报告ID,而集成的有两组报告(键盘及鼠标),所以每一组报告都有一个报告ID加以区别。

  另外就是在usb_endp.c中对端点的数据发送不知道是不是我的原因,待发送数据长度有问题,原因还未找到,只能在后面增加一条设置发送数据长度的语句。(如果不加的话,PC端只会收到8位数据,尽管我程序里设置了9位数据)

  完整的usb_desc.c文件如下:

  #include "STM32Lib\USBLib\usb_lib.h"

  #include "usb_desc.h"

  // KM_DeviceDescriptor

  const u8 HID_DeviceDescriptor[HID_SIZE_DEVICE_DESC]=

  {

  0X12, // bLength

  USB_DEVICE_DESCRIPTOR_TYPE, // bDescriptorType

  0x00, // bcdUSB

  0x02,

  0x00, // bDeviceClass

  0X00, // bDeviceSubClass

  0x00, // bDeviceProtocol

  0x40, // bMaxPacketSize40

  0x34, // idVendor (0x0483)

  0x12,

  0x78, // idProduct = 0x5710

  0x56,

  0x00, // bcdDevice rel.20.00

  0x02,

  1, // index of string descriptor describing manufacturer

  2, // index of string descriptor describing product

  3, // index of string descriptor describing the device serial number

  0x01 // bNumConfigurations

  };

  // USB Configuration Descriptor

  const u8 HID_ConfigDescriptor[HID_SIZE_CONFIG_DESC]=

  {

  0X09, // bLength

  USB_CONFIGURATION_DESCRIPTOR_TYPE, // bDescriptorType

  HID_SIZE_CONFIG_DESC, // wTotalLength

  0x00,

  0x01, // bNumInterfaces 接口数目

  0x01, // bConfigurationValue set_configuration命令所需要的参数值

  0x00, // iConfiguration

  0xE0, // bmAttributes

  0x32, // MaxPower 100mA

  //***************接口1配置***************

  0x09,

  USB_INTERFACE_DESCRIPTOR_TYPE,

  0x00, // 接口编号

  0x00,

  0x02, // 端点数

  0x03,

  0x01, // 1 = boot 0 = no boot

  0x01, // 0 = none 1 = keyboard 2 = mouse

  0, //接口描述符索引值

  //***************HID 描述符****************

  0x09,

  HID_DESCRIPTOR_TYPE,

  0x10,

  0x01,

  0x00,

  0x01,

  0x22,

  HID_SIZE_REPORT_DESC,

  0x00,

  //***************端点1输入描述***************

  0x07,

  USB_ENDPOINT_DESCRIPTOR_TYPE,

  0x81,

  0x03,

  0x0A,

  0x00,

  0x20,

关键字:STM32 引用地址:STM32的USB键盘及鼠标例程

上一篇:用时差法检测液压系统流量
下一篇:STM32 USB设计 单片机程序篇

推荐阅读最新更新时间:2024-03-30 21:48

STM32之DAC原理
1.DAC模块 1.数模转换功能 2.可以配置为8位和12位模式(8位右对齐,12位左对齐,12位右对齐) 3.DAC模块有两个单独的控制器,每个通道有着单独的转换器,可以独立转换,也可以同时转换 4.可以实现噪声波形和三角波形的生成 5.每个通道有着DMA功能 6.图示: PS:左上方为一些触发的条件,左下方为一些数字电源(VDDA,VSSA) Vref+为参考电压,DAC_OUT_x为DAC的输出通道,(2.4v Vref VDDA) 数据并不是直接传入DORx的,需要先传入DHRx(如果没有选择硬件触发(TENx=0),在一个时间周期后传入DORx),同时,又经过Tsetting(大约3us)
[单片机]
<font color='red'>STM32</font>之DAC原理
stm32使用超高精度的同步时钟的设计
有些场合可能需要超高精度的同步时钟,比如0.5ppm甚至更低的时钟,并且保证多台设备很好的重复率,因此这篇文章主要讲述如何设计基于stm32的超高精度的时钟。 首先时钟精度要0.5ppm甚至更低的话,显然要使用txco,也就是温补晶振,0.5ppm的温补晶振市面上比较常见,体积很小(2520),并且价格很便宜,两三元一片,因为这种类型的晶振广泛引用于手机,GPS等需要精密时钟的地方,因此种类多价格低,但是相反的振荡频率只有那么几种,这几种中我么能用的也就是19.2mhz和26mhz两种。考虑2的倍数的问题,19.2mhz的最佳。 本次设计使用19.2mhz的有源温补晶振最为stm32的时钟源,这里我选择型号KT2
[单片机]
STM32 外部中断的使用
例程名称:外部中断实验 作 者:tkzsld(sky) 实验硬件:火牛开发板 硬件连接:指示灯连接 PD9 按钮连接 PA8 功能描述:本例程实现外部中断的输入试验, 按键次数 1:PD8 PD9 ON 2:PD8 PD9 OFF 3:PD10 PD11 ON 4:PD10 PD11 OFF 5:PD8-11 ON 6:PD8-11 OFF 7: PB5 BEEP ON 8 :BEEP OFF *********************************************************
[单片机]
STM32—PWM的产生
1. TIMER输出PWM基本概念 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一般用来控制步进电机的速度等等。 STM32的定时器除了基本定时器TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出。 1.1 PWM输出模式 STM32的PWM输出有两种模式,模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的(“110”为模式1,“111”为模式2)。
[单片机]
ST推出低功耗高安全的STM32U5
意法半导体(STMicroelectronics)宣布推出新一代节能微控制器(MCU),即STM32U5系列,该产品专为可穿戴设备,个人医疗设备,家庭自动化和工业传感器等智能应用中对功率/性能比敏感的应用而设计。 新的MCU采用40纳米工艺制造,可在动态工作模式和节能模式下节省功耗。新的STM32U5系列结合了Arm Cortex-M33内核,使用Arm Keil MDK进行最大功率优化的功能以及诸如高级安全性和针对PSA 安全3级和SESIP(针对IoT平台SESIP的安全评估标准)的基于硬件的保护之类的新功能 ,以及图形加速器以增强用户体验。 面向未来的物联网 在物联网(IoT)不断发展的时代,为了使事物连接到网络
[单片机]
ST推出低功耗高安全的STM32U5
PT2272-M4--4键无线遥控器(STM32
一、前期准备 单片机:STM32F103ZET6 开发环境:MDK5.14 库函数:标准库V3.5 PT2272-M4模块:淘宝有售 二、实验效果 三、驱动原理 PT2272-M4是5V信号输出的,所以必要找到单片机带FT脚的作为接收口。按下按键,对应的输出端口输出高电平,反之输出低电平。A,B,C,D对应D2,D0,D3和D1。 需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。 四、驱动代码 wirelesskey.h #ifndef __WIRELESS_KEY_H__ #define __WIRELESS_KEY_H__ #include stm32f10x.h #include gpi
[单片机]
PT2272-M4--4键无线遥控器(<font color='red'>STM32</font>)
STM32 Systick定时器在实现1us延时的问题与解决
问题: 使用systick_config()函数来实现计数,这个函数在下面代码中的 SysTick_CTRL_TICKINT_Msk 开启了中断。不论系统时钟为72Mhz或36Mhz若设置STM32每10us进入一次中断,计时是可以的;而每1us进入中断,由于中断指令较多,那么程序就会困在中断里出不来。 static __INLINE uint32_t SysTick_Config(uint32_t ticks) { if (ticks SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */
[单片机]
STM32的ADC实验的原理简介
ADC简介 Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。 STM32的ADC的配置 战舰V3开发板的ADC通道与引脚的对应关系 模拟量输入的范围(ADC正常工作的范围) STM32F103ZET6芯片中的电源部分(VREF与VSSA): 我们看到Vref-连接到了GND,而VREF+通过跳线帽连接到了VDD(VDD连接到了开发板的3.3V供电电源上),因此我们的DAC通道正常工作的模拟量输入范围为(2.4V,3.3V)。 ADC工作逻辑图解析(以ADC通道1为例) ADC中断的三种类型 注入
[单片机]
<font color='red'>STM32</font>的ADC实验的原理简介
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved