使用STM32,接触USB功能

做了个项目,想使用USB接口直接升级单机里的程序,也看了些网上高手写的东西,有个博主写的很经典,复制下链接:https://blog.csdn.net/qq_33487044/article/details/78566292?locationNum=10&fps=1,其它对我帮助比较大的我https://blog.csdn.net/little_shrimp/article/details/53199165  和https://blog.csdn.net/love33521/article/details/8535050这2篇文章;

这里复述一次,需要几个方面:

1、MCU需要有USB接口;

2、要有FIL系统;

3、要带系统,最简单就是采用开源的免费的FREERTOS系统;

以下简单就第1点简述下自己开发过程中碰到的问题;

开发环境:IAR,STM32F205,FREEROTS10.0.1,FIL

前提硬件一定要对;

1、首先去官方下了有关USB的程序库文件,找到了有关文件STM32_USB-Host-Device_Lib_V2.2.0

在Project 里有

使用STM32,接触USB功能_第1张图片

这里分类成3种,我的应用即采用Host应用即可;

继续打开USB_Host_Examples

使用STM32,接触USB功能_第2张图片

这里面MSC就是我需要的大容量USB例程,这里面有工程和源文件可以放进IAR进行编译;

但MCU与例程有些不一样,所以需要更改些东西;

1、更改接口定义 ,在USB_BSP.C的USB_OTG_BSP_Init里;

2、USB_OTG_BSP_ConfigVBUS()这个函数用于设置电源参数,其它可以暂时不用更改;

3、用户需要更改的为USBH_USR_MSC_Application()这个函数里的内容,库例程里已经有读文件名、写文件、读文件等内容;

4、对文件系统要有一定的了解;

5、要注意,HEAP与STACK的大小,尽量先往大的填写,因为你不知道需要 多大的空间,我用的是FREERTOS系统,一开始USB任务分配的空间不足,弄了好一阵子不知道什么原因就是过不了;

6、USB里面的延时函数,例程里采用的时基延时,采用FREERTOS时基没有用上,我采用系统延时,虽然现在用的不错,后续需要更改;

7、例程里FIL系统DISKIO。C没有采用,STM32重新做了个;

8、调试过程中有个现象,有时候打断点,会过不了USB,不打就过了,后来就好了,不知道什么原因,新手不知道原因,见谅,我只说发生过的现象;

具体原理,大家自寻资料




你可能感兴趣的:(USB)