既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
只说解决方法不介绍软件环境的就是耍流氓!
软件环境:STM32CubeMX V4.25.0+STM32Cube FW_F4 V1.21.0
软件环境非常重要,检查下自己不是这个版本就不要照着操作了,解决方法仅供参考,如果版本一致,100%问题会解决
简单介绍下遇到的问题
按照网上能搜到的说法,使用CubeMX配置SDIO+FatFS,DMA方式读写SD卡,执行
f_mount(&SDFatFS, (TCHAR const*)SDPath, 1);
f_open(&SDFile, "STM32.TXT", FA_CREATE_ALWAYS | FA_WRITE);
这两步都正常,并且可以创建文件,但是到这一步
retSD = f_write(&SDFile, wtext, sizeof(wtext), (void *) & byteswritten);//写入内容
retSD返回值为1,查错误代码为
FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */
然后就在各种博客各种论坛找各种解决方法,都得不到解决,
插入下之前尝试过哪些操作吧:
怀疑时钟频率太高,分频系数设置为200,失败
怀疑SDIO_BUS_WIDE_4B有问题改为SDIO_BUS_WIDE_1B,失败
怀疑SDIO_IRQn中断与DMA中断冲突,改中断优先级,失败
怀疑DMA_PRIORITY_LOW中断优先级太低,改为DMA_PRIORITY_HIGH,失败
怀疑SD卡格式有问题不支持,各种格式化,FAT,FAT32,各种单元大小组合,失败
怀疑SD卡兼容性不好,更换SD卡,失败
怀疑FatFS设置有问题,设置各种选项测试,失败
怀疑SDIO管脚配置没有开上拉,设置上拉,失败
怀疑SDIO没初始化,再次初始化,失败
踩坑完毕
最后在ST官方的例子中找到解决方法,耗时两天时间终于解决了,如果你看到这篇博客,那么恭喜你,各种坑我都帮你踩过了,你节省了两天时间,不煽情,直接看代码
CubeMX(正确)设置如下
其它保持默认
代码变更部分
fatfs.c
void MX_FATFS_Init(void)
{
/*## FatFS: Link the SD driver ###########################*/
retSD = FATFS_LinkDriver(&SD_Driver, SDPath);
/* USER CODE BEGIN Init */
/* additional user code for init */
f_mount(&SDFatFS, (TCHAR const*)SDPath, 1);//挂载SD卡
/* USER CODE END Init */
}
重点来了
在bsp_driver_sd.c里增加以下代码
/* USER CODE BEGIN BeforeCallBacksSection */
/* can be used to modify previous code / undefine following code / add code */
/* USER CODE END BeforeCallBacksSection */
/**
* @brief SD Abort callbacks
* @param hsd: SD handle
* @retval None
*/
void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd)
{
BSP_SD_AbortCallback();
}
/**
* @brief Tx Transfer completed callback
* @param hsd: SD handle
* @retval None
*/
void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd)
{
BSP_SD_WriteCpltCallback();
}
/**
* @brief Rx Transfer completed callback
* @param hsd: SD handle
* @retval None
*/
void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd)
{
BSP_SD_ReadCpltCallback();
}
/* USER CODE BEGIN CallBacksSection_C */
/**
* @brief BSP SD Abort callback
* @retval None
*/
__weak void BSP_SD_AbortCallback(void)
{
}
/**
* @brief BSP Tx Transfer completed callback
* @retval None
*/
__weak void BSP_SD_WriteCpltCallback(void)
{
}
/**
* @brief BSP Rx Transfer completed callback
* @retval None
![img](https://img-blog.csdnimg.cn/img_convert/715a3667716294f3e07b10ef22825cc2.png)
![img](https://img-blog.csdnimg.cn/img_convert/067a9500348c96375b003377e6ae4f57.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**
**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**
部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**
**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**