STM32F7+STM32CubeMX5.21+SD+FATFS

1、STM32CubeMX配置

时钟配置

SDMMC配置

  Connectivity->SDMMC1
    MODE选择: SD 4 bits Wide bus
    NVIC Setting

  DMA Setting设置DMA读写。

  修改CDMMC传输时钟分频。
  /* SDMMC Data Transfer Frequency (25MHz max) */
  APB2=108MHZ, 108/6=18MHZ。频率过高读写SD卡是会出现FR_DISK_ERR错误。

  其他默认

FATFS配置

  Middleware->FATFS
  在FATFS配置中选择简体中文字GBK编码支持中文,使能长文件名,缓存存储在堆(STACK)中。
  Set->Defines修改两项
  其他默认

  点击菜单栏中Project->Setting修改堆的大小,堆设置为0x1000。

2、main函数增加FASFS相关测试代码段。

  挂载工作区时,调用bsp_driver_sd.c函数BSP_SD_Init()进行SD卡初始化设置。

/********************************************************************************* @file           : main.c* @brief          : Main program body******************************************************************************* @attention** <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.* All rights reserved.</center></h2>** This software component is licensed by ST under Ultimate Liberty license* SLA0044, the "License"; You may not use this file except in compliance with* the License. You may obtain a copy of the License at:*                             www.st.com/SLA0044********************************************************************************/
/* USER CODE END Header *//* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "dma.h"
#include "fatfs.h"
#include "sdmmc.h"
#include "gpio.h"/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);HAL_SD_CardInfoTypeDef  SDCardInfo; FRESULT ret_sd;uint8_t rtext[100];                     /* File read buffers *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN PV *//* Private variables ---------------------------------------------------------*/BYTE work[_MAX_SS];FATFS fs;                 // Work area (file system object) for logical driveFIL file;                  // file objectsuint32_t byteswritten;                /* File write counts */uint32_t bytesread;                   /* File read counts */uint8_t wtext[] = "STM32 working with FatFs Test"; /* File write buffer */char filename[] = "STM32cube.txt";/* USER CODE END PV *//* Enable I-Cache---------------------------------------------------------*/SCB_EnableICache();/* Enable D-Cache---------------------------------------------------------*/SCB_EnableDCache();/* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* Configure the system clock */SystemClock_Config();/* Initialize all configured peripherals */MX_DMA_Init();           //开启DMA相关时钟、设置中断优先级MX_SDMMC1_SD_Init(); //设置SD初始化变量,并未进行初始化MX_FATFS_Init();      //链接兼容的diskio驱动程序并增加活动数量链接驱动程序,创建盘符/*----------------------- 文件系统测试:挂载测试 -----------------------------*/ret_sd = f_mount(&fs, "0:", 1);   //挂载工作区/* 如果没有文件系统就格式化创建创建文件系统 */if(ret_sd == FR_NO_FILESYSTEM){/* 格式化 */ret_sd=f_mkfs("0:", FM_FAT, 0, work, sizeof(work));                           if(ret_sd == FR_OK){/* 格式化后,先取消挂载 */ret_sd = f_mount(NULL,"0:",1);          /* 重新挂载 */          ret_sd = f_mount(&fs,"0:",1);}else{//格式化失败while(1);}}else if(ret_sd!=FR_OK){//SD卡挂载文件系统失败//可能原因:SD卡初始化不成功while(1);}/*----------------------- 文件系统测试:写测试 -----------------------------*//* 打开文件,如果文件不存在则创建它 */ret_sd = f_open(&file, "STM32.txt", FA_CREATE_ALWAYS | FA_WRITE );if ( ret_sd == FR_OK ){//打开/创建FatFs读写测试文件.txt文件成功,向文件写入数据。//* 将指定存储区内容写入到文件内 */ret_sd=f_write(&file, wtext,sizeof(wtext),&byteswritten);/* 不再读写,关闭文件 */f_close(&file);}/*------------------- 文件系统测试:读测试 ------------------------------------*/ret_sd = f_open(&file, "STM32.txt", FA_OPEN_EXISTING | FA_READ);     if(ret_sd == FR_OK){//打开文件成功ret_sd = f_read(&file, rtext, sizeof(rtext), &bytesread);       }/* 不再读写,关闭文件 */f_close(&file);  /* 不再使用文件系统,取消挂载文件系统 */f_mount(NULL,"0:",1);HAL_SD_GetCardInfo(&hsd1, &SDCardInfo);while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

STM32 SD FatFs读写文件FR_DISK_ERR错误可能原因
STM32读取sd卡数据卡死可能原因
STM32 SD卡拔插后FatFs挂载失败可能原因
代码下载 0积分,可能会被系统设置积分

