STM32 USB软件移植注意事项 及硬件接线注意
2015-02-05 11:30
267 查看
移植了个自定义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+是否上拉来识别是否有设备插入的。
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+是否上拉来识别是否有设备插入的。
相关文章推荐
- 大数据基础环境搭建的从spark到hadoop,从底层硬件到上层软件的一些必备注意事项
- STM32硬件电路设计注意事项
- STM32硬件电路设计注意事项
- LWIP 移植 stm32 注意事项
- USB在硬件设计是的注意事项
- 将32位代码向64位平台移植的注意事项(转)
- 是你吗?为超炫的 USB 硬件编写更好的软件
- 加密狗,USB加密狗,防破解硬件加密狗锁-软件保护加密标准--圣天狗-湖北武汉凡高
- 浅谈软件开发中的注意事项
- 软件开发之项目需求管理简述及个人项目几点管理实践注意事项[转]
- oracle数据库移植到postgresql数据库的注意事项(转载)
- 软件开发中的注意事项
- MicroStation VBA程序软件发布注意事项
- 同步软件不能连接注意事项
- 手机软件开发注意事项
- 【转】软件设计师考试注意事项
- J2ME软件的逆向工程注意事项(一)
- 2008秋季-计算机软件基础-作业和实验报告注意事项
- linux下普通用户安装软件注意事项
- linux C++ 代码程序移植到 windows 上注意事项