STM32 USB开发(三) 基于F105RBT6核心板开发的自定义HID收发(FS)
硬件设计
该核心板的USB插口有两个,一个是用于USB Slave的,可以用来做HID设备,把模拟STM32模拟为U盘等;另一个是USB Host设备,可以对插上的U盘的数据进行读写。

- 图中J2是Micro-USB口,用于向整个板子供电,由于最大供电为500mA,所以板载资源耗电不能超过2.5W。
- 上图中J1是USB Host设备,它需要向Slave(如U盘)供电,USB_POW用于控制是否供电。当USB_POW为低,Q1导通,5V的电源(来自)供到S5V上,为Slave供电。
- 在调试USB-Host(读写U盘)功能时,只需要使用USB-Micro端口(Slave)供电,请拔掉P2插口中OTG_D+与USB_D+的短路帽及OTG_D-与USB_D-的短路帽。使之和USB-Micro端口(Slave)的通信断开。
- 在调试USB-Slave功能时,需要使用USB-Micro端口(Slave)供电和通信。这时需要接上P2插口中OTG_D+与USB_D+的短路帽及OTG_D-与USB_D-的短路帽。

本实验用到了USB-Slave功能,所以需要接上P2插口中OTG_D+与USB_D+的短路帽及OTG_D-与USB_D-的短路帽。
另外,由于实验要用到串口打印功能,这里使用USART3进行通信,注意USART3的时钟树与所占用的GPIO PB10,PB11的时钟树的区别,通过USB2TTL转接板连接到PC上即可。
其中核心板上的PB10(USART3_TX) 连接到 USB2TTL小板上的RXD;核心板上的PB11(USART3_RX) 连接到 USB2TTL小板上的TXD。

本实验实现的功能与效果:
- USB 自定义HID通信-发送,USBD_USR_Init函数(usbd_usr.c文件)中配置了SysTick中断,每隔一定时间自动发送报文(累加计数器的值)给Host;
- USB 自定义HID通信-接收,USBD_HID_DataOut函数(USBD_HID_cb回调函数,usbd_hid_core.c文件)中读取收到的值,并根据值设置LED1灯的亮/灭;
- 串口通信,main()函数中自动发送i的值回上位机,实现了打印调试信息。

STM32 USB开发(三) 基于F105RBT6核心板开发的自定义HID收发(FS)的更多相关文章
- 迅为IMX6核心板开发平台智能交通解决方案
智能交通系统它是将先进的信息技术.数据通讯传输技术.电子传感技术.控制技术及计算机技术等有效地集成运用于整个地面交通管理系统而建立的一种在大范围内.全方位发挥作用的,实时.准确.高效的综合交通运输管理 ...
- STC8H开发(三): 基于FwLib_STC8的模数转换ADC介绍和演示用例说明
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- 【游戏开发】基于VS2017的OpenGL开发环境搭建
一.简介 最近,马三买了两本有关于“计算机图形学”的书籍,准备在工作之余鼓捣鼓捣图形学和OpenGL编程,提升自己的价值(奔着学完能涨一波工资去的).俗话说得好,“工欲善其事,必先利其器”.想学习图形 ...
- .net之微信企业号开发(三) 回调模式的接口开发
一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信 ...
- spring boot + vue + element-ui全栈开发入门——基于Electron桌面应用开发
前言 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并到同一个运行时环 ...
- javaweb开发3.基于Servlet+JSP+JavaBean开发模式的用户登录注册
转载孤傲苍狼博客http://www.cnblogs.com/xdp-gacl/p/3902537.html 1.层次比较分明的项目结构图
- 【iCore、iCore2 双核心板】EPCS 实验(SPI Flash)(基于Verilog语言)
_____________________________________ 深入交流QQ群: A: 204255896(1000人超级群,可加入) B: 165201798(500人超级群,满员) C ...
- 关于imx6核心板qt系统U盘挂载
在使用imx6核心板开发的时候,程序写到U盘,想通过U盘在板子上运行程序,U盘插到板子上后在minicom中有信息显示,但是无法找到挂载文件,/dev和/mnt下都没有找到相应的文件.后来百度后发现U ...
- 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(目录)
本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以 SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...
随机推荐
- 条件随机场CRF介绍
链接:https://mp.weixin.qq.com/s/BEjj5zJG3QmxvQiqs8P4-w softmax CRF主要用于序列标注问题,可以简单理解为是给序列中的每一帧,既然是分类,很自 ...
- java高并发核心要点|系列2|锁的底层实现原理
上篇文章,我们主要讲了解决多线程之间共享数据的核心问题和解决方案,也讲了锁的简单分类. 那么,这把锁,我们应该怎么去实现呢?如果你是java语言设计者,你又会怎么去设计这个线程锁呢? 直觉告诉我们,我 ...
- 【c++】一道关于继承和析构的笔试题
题目如下,求输出结果 class A { public: A() { cout<<"A"<<endl; } ~A() { cout<<" ...
- 如何使用dump文件进行调试
转载[文尾出处链接] 1 简介第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个 ...
- React native 之 async/await
参考资料 :https://www.jianshu.com/p/1e75bd387aa0 要点: 1. async function(){} 将普通函数转换成Promise 2. await 表达式/ ...
- StringTokenizer工具类的使用
package stringtokenizer.java; import java.util.StringTokenizer; public class stringtokenizer { publi ...
- (45)FreeRTOS学习之二
一:架构概述 FreeRTOS是一个相对较小的应用程序.最小化的FreeRTOS内核仅包括3个(.c)文件和少数头文件,总共不到9000行代码,还包括了注释和空行.一个典型的编译后(二进制)代码映像小 ...
- 跨平台迁移数据库windows-Linux
将10.10.1.127服务器的数据库ORCL(WINDOWS)迁移到VM 10.10.10.168LINUX平台 操作系统:Windows server 2008r2 64bit CentOS L ...
- Java缓存机制
1 Java缓存 1.1 jvm内置缓存 Java中实现缓存的方式有很多,比如用static hashMap基于内存缓存的jvm内置缓存,简单不实用,保对象的有效性和周期无法控制,容易造成内存急剧上升 ...
- 清理docker 容器下面的log
1. docker info 找到docker root dir 2. go to /var/lib/docker 3. constainers 下面有每个容器的文件夹,-json.log 结尾的为L ...