STM32 USB软件移植注意事项 及硬件接线注意

发布者:真诚友谊最新更新时间:2019-03-18 来源: eefocus关键字:STM32  USB  软件移植 手机看文章 扫描二维码
随时随地手机看文章

移植了个自定义HID USB程序到STM32开发板上,成功运行,但是最近自己做的板子上(用的是F103C8T6)就不行,死活没有反应。经过几番调试终于发现问题,以下做个小结:


1.一定要保证USB时钟是48MHZ;


 使用PLL作系统时钟SCLK;而USB时钟只能是SCLK的1分频或者1.5分频,要得到48MHZ的USB时钟,则SCLK只能为48MHZ或者72MHZ;由于我是用的内部晶振8MHZ,PLL时钟最大是8MHZ Div2 再倍频16 也就是最大只能到64MHZ,所以只能配成48MHZ才能满足要求;如果使用外部晶振,PLL可以直接倍频HSE 而不用Div2;


2.注意中断向量名称;


由于我使用的是Keil 里面ST的例程来移植的,里面用的启动文件是stm32f10x_vector.s,对应USB的中断向量如下:


 


而我自己的启动文件是startup_stm32f10x_md.s,对应的USB中断向量如下:


 


所以写中断函数的时候,名字一定要改成与启动文件里的一致:


 


3.硬件接线也需要特别注意:


USB的D+,D-,对应DP,DM,一定要记得在D+上接一个上拉电阻,通过IO口去控制上拉,直接接上拉的话理论上也是可以的,因为host端是根据D+是否上拉来识别是否有设备插入的。


关键字:STM32  USB  软件移植 引用地址:STM32 USB软件移植注意事项 及硬件接线注意

上一篇:STM32第一个demo与软件设置
下一篇:STM32F103串口通讯注意事项

推荐阅读最新更新时间:2024-03-16 16:26

Stm32 IAP程序编写及用户程序编写
Stm32f10x系列MCU Bootloader 流程 芯片:stm32f103ze 所需软件:SecureCRT (用于使用Ymode协议发送Application文件),其实应该我们自己写个上位机,这里借助SecureCRT来充当我们自己写的应用程序(用于验证Bootloader是否成功)。 keil版本:μVision V5.11.0.0 用途:使用通信接口用于软件的更新(免去拆机繁琐的流程)。 BootLoader其实看上去挺复杂的样子,但也还好~仔细查找网上的资料都有很多介绍,以下为自己做bootloader的过程以及应注意的事项,帮助大家少走弯路~ 请先下载我上传的资源: http://download.c
[单片机]
<font color='red'>Stm32</font> IAP程序编写及用户程序编写
Linux系统下USB摄像头驱动开发
摘要:介绍了在Iinux系统下开发符合Video for Linux标准的USB摄像头驱动的方法,并对该标准提出“不间断采集”的改进思路,配合双URB、双帧缓冲等方法,提高采集速度。 关键词:Linux设备驱动 USB摄像头 Video for Linux 不间断采集 USB摄像头以其良好的性能和低廉的价格得到广泛应用。同时因其灵活、方便的特性,易于集成到嵌入式系统中。但是如果使用现有的符合Video for Linux标准的驱动程序配合通用应用程序,难以充分利用USB带宽,帧速不高,不易满足实时监控等要求。本文首先介绍在Linux系统下USB摄像头驱动编制的一般方法,然后说明在此基础上如何提高帧速。 1 Linux系统中
[应用]
2000B系列经济型USB示波器的性能特点分析
产品简介: 价格超级棒的示波器 PicoScope2000B系列提供2和4通道型号的多种选择,加上具有2模拟+16数字通道的混合信号示波器型号。所有型号都包含频谱分析仪、函数发生器、任意波形发生器和串行总线分析仪,混合信号示波器还拥有逻辑分析仪。 PicoScope2000B系列新增效益包括深度缓存(最大128MS)、更高带宽(最大100MHz)和更快的波形刷新率,给你必要的性能轻松完成先进的波形分析,包括串行解码和绘制频率对时间的图形。 混合信号性能 PicoScope2000B系列混合信号示波器都有2模拟和16数字输入,让你同时观察你的数字和模拟信号。数字输入可独立显示或者任意编组显示。 强大、便携又超小 所有Pi
[测试测量]
stm32定时器输出移相PWM
背景:由于项目需要,需要stm32输出任意相角度的PWM 前提知识: 1、stm32定时器的Tim,一般有多个OC。具体差别根据型号来定。 2、定时器的使能,理论上是多个通道同时使能 3、TIM_OCInitStructure.TIM_OCMode 的其中一个参数是 TIM_OCMode_Toggle。它的意思是计数达到比较值的时候,输出电平翻转 4、由第3点可知,移相占空比固定在了50% 5、定时器的计数方式只能为上升计数或者下降计数 6、下图为原理图 (其实,只用设计每个OC的翻转点,就能转化为相应的移相角) 关键代码: 配置通道输出方式: 配置ARR的值为2000,即一个周期计数值为2000:
[单片机]
<font color='red'>stm32</font>定时器输出移相PWM
业界首款自动USB检测功能的线性电池充电器
  日前,德州仪器 (TI) 宣布面向单节锂离子电池供电的电子产品推出两款具有自动 USB 检测功能的 800 mA USB 电池充电器系列产品。该 bq2404x 与 bq2405x 电池充电器集成电路支持高达 30 V 的高输入电压范围,并提供 6.6 V 过压保护功能,可支持从入门级功能手机到智能手机的各种手持设备以及其它可能使用低成本适配器的低功耗手持设备。   bq2405x 的自动 USB 检测功能可自动检测出电源是专用电源适配器还是 USB 端口,这样系统就可在电池彻底放电导致 USB 收发器不可用的情况下,立即启动快速充电。   bq2404x 与 bq2405x 电池充电器的主要特性:   * 充电准确
