一、测试平台:
MCU:STM32F429NIH6
工具:STM32CubeMX软件
编译软件:MDK

二、配置步骤
(1).打开STM32CubeMX软件,创建新的工程文件,先生成一个的串口的收发例程,需要实现将串口收到的数据发送的出来,生成串口的例程这里不再详细介绍。
(2).生成一个SDIO的SD卡读写例程,实现对SD卡的读写,这里不做介绍。
(3).配置USB_OTG_FS,由于电路板上USB管脚连接的是PA11和PA12,所以这里配置USB_OTG_FS,Mode项配置Device Only,同时开启中断。

(4).配置USB_DEVICE,Class For FS IP项选择 Mass Storage Class,其他参数保持默认即可。

(5).需要用户实现的只有USB虚拟U盘相关的函数,都在usbd_storage_if.c文件中。需要实现以下几个函数,其中中文注释的四个为必须实现的,其它的可选

获取容量的函数

int8_t STORAGE_GetCapacity_FS(uint8_t lun, uint32_t *block_num, uint16_t *block_size)
{/* USER CODE BEGIN 3 */UNUSED(lun);//  *block_num  = STORAGE_BLK_NBR;
//  *block_size = STORAGE_BLK_SIZ;*block_num  = uSdHandle.SdCard.BlockNbr;*block_size =  uSdHandle.SdCard.BlockSize;return (USBD_OK);/* USER CODE END 3 */
}


判断U盘状态函数:

int8_t STORAGE_IsReady_FS(uint8_t lun)
{/* USER CODE BEGIN 4 */UNUSED(lun);uint8_t state = 0;state = HAL_SD_GetState(&uSdHandle) ;if(HAL_SD_STATE_READY != state){return USBD_FAIL ;}return (USBD_OK);/* USER CODE END 4 */
}


U盘读数据函数:

int8_t STORAGE_Read_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{/* USER CODE BEGIN 6 */UNUSED(lun);UNUSED(buf);UNUSED(blk_addr);UNUSED(blk_len);HAL_SD_ReadBlocks(&uSdHandle, buf, blk_addr,  blk_len, 5000);int n = 5000;while( HAL_SD_GetCardState(&uSdHandle) != HAL_SD_CARD_TRANSFER ){ if(n-- == 0) break; } ;return (USBD_OK);/* USER CODE END 6 */
}


U盘写数据函数:

int8_t STORAGE_Write_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{/* USER CODE BEGIN 7 */UNUSED(lun);UNUSED(buf);UNUSED(blk_addr);UNUSED(blk_len);int8_t state = HAL_SD_WriteBlocks(&uSdHandle, buf, blk_addr, blk_len, 5000);int n = 5000;while( HAL_SD_GetCardState(&uSdHandle) != HAL_SD_CARD_TRANSFER ){ if(n-- == 0) break; } ;return (USBD_OK);/* USER CODE END 7 */
}

