利用STM32CubeMX软件生成USB_DEVICE_SD卡虚拟U盘
一、测试平台:
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盘相关推荐
- 利用STM32CubeMX软件生成USB_HOST_HID连接鼠标和键盘扫码枪
一.测试平台: MCU:STM32F429IGT6 工具:STM32CubeMX软件 编译软件:MDK 二.配置步骤 (1).打开STM32CubeMX软件,创建新的工程文件,先生成一个带有freer ...
- 利用STM32CubeMX软件生成USB_HOST_CDC驱动ME909s-821ap(4G通信模块)
一.测试平台: MCU:STM32F429IGT6 工具:STM32CubeMX软件 编译软件:MDK 二.配置步骤 (1).打开STM32CubeMX软件,创建新的工程文件,先生成一个不带操作系统的 ...
- stm32cubeMX学习十八、SD卡虚拟U盘实验
本程序编写基于秉火霸道STM32F103ZET6运行环境. 跑这个实验之前吃了一些亏,让我一一道来! 1.软件写好了,却发现插入USB线连接到电脑后USB居然没有枚举 解决方法: 野火的这款开发板上做 ...
- 利用MDK软件生成bin文件的简单方法
一.缘由: 之前学习Keil MDK-ARM软件,找了好久生成bin文件的方法,这次分享最简单的,所以写了此篇博文 二.操作步骤: 1.打开"Keil MDK-ARM软件" -找到 ...
- STM32CubeMX+FATFS+FREERTOS实现W25Q256虚拟U盘
一.软件硬件说明 软件:STM32CubeMX V6.6.1 /KEIL5 V5.29 硬件:正点原子阿波罗开发板,核心板STM32F429IGT6(176脚) 使用USB_SLAVE接口连接电脑US ...
- 虚拟跳线软件干什么用的_疯狂刷单!用违法软件生成虚拟手机号,“骑手”半年“刷单”牟利60余万,百米内竟有万笔订单 | 申晨间...
来源:新闻晨报 记者:吴艺璇 借助违法软件生成虚拟手机号码,利用平台审核漏洞大量注册用户,大量"刷单"骗取平台的返现和购物补贴,半年内疯狂刷1.8万余单,累计牟利60余万元. 近日 ...
- 【STM32利用CuBe MX生成HID设备】1-熟悉软件以及生成一个8键的游戏控制器
文章目录 前言 一.软件下载 二.软件安装 (一)\ STM32CubeMX软件安装步骤 (二)\ Dt HID生成软件安装步骤 三.软件界面介绍 (一)\ STM32CubeMX软件界面 (二)\ ...
- 利用Pajek软件批量处理excel数据,批量生成网络关系图
利用Pajek软件批量处理excel数据,批量生成网络关系图 Pajek软件大家想必都不陌生,但是我很陌生,因为我用它不是进行网络分析,而是用它来画关系图(类似网络图).但是Pajek软件手工操作时一 ...
- STM32SD卡实现USB虚拟U盘
下载源码请关注公众号 之前的文章中介绍过STM32读写SD卡和FatFS文件系统相关的知识.今天将在这基础上介绍STM32通过USB口虚拟U盘的知识.即插入USB接口后,电脑将SD卡识别为U盘,可以直 ...
最新文章
- Hystrix 熔断器02 —— hystrix 案例之构建
- matlab eps 字体用AI打开乱码的解决
- python 堆_40道Python经典面试题(附答案)
- nagios监控告警之网络流量监控(附pnp模板)
- 推荐算法炼丹笔记:做向量召回 All You Need is 双塔
- 部署zabbix企业监控平台
- Effective Java~38. 用接口模拟可扩展的enum
- 交叉编译Python-2.7.13到ARM(aarch32)平台
- 中国太阳能窗户市场趋势报告、技术动态创新及市场预测
- 脚本和网络课层的联系
- 市场调研中的定性/定量分析
- 路由问题引起的怪异现象
- 菜鸟程序员成长之路(七)——2020年,你奋斗了吗?
- 服务器存档修改器,太吾绘卷存档修改器v2.6
- uniapp开发FFmpeg安卓原生短视频插件支持裁剪、添加背景音乐、压缩视频、视频播放器、拍照、录屏
- 计算机提高游戏运行速度的方法,怎么提高游戏运行速度
- 高鹏清华计算机系,中国最顶尖的学霸到底有多厉害?看完,膝盖已跪碎!
- ubuntu防火墙关闭了为什么扫描端口还是过滤状态
- iOS在UIButton中换行
- MATLAB 对多个数据自动寻峰/能谱图自动寻峰
热门文章
- 近期做笔试题总结和思考(百度,滴滴,360)
- 计算机能不能升级固态硬盘,老电脑升级固态硬盘真的能变快吗?
- android 微博sdk 集成 文件不存在(8998) 您所访问的站点在新浪微博的认证失败,错误码 21322
- 案例:世界500强如何打造汽车后市场智慧门店
- Java-opts变量没生效,使用JAVA_OPTS env变量运行java无效
- Windows系统设置多账户步骤
- Window设置开机自启软件的几种方式
- NDK - JNI官方中文资料
- NOIP模拟 葫芦(分数规划)
- C# vb .net实现玻璃桌子效果滤镜