STM32H750,usb虚拟串口添加切换USB读取sd卡(读卡器模式)笔记

第一usb驱动修改:

分为两个模式初始化,cdc,msc初始化

 

 

第二修改驱动配套函数

根据需要修改这两个文件,把有关联的函数变量全部键两份,一份给cdc串口模式使用,一部分给msc读内存卡使用。

增加下面函数(相当于复制后修改参数)

例子:

修改下面代码,对应cdc和mcs模式。

修改上面完上面所说的部分之后两个模式的初始化就完成了。

第三msc模式链接sd卡

后面修改读取内存卡部分(前提是你的sd卡已经是可以进行读写了,我使用的是sdmmc搭载fatfs文件系统)。

打开上图框起来的msc的点c文件

添加头文件

  1. 添加初始化sd卡.
  1. 获取sd卡信息
  1. 检查介质状态,这里我们检查的是SD卡

4.读sd卡

 

  1. 写sd卡

修改完之后发现会有问题,可以识别U盘的图标但是无法打开,也就是说SD卡无法正常读取。通过Debug发现,初始化SD卡的时候卡住了。

走到stm32h7xx_hal_sd.c库函数里面的一个delay的延时里面。

这个是用来检测SDMMC时钟频率(以赫兹为单位)。如果时钟频率为零,意味着时钟尚未被配置或启用,因此不需要等待时钟稳定。总的来说,这段代码的目的是确保在SDMMC时钟启用后,有足够的时间让时钟稳定下来,以便于后续的SD卡通信。

但是我们系统设计的时候已经确保在sdmmc_clk被设置后,SDMMC时钟会立即稳定,那么这段延迟代码就不再是必需的。我们要求sd卡实时性是比较高的,这种延时函数有可能对我们的系统性能有一定影响,即使是短暂的延迟也可能造成问题。

无法打开U盘的根本原因可能是sdmmc_clk的值异常(例如,由于错误配置导致值过大或过小),这段代码引起意外的行为。所以暂时屏蔽了这段代码

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值