STM32F7+STM32CubeMX5.21+SD+FATFS相关推荐

  1. STM32 SD FatFs读写文件FR_DISK_ERR错误可能原因

      使用STM32F7+STM32CubeMX5.21生成SD-FATFS代码,读写文件失败报FR_DISK_ERR错误可能原因:   SDMMC传输频率过高.修改SDDMMC传输时钟分频系数.    ...

  2. 21 SD配置-主数据-客户账户组分配编号范围

    业务背景:客户账户组分配编号范围 事务码:OBAR SPRO路径:SPRO->财务会计(新)->应收账款和应付账款->客户账户->主数据->创建客户主数据的准备-> ...

  3. DSML:深度子空间相互学习模型(用于癌症亚型预测)

    目录 背景描述 模型架构 数据表示 Single level omics data representation learning model(单级组学数据表示学习模型) Multi-level om ...

  4. statsby: 不用循环语句的循环

        作者:胡雨霄 (伦敦政治经济学院)   Stata 连享会: 知乎 | 主页 | 码云 | CSDN   连享会 - 与君分享 lianxh.cn 文章目录 1. statsby 命令简介 S ...

  5. 学编程会拉低数学成绩,巴黎大学跟踪1500个小学生得出结论

    "怎么培养数学逻辑思维?来点编程试试?" 大概这是很多人的既有认知,毕竟感觉程序员们的数学都挺好的. 巴特,反转来了. 来自巴黎大学的研究人员发现,小学生改用编程课学数学后,对成绩 ...

  6. ALIENTEK MiniSTM32开发板结构功能

    前两天才收到这款板子,看起来还不错,对板子的各部分功能才有了基本的认识 1.HS0038红外接收头    用于接受购买板子时配带的红外遥控器的信号 ,这样用板子就可以控制开发板 2.DS18B20预留 ...

  7. Siemens PPI协议分析

    大家好:我是山东临沂的郝金红,PLC解密网是我的个人网站.由于前段时间的疯狂的研究西门子PPI协议解密之故,所以无心插柳的研究出了较实用的西门子S7-200 PPI协议,今天奉献大家.我们经常要用于上 ...

  8. USB设备驱动学习记录

    0:EHCI主控架构 1.关于设备地址SET_ADDRESS设置的逻辑: 可以看到set_address命令最终通过USB_DRV_WriteReg8(&musb->faddr, g_u ...

  9. 2021-03-30 一笔记 STM32基础知识

    2021.3.30 第一次笔记 STM32的入门学习之基础知识 一 STM32的介绍 STM32是基于ARM内核的32位MCU系列---内核为ARM公司为要求高性能,低成本,低功耗的嵌入式应用专门设计 ...

  10. Android搭建ftp服务器/客户端

    jar包链接https://download.csdn.net/download/weixin_40391500/10629775 ftp服务器 不设置读写权限是不能上传的文件的 private st ...

最新文章

  1. 算法(4)数据结构:堆
  2. K-BERT | 基于知识图谱的语言表示模型
  3. function()默认参数中ReferenceError Cannot access ‘a‘ before initialization的解决方法
  4. PC远程控制 NetSupport Manager
  5. 会写代码是你创业路上的包袱吗?
  6. css中background-image背景图片路径设置
  7. php程序员可能不了解的编程细节
  8. 基于java的数据结构学习——数组实现的栈以及简单应用
  9. sqlserver 字符串转化数值函数_Excel常见函数用法(TEXT函数)
  10. ubuntu安装hadoop2.9.2
  11. r-cnn 行人检测_了解用于对象检测的快速R-CNN和快速R-CNN。
  12. linux 软件逆向工程,黑莓开源软件逆向工程 PE 文件的工具PE tree作为IDA插件的安装方式...
  13. 软件项目组织与管理期末考试复习要点整理翻译
  14. 《敏捷项目管理》知识要点整理
  15. python线性链表
  16. arcgis出界址点成果表_勘测定界界址点坐标成果表(TXT文件)
  17. 计算机科学与技术影视,计算机科学与技术专业--水墨的影视艺术语言的研究
  18. w7系统事件日志服务器,win7系统事件日志服务4201错误的解决方法
  19. python既是无序序列又不可重复的是_python 在set里随机选一个元素_Python序列--集合(set)...
  20. excel如何快速将中文翻译为英文?

热门文章

  1. OpenSSL源码下载及编译
  2. C++程序设计 第2单元作业2:在线编程-名字空间
  3. 回归中的相关度和决定系数及应用
  4. iOS:编译问题Presenting view controllers on detached view controllers is discouraged
  5. 电脑能复制不能粘贴的问题
  6. 谈谈基因的黑科技 - 抛砖引玉篇
  7. 上亿用户,如何高效统计独立用户访问量?
  8. html5文本缩进,CSS怎样缩进文本?
  9. Revit二次开发--为管道添加标注
  10. bluehost 盗版_如何免费使用bluehost设置电子邮件地址并连接到gmail或Outlook 2020