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可用于比较两个文件中的内容的不通,很实用
上一篇:使用STM32CUBEMX生成FatFS代码,操作SPI FLASH
下一篇:STM32 USB 上位机程序实现
推荐阅读
史海拾趣
在1966年,Electro-Mech Components, Inc. (EMC)做出了一个重要的战略决策——在墨西哥北下加利福尼亚州的蒂华纳开设一家制造工厂。这个决定标志着EMC正式进军国际市场,并开始了其在全球范围内的业务布局。蒂华纳工厂的建立为EMC带来了更低的制造成本和更广阔的市场前景。随着工厂规模的逐渐扩大,EMC的产品线也日益丰富,从最初的发光按钮开关逐渐扩展到指示灯和多开关互锁组件等多个领域。
近年来,电子行业面临着技术升级、市场变革等多重挑战。AMICC积极应对这些挑战,不断调整战略和业务模式。公司加大了对新兴技术的研发投入,加快了产品更新换代的速度。同时,AMICC还加强了与产业链上下游企业的合作,共同应对市场变化。这些措施使AMICC在行业中保持了领先地位,实现了持续稳健的发展。
在发展过程中,爱普特微电子积极寻求与业界领先的供应商和合作伙伴建立稳固的合作关系。通过与这些合作伙伴的紧密合作,公司得以在技术研发、市场拓展等方面取得更大的突破。同时,公司也积极拓展海外市场,与多家国际知名企业建立了合作关系,进一步提升了公司的国际影响力。
绿宝石公司注重品牌建设和形象提升。公司加大了广告宣传的投入力度,通过电视、网络、户外广告等多种渠道进行品牌推广。此外,绿宝石公司还积极参与社会公益活动,履行企业社会责任。这些举措不仅提升了公司的知名度和美誉度,也增强了消费者对绿宝石品牌的认同感和忠诚度。
高创科技起源于1987年的以色列,最初是一家专注于直驱运动控制驱动器开发的厂商。在以色列的三十多年里,高创积累了丰富的软件算法技术,特别是在运动控制领域形成了独特优势。这种积累不仅体现在其产品的稳定性和高性能上,更为后续的技术创新和市场拓展奠定了坚实基础。
开关电源的技术追求和发展趋势 随着电子技术的高速发展,电子系统的应用领域越来越广泛,电子设备的种类也越来越多,电子设备与人们的工作、生活的关系日益密切。任何电子设备都离不开可靠的电源,它们对电源的要求也越来越高。电子设备的小型 ...… 查看全部问答∨ |
|
启动VxSim时,出现 Connecting to target agent... Error: rpccore backend client Timed out failed. 请问,这个问题我应该如何解决??… 查看全部问答∨ |
在一篇文档里面看到这样一段“位定时寄存器的设置较为复杂,这里我们使用外部晶振为 8MHz,CAN通信速率为500k/s,得到BITREG的初始值为0x2301。” BITREG的这个初始值0x2301是怎么得到的?(数据手册上的计算方法好复杂啊~) 用上面两个已知的参 ...… 查看全部问答∨ |
replyreload += \',\' + 1384338;美国国家半导体公司通信电路手册(上封面与目录) 上资料 Timson,如果您要查看本帖隐藏内容请回复… 查看全部问答∨ |
|
MonWindowsPhone报道,诺基亚是WYSIPS公司的合作伙伴之一,后者致力于研发太阳能充电屏幕,能够延展手机电池使用时间达20%。这种技术的实现原理是在屏幕和设备之间放入一种薄膜制成的半圆筒状透镜。采用这种技术的手机将可以在自然光和人工灯光下充 ...… 查看全部问答∨ |
本帖最后由 dontium 于 2015-1-23 11:50 编辑 采用 QFN 封装的 7W 立体声音频放大器。 TPA3131 是 7W 立体声音频放大器,也是第一个封装足够小、 电压轨足够低,能够适合超级本应用的-D 类放大器。 它驱动的 功率输出是集成放大器的 3 倍 ...… 查看全部问答∨ |