[SDCard_FatFs笔记][一]STM32F7使用SDMMC外设移植FatFs遇到f_mount挂载成功,而f_open函数未运行的解决方法

关于STM32F7使用SDMMC外设移植FatFs遇到f_mount 挂载成功,而f_open 函数未运行的解决方法

本文开发环境:

  • [ IDE环境:Keil_MDK_5.28 ]
  • [ MCU型号:STM32F723 ]

这是我在main()函数内的代码,完成SDMMC和FatFs的初始化后打印SD卡的信息及操作步骤的反馈信息,如果正常的话应该会在SDCard里新建一个test.txt的文件;
在这里插入图片描述

但事实上打印出来是这样:
在这里插入图片描述
挂载成功后,f_open函数没有正常运行,(没有打印Code值),在Fatfs初始化函数中设置打印看程序是否运行
在这里插入图片描述
发现没什么卵用,最后通过仿真发现代码运行到这里卡死:
也就是HAL库文件下的stm32f7xx_hal_sd.c的SD_FindSCR(SD_HandleTypeDef *hsd, uint32_t *pSCR)函数下
在这里插入图片描述

最后发现问题出在SDMMC的初始化函数中,下面这是没能正常工作的代码:
在这里插入图片描述
下面这个是修改过后的代码:
在这里插入图片描述
在HAL_SD_Init()初始化之前需要将BusWide设置为1位宽度,在SD的完成初始化后再将位宽设置为4位,重新编译,下载,实验现象:
在这里插入图片描述
查看内存卡内是否新建了test.txt文件
在这里插入图片描述
创建文件成功,实验正常;

肝了一天两夜,好在问题发现了,先记个笔记,怕以后再用到的时候又出现这个问题,也希望对卡在这里的人有些帮助;
至于这个问题好像是SD的规范吧,必须要设置为1位,初始化后为4位,当然你也可以一直用1位没什么影响,这个下去在学习学习!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值