历史上的今天

今天是:2024年09月17日(星期二)

2018年09月17日 | STM32F4中USB与PC双向通信

发布者:自由漫步 来源: eefocus关键字:STM32F4  USB  PC  双向通信 手机看文章 扫描二维码
随时随地手机看文章

STM32F4系列处理器内部集成了USB-OTG控制器,在不要外部USB IC下就可以实现USB通信,最近两天看了下如何利用STM32的USB实现通信,记录下关键步骤:

1. 从http://www.stmcu.org/document/list/index/category-524下载所需要的USB_OTG主机和设备库;

2. 新建STM32工程,并把STM32_USB-Host-Device_Lib下的Libraries中的3个USB库放到工程文件中;

3.在Keil中建立USB相关文件夹,并加入相应的驱动文件:(可参考STM32_USB-Host-Device_Lib—>Project—>USB_Device_Examples—>HID,指示官方给的HID例程是用按键作为鼠标与PC连接),建立好的工程文件如下图:

4. 修改驱动文件,其中usb_hid_core.c位于STM32_USB-Host-Device_Lib—>Project—>USB_Device_Examples—>HID,即官方给的驱动。主要修改以下几个文件:usb_bsp.c(USB引脚初始化,可只需要两根数据引脚),usbd_desc.c(USB设备描述符,当然这个也可以不用修改,采用默认即可),usbd_usr.c(用于设备连接过程的信息显示),usbd_hid_core.c(此为重点修改文件,主要在USBD_HID_cb中添加USBD_HID_DataOut,USBD_HID_CfgDesc中添加HID_OUT_EP,修改HID_MOUSE_ReportDesc,USBD_HID_Init中添加DCD_EP_PrepareRx,并添加USBD_HID_DataOut函数)

5. 修改了usbd_hid_core.c后,同时需要修改usbd_hid_core.h中的USB_HID_CONFIG_DESC_SIZ等参数。注:HID_MOUSE_ReportDesc参数含义不是很清楚。

6. 添加USB FS中断服务函数

void OTG_FS_IRQHandler(void)
{
  USBD_OTG_ISR_Handler(&USB_OTG_dev);
}

7. 完成上述部分内容后,便可实现STM32与PC机双向通信,发送函数调用USBD_HID_SendReport,接收函数调用USBD_HID_DataOut(数据存储在USBD_HID_DataOut一个字符数组中)。

附言:可以通过PortHelper调试助手完成USB调试,Beyond Compare可用于比较两个文件中的内容的不通,很实用


关键字:STM32F4  USB  PC  双向通信 引用地址:STM32F4中USB与PC双向通信

上一篇:使用STM32CUBEMX生成FatFS代码,操作SPI FLASH
下一篇:STM32 USB 上位机程序实现

推荐阅读

   2018年09月17日08:02  新浪数码   我有话说(88人参与) 收藏本文     “白苹果”是iOS常见的重启标志  新浪数码讯 9月17日上午消息,一些软件安全研究人员发现了一个新的漏洞,可以使iPhone或Mac崩溃并重启。他们公布了一个只有15行代码的网页,访问这个页面就会让iPhone或iPad崩溃。  有人在开原网站github上发布了相关信息,包括bu...
#include "UART.H" /*-------------------------串口初始化函数------------------------*/ /************************************************************ 函数名称:void UART2_Init(void)** 功能描述:UART2初始化函数** 参数列表:无* * 返回结果:无***********************************************************/void UART2_Init(void){ ...
9月15日,以“智能、互联——赋能产业新发展”为主题的第22届中国国际工业博览会在上海正式开幕。机器人一直是工博会上最引人瞩目的展品,本届工博会,国内外企业都拿出了自己的“看家产品”,让参展观众一饱眼福。看完了工博会我想来聊一聊工博会机器人UX交互。说实话,大部分机器人行业工程师,都乐于拥抱传统示教器。他们足够稳定,适应各种工业环境,...
myPalletizer小象码垛机械臂由大象机器人和M5stack联合研发,是继小象码垛机械臂、小象协作机械臂之后,大象机器人轻量级产品线的又一力作。小象码垛机械臂自重仅960g,体积小重量轻但功能强大,既可搭配多种末端执行器适配多种应用场景,也可支持多平台软件的二次开发,满足科研教育、智能家居、个人开发应用等各种场景需求。实现用户个性化定制,是生产...

史海拾趣

问答坊 | AI 解惑

开关电源的技术追求和发展趋势

开关电源的技术追求和发展趋势   随着电子技术的高速发展,电子系统的应用领域越来越广泛,电子设备的种类也越来越多,电子设备与人们的工作、生活的关系日益密切。任何电子设备都离不开可靠的电源,它们对电源的要求也越来越高。电子设备的小型 ...…

查看全部问答∨

使用Tornado,启动VxSim时出现错误

启动VxSim时,出现     Connecting to target agent...     Error: rpccore backend client Timed out failed. 请问,这个问题我应该如何解决??…

查看全部问答∨

请教C8051F040 REGBIT位定时寄存器设置问题

在一篇文档里面看到这样一段“位定时寄存器的设置较为复杂,这里我们使用外部晶振为 8MHz,CAN通信速率为500k/s,得到BITREG的初始值为0x2301。” BITREG的这个初始值0x2301是怎么得到的?(数据手册上的计算方法好复杂啊~) 用上面两个已知的参 ...…

查看全部问答∨

台式机双显示器

为了看资料方便,编程弄东西时候不用来回切换界面,今天我兴致一高,买了个DVI转VGA的接口,把我自己组装的电脑,用实验室的大头显示器安了显示器扩展,虽然辐射大了点,不过确实很方便哈哈哈,有时间去二手市场看看有没有便宜的液晶显示器买一个哈 ...…

查看全部问答∨

HPI

现在要通过HPI启动DM642,ARM用的是PXA255,出现几个问题 1.读控制寄存器,地址寄存器,数据寄存器以后,再跟其他的读写操作,ARM运行就会报错 2.一个HELLOWORLD改编的点灯程序加载进去以后可以启动,但是另外一个程序启动不了 启动不了的程序比较大,有 ...…

查看全部问答∨

在主题下写点评,是怎么操作的?

看到主题下的点评不错,能让lz很快知道一些信息,请问是怎么操作的?…

查看全部问答∨

美国国家半导体公司通信电路手册

replyreload += \',\' + 1384338;美国国家半导体公司通信电路手册(上封面与目录) 上资料 Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答∨

诺基亚光照充电手机可能今秋上市,让手机晒太阳

MonWindowsPhone报道,诺基亚是WYSIPS公司的合作伙伴之一,后者致力于研发太阳能充电屏幕,能够延展手机电池使用时间达20%。这种技术的实现原理是在屏幕和设备之间放入一种薄膜制成的半圆筒状透镜。采用这种技术的手机将可以在自然光和人工灯光下充 ...…

查看全部问答∨

采用 QFN 封装的 7W 立体声音频放大器

本帖最后由 dontium 于 2015-1-23 11:50 编辑 采用 QFN 封装的 7W 立体声音频放大器。 TPA3131 是 7W 立体声音频放大器,也是第一个封装足够小、 电压轨足够低,能够适合超级本应用的-D 类放大器。 它驱动的 功率输出是集成放大器的 3 倍 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved