做了个项目,想使用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 里有
这里分类成3种,我的应用即采用Host应用即可;
继续打开USB_Host_Examples
这里面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,不打就过了,后来就好了,不知道什么原因,新手不知道原因,见谅,我只说发生过的现象;
具体原理,大家自寻资料