利用STM32CubeMX软件生成USB_DEVICE_SD卡虚拟U盘相关推荐

  1. 利用STM32CubeMX软件生成USB_HOST_HID连接鼠标和键盘扫码枪

    一.测试平台: MCU:STM32F429IGT6 工具:STM32CubeMX软件 编译软件:MDK 二.配置步骤 (1).打开STM32CubeMX软件,创建新的工程文件,先生成一个带有freer ...

  2. 利用STM32CubeMX软件生成USB_HOST_CDC驱动ME909s-821ap(4G通信模块)

    一.测试平台: MCU:STM32F429IGT6 工具:STM32CubeMX软件 编译软件:MDK 二.配置步骤 (1).打开STM32CubeMX软件,创建新的工程文件,先生成一个不带操作系统的 ...

  3. stm32cubeMX学习十八、SD卡虚拟U盘实验

    本程序编写基于秉火霸道STM32F103ZET6运行环境. 跑这个实验之前吃了一些亏,让我一一道来! 1.软件写好了,却发现插入USB线连接到电脑后USB居然没有枚举 解决方法: 野火的这款开发板上做 ...

  4. 利用MDK软件生成bin文件的简单方法

    一.缘由: 之前学习Keil MDK-ARM软件,找了好久生成bin文件的方法,这次分享最简单的,所以写了此篇博文 二.操作步骤: 1.打开"Keil MDK-ARM软件" -找到 ...

  5. STM32CubeMX+FATFS+FREERTOS实现W25Q256虚拟U盘

    一.软件硬件说明 软件:STM32CubeMX V6.6.1 /KEIL5 V5.29 硬件:正点原子阿波罗开发板,核心板STM32F429IGT6(176脚) 使用USB_SLAVE接口连接电脑US ...

  6. 虚拟跳线软件干什么用的_疯狂刷单!用违法软件生成虚拟手机号,“骑手”半年“刷单”牟利60余万,百米内竟有万笔订单 | 申晨间...

    来源:新闻晨报 记者:吴艺璇 借助违法软件生成虚拟手机号码,利用平台审核漏洞大量注册用户,大量"刷单"骗取平台的返现和购物补贴,半年内疯狂刷1.8万余单,累计牟利60余万元. 近日 ...

  7. 【STM32利用CuBe MX生成HID设备】1-熟悉软件以及生成一个8键的游戏控制器

    文章目录 前言 一.软件下载 二.软件安装 (一)\ STM32CubeMX软件安装步骤 (二)\ Dt HID生成软件安装步骤 三.软件界面介绍 (一)\ STM32CubeMX软件界面 (二)\ ...

  8. 利用Pajek软件批量处理excel数据,批量生成网络关系图

    利用Pajek软件批量处理excel数据,批量生成网络关系图 Pajek软件大家想必都不陌生,但是我很陌生,因为我用它不是进行网络分析,而是用它来画关系图(类似网络图).但是Pajek软件手工操作时一 ...

  9. STM32SD卡实现USB虚拟U盘

    下载源码请关注公众号 之前的文章中介绍过STM32读写SD卡和FatFS文件系统相关的知识.今天将在这基础上介绍STM32通过USB口虚拟U盘的知识.即插入USB接口后,电脑将SD卡识别为U盘,可以直 ...

最新文章

  1. Hystrix 熔断器02 —— hystrix 案例之构建
  2. matlab eps 字体用AI打开乱码的解决
  3. python 堆_40道Python经典面试题(附答案)
  4. nagios监控告警之网络流量监控(附pnp模板)
  5. 推荐算法炼丹笔记:做向量召回 All You Need is 双塔
  6. 部署zabbix企业监控平台
  7. Effective Java~38. 用接口模拟可扩展的enum
  8. 交叉编译Python-2.7.13到ARM(aarch32)平台
  9. 中国太阳能窗户市场趋势报告、技术动态创新及市场预测
  10. 脚本和网络课层的联系
  11. 市场调研中的定性/定量分析
  12. 路由问题引起的怪异现象
  13. 菜鸟程序员成长之路(七)——2020年,你奋斗了吗?
  14. 服务器存档修改器,太吾绘卷存档修改器v2.6
  15. uniapp开发FFmpeg安卓原生短视频插件支持裁剪、添加背景音乐、压缩视频、视频播放器、拍照、录屏
  16. 计算机提高游戏运行速度的方法,怎么提高游戏运行速度
  17. 高鹏清华计算机系,中国最顶尖的学霸到底有多厉害?看完,膝盖已跪碎!
  18. ubuntu防火墙关闭了为什么扫描端口还是过滤状态
  19. iOS在UIButton中换行
  20. MATLAB 对多个数据自动寻峰/能谱图自动寻峰

热门文章

  1. 近期做笔试题总结和思考(百度,滴滴,360)
  2. 计算机能不能升级固态硬盘,老电脑升级固态硬盘真的能变快吗?
  3. android 微博sdk 集成 文件不存在(8998) 您所访问的站点在新浪微博的认证失败,错误码 21322
  4. 案例:世界500强如何打造汽车后市场智慧门店
  5. Java-opts变量没生效,使用JAVA_OPTS env变量运行java无效
  6. Windows系统设置多账户步骤
  7. Window设置开机自启软件的几种方式
  8. NDK - JNI官方中文资料
  9. NOIP模拟 葫芦(分数规划)
  10. C# vb .net实现玻璃桌子效果滤镜