硬件设计

该核心板的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

本实验实现的功能与效果:

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

STM32 USB开发(三) 基于F105RBT6核心板开发的自定义HID收发(FS)的更多相关文章

  1. 迅为IMX6核心板开发平台智能交通解决方案

    智能交通系统它是将先进的信息技术.数据通讯传输技术.电子传感技术.控制技术及计算机技术等有效地集成运用于整个地面交通管理系统而建立的一种在大范围内.全方位发挥作用的,实时.准确.高效的综合交通运输管理 ...

  2. STC8H开发(三): 基于FwLib_STC8的模数转换ADC介绍和演示用例说明

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  3. 【游戏开发】基于VS2017的OpenGL开发环境搭建

    一.简介 最近,马三买了两本有关于“计算机图形学”的书籍,准备在工作之余鼓捣鼓捣图形学和OpenGL编程,提升自己的价值(奔着学完能涨一波工资去的).俗话说得好,“工欲善其事,必先利其器”.想学习图形 ...

  4. .net之微信企业号开发(三) 回调模式的接口开发

    一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信 ...

  5. spring boot + vue + element-ui全栈开发入门——基于Electron桌面应用开发

     前言 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并到同一个运行时环 ...

  6. javaweb开发3.基于Servlet+JSP+JavaBean开发模式的用户登录注册

    转载孤傲苍狼博客http://www.cnblogs.com/xdp-gacl/p/3902537.html 1.层次比较分明的项目结构图

  7. 【iCore、iCore2 双核心板】EPCS 实验(SPI Flash)(基于Verilog语言)

    _____________________________________ 深入交流QQ群: A: 204255896(1000人超级群,可加入) B: 165201798(500人超级群,满员) C ...

  8. 关于imx6核心板qt系统U盘挂载

    在使用imx6核心板开发的时候,程序写到U盘,想通过U盘在板子上运行程序,U盘插到板子上后在minicom中有信息显示,但是无法找到挂载文件,/dev和/mnt下都没有找到相应的文件.后来百度后发现U ...

  9. 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(目录)

    本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...

随机推荐

  1. Python 输出百分比

    注:python3环境试验 0x00 使用参数格式化{:2%} {:.2%}: 显示小数点后2位 print('{:.2%}'.format(10/50)) #percent: 20.00% {:.0 ...

  2. java高并发核心要点|系列2|锁的底层实现原理

    上篇文章,我们主要讲了解决多线程之间共享数据的核心问题和解决方案,也讲了锁的简单分类. 那么,这把锁,我们应该怎么去实现呢?如果你是java语言设计者,你又会怎么去设计这个线程锁呢? 直觉告诉我们,我 ...

  3. js常用操作

    map操作:var map = {};map["a"] = 1;map["b"] = 2; console.log(Object.keys(map)); //[ ...

  4. linux下的命令和常见问题笔记

    nginx的三大功能: 1.http服务 2.反向代理 3.负载均衡 2.当nginx重启报:[root@localhost logs]# service nginx reloadReloading ...

  5. python urljoin

    使用urllib的urljoin()拼接两个地址 urlljoin的第一个参数是基础母站的url,第二个是需要拼接成绝对路径的url. from urllib import parse url1 = ...

  6. python出现SyntaxError: Non-ASCII character '\xe6' in file \的错误

    出现这个问题的主要原因是因为python2的编码是ASCII码,文件中有中文的话就得使用utf8编码,只需要在文件的头部加上以下其中一种标注: 一.在文件头部添加如下注释码: # coding=< ...

  7. CodeForces-721A-One-dimensional Japanese Crossword

    链接: https://vjudge.net/problem/CodeForces-721A 题意: Recently Adaltik discovered japanese crosswords. ...

  8. Eigen 矩阵库学习笔记

    最近为了在C++中使用矩阵运算,简单学习了一下Eigen矩阵库.Eigen比Armadillo相对底层一点,但是只需要添加头文库即可使用,不使用额外的编译和安装过程. 基本定义 Matrix3f是3* ...

  9. XML 属性

    XML 属性 从 HTML,你会回忆起这个:<img src="computer.gif">."src" 属性提供有关 <img> 元素 ...

  10. clojure的语法糖

    语法糖很多, 就是奔这个“懒” 来用clj的. 但是,在常见的书里(<Clojure编程><Clojure编程乐趣2>)都对很多基本语法,用法都介绍不全, 不细.看书看得很累. ...