STM32 基础系列教程 27 - USB_HID
前言
学习stm32 USB接口使用,学会用CUBE工具快速创建USB设备工程及调试,关于usb的相关知道请读者提前准备并学习,当然如果不想深究其中原理的话,跟着本文来操作就可以实现基于USB的设备开发了。需要提示的是,stm32在使用usb接口功能是一般需要在DP引脚上上拉一个1.5K电阻到3.3V(部分MCU内部会上拉)。
示例详解
基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。
本示例所用的最小系统板原理图:
- 从本节开始,关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:
- 系统时钟树
- USB接口配置
- USB设备配置(选择Custom Human Device Class(HID),参数可保持默认)
- 引脚配置
- 中断配置(保持默认)
- 工程代码
- 用户自定义HID设备可根据用户的需求在usbd_customhid.c对各种描述符进行配置与更改,在usbd_desc.c有关于USB设备的一些描述信息,如VID,PID设备信息等,在usbd_custom_hid_if.c文件中可以在对应的地方完成HID报告描述符的定义,及加入用户自己的代码,实现用户自己想要的功能,在usbd_conf.c中可以看到USB初始化的具体操作。
烧录默认代码,连上电脑可在电脑的设备管理器中可以看到人全学输入设备中可以看到USB输入设备,但是有个叹号:
下面我们就来修改代码,来实现具体的设备:
1,在usbd_conf.h中将USBD_CUSTOM_HID_REPORT_DESC_SIZE改成33,USBD_CUSTOMHID_OUTREPORT_BUF_SIZE改成64。
2,在usbd_custom_hid_if.c中补充实现端点报告描述符,如下图
3,在usbd_customhid.h中修改宏CUSTOM_HID_EPIN_SIZE及CUSTOM_HID_EPOUT_SIZE值为64(当然也可以不是64,如32,16等)
在usbd_conf.c中看是否有图中代码!
在main.c中加入代码:
OK,编译工程,烧录!!电脑中出现如下图所示设备:
- 到此,简单的USB_Custom_hid设备演示demo就完成了,打开USB调试工具,可以看到程序要不断发送数据!:
同时用工具给程序发送数据,仿真调试程序可以看到程序可以正功接收到正常的数据:
OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!
文中资料及源码下载,在公众号里给十三发消息:
下载|STM32基础系列教程27
关注十三公众号
STM32 基础系列教程 27 - USB_HID相关推荐
- STM32 基础系列教程 24 - USB_HID_key
前言 学习stm32 USB接口使用,学会用CUBE工具快速创建USB设备工程及调试,关于usb的相关知道请读者提前准备并学习,当然如果不想深究其中原理的话,跟着本文来操作就可以实现基于USB的设备开 ...
- STM32 基础系列教程 50 – MbedTls
前言 mbed TLS(以前称为PolarSSL)是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码.这是双重许可与Apache许可证 2.0版(与GPLv2许可也可).网站上指出,mbed ...
- STM32 基础系列教程 49 – Jansson
前言 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全 ...
- STM32 基础系列教程 48 – CJSON
前言 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全 ...
- STM32 基础系列教程 47 - MD5
前言 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信 ...
- STM32 基础系列教程 46 – RNG
前言 随机数发生器(RNG)是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数.STM32F407自带RNG ,本节将给大演示STM32F4系列MCU中的RNG的使用.用 ...
- STM32 基础系列教程 45 - FSMC_LCD_Touch
前言 上一节我们完成了用 STM32F4的 FSMC接口来控制 TFTLCD的显示的操作,其实正点原子的探索者F4开发板带的屏幕支持触摸操作,笔者用的是4.3寸的电容触摸屏,本节我们继续实验,来完成基 ...
- STM32 基础系列教程 44 - FSMC_LCD
前言 TFT-LCD 即薄膜晶体管液晶显示器.其英文全称为: Thin Film Transistor-Liquid Crystal Display. TFT-LCD 与无源 TN-LCD. STN- ...
- STM32 基础系列教程 43 – SRAM
前言 STM32F407ZGT6 自带了 192K 字节的 SRAM,对一般应用来说,已经足够了,不过在一些对内存要求高的场合, 比如跑算法或者跑 GUI 等,自带的这些内存就不够用了.比如跑算法或者 ...
最新文章
- 重型车辆盲区行为检查Behaviours – Heavy Vehicle Blind Spots
- 费用流 -- 四川省赛F-Direction Setting [拆边成点+费用流]
- eclipse查看git地址_git下载及使用
- Flash 最小化,帧速变慢的问题
- Qt之QMetaObject::invokeMethod()使用简介
- 敏捷方法在测试计划中的应用
- Javascript称球
- 手动选择显示_QGIS 二次开发笔记(2)——显示图层
- @90后程序员,“颜值即正义”的现在,程序员应该如何更新穿搭?
- 5个最佳网络安全监控工具、 你知道哪些
- 计算机控制技术复试面试(一)
- 微信小程序的事件大全
- SSM员工工资管理系统(Java毕设项目)
- 浅析API网关——Ocelot[网关]+Consul[服务发现负载均衡]+Polly[服务熔断]+Ids4[服务认证]
- 读书笔记2014第6本:《The Hunger Games》
- java基础篇---第一天
- linux fastQC 操作命令,10 月 17 日 Linux Fastqc 软件安装
- vue项目引入高德地图
- 处理器排行_数字信号处理器价格和库存TOP10排行
- bigemap大地图软件功能对比分析