[电源管理]
STM32单片用什么编程?如何学习STM32单片机开发
曾经,有一个老板跟我说,很羡慕我们这些做技术的。 我们都感觉有点讽刺,一个身价上千万的人,羡慕我们这些年收入不到20万的。 不过从他的说话方式来看,似乎是认真的,他说他也喜欢研究技术,只是年纪大了,学不动了。 不管你身在处于什么身份,相信每个男人心中啊,都有一个创客梦。 先不说通过技术去改变世界了,大多数人都是普通人,不是托尼史塔克。 不过即便是自己动手DIY一个小发明,写个小程序,烧录进去,让这个小玩意按照自己的程序逻辑去执行,也是成就感满满的。 当初,我也是这样被骗进单片机开发这个行业的,没想到一入坑就10年。 这10年技术生涯,虽然没让我过上衣食无忧的生活(这个完全是自己的问题),但是至少我现在想做一个什么小发明还是游刃有余
[单片机]
usb无法识别怎么办?教你解决!
现在的普通用户基本上都有个usb设备,那么当遇到 系统 无法识别usb设备,也没有出现可移动硬盘时,我们该怎么办呢?造成USB设备无法识别的故障是由于很多原因引起的,包括软、硬件,那我们该如何解决这个问题呢? 步骤/方法 首先将usb设备插入计算机接口,然后在桌面左下角单击“开始”菜单,单击“运行”命令,打开框中键入“cmd”命令,单击“确定”按钮 启动命令提示符窗口,分别执行以下两条命令 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "DEVMGR_SHOW_DETAILS
[嵌入式]
使用变参函数实现STM32串口的简易printf功能
第一,去掉了原来使用的goto语句,因为C语言中除了错误处理之外,不建议使用goto语句; 第二,fmt和pnt的含义更加明确,它们始终指向下一个需要处理的字符和变参; 第三,整理了程序结构,使它更加清晰。 void uart_printf(USART_TypeDef *USARTx, char *fmt, ...) { char *pnt = (char *)&fmt + sizeof(fmt); int len; while (*fmt != '') { if (*fmt == '%') { if (*(fmt + 1) == 'c') { uart_send_byte(
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved