用STM32CubeMX快速生成一个U盘模拟程序前提:默认已经装好MDKV5和STM32CubeMX。Step1.新建工程选择芯片型号。Step2.配置时钟引脚。Step3.配置USB引脚。Step4.配置USB设备类。Step5.配置时钟树,USB模块输入要求为48MHz时钟。Step6.配置USB设备描述符。此处默认即可。Step7.生成MDK工程及代码。特别注意,一定要加大堆栈大小,否则USB设备无法启动。Step8.打开MDK工程。Step9.选择芯片型号。Step10.编译工程。Step11.编译下载运行。运行程序后,通过USB线链接电脑,将出现如下提示信息。查看“设备管理器”,可以看到USBMSC设备。“我的电脑”界面下可以可移动磁盘。但是,双击无法打开,出现格式化提示。进入格式化对话框,可以看到磁盘总容量是32MB。实际上无法进行格式化操作。Step12.修改代码。只需修改usbd_storage_if.c文件。将60行的宏定义改为200,即将要模拟的U盘有200个扇区。61行是扇区大小定义512。用60,61行的宏,定义一个二维数组,这个数组就是将要模拟的U盘的实际存储空间。因此该U盘总容量为100KB。然后为两个函数添加功能,一个是读块,一个是写块。他们是对msc_data数组的读写操作。操作规则就和SD卡一样,按照512字节为一个扇区进行整体的读/写。Step13.再次编译下载运行。运行程序后,通过USB线链接电脑,不再像前一次一样出现很多提示信息,只是在任务栏最右边出现U盘插入的图标。在“我的电脑”界面下可以看到“可移动磁盘”。双击无法打开,提示进行格式化,点“是”进入格式化窗口。可以看到U盘容量为100KB。勾选“快速格式化”,点击“格式化”按钮。不支持普通格式化,我也没弄清楚原因。格式化完成后,就可以双击打开这个“U盘”了,这是一个可以进行读写的U盘。将这个U盘弹出,然后断开USB链接线,然后再重新连接,就可以被360U盘助手发现了。实际可用空间为81920字节。下图是我在U盘中新建一个txt文件后的结果。Adelu深圳2016-6-4