STM32F7+STM32CubeMX5.21+SD+FATFS
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>© 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相关推荐
- STM32 SD FatFs读写文件FR_DISK_ERR错误可能原因
使用STM32F7+STM32CubeMX5.21生成SD-FATFS代码,读写文件失败报FR_DISK_ERR错误可能原因: SDMMC传输频率过高.修改SDDMMC传输时钟分频系数. ...
- 21 SD配置-主数据-客户账户组分配编号范围
业务背景:客户账户组分配编号范围 事务码:OBAR SPRO路径:SPRO->财务会计(新)->应收账款和应付账款->客户账户->主数据->创建客户主数据的准备-> ...
- DSML:深度子空间相互学习模型(用于癌症亚型预测)
目录 背景描述 模型架构 数据表示 Single level omics data representation learning model(单级组学数据表示学习模型) Multi-level om ...
- statsby: 不用循环语句的循环
作者:胡雨霄 (伦敦政治经济学院) Stata 连享会: 知乎 | 主页 | 码云 | CSDN 连享会 - 与君分享 lianxh.cn 文章目录 1. statsby 命令简介 S ...
- 学编程会拉低数学成绩,巴黎大学跟踪1500个小学生得出结论
"怎么培养数学逻辑思维?来点编程试试?" 大概这是很多人的既有认知,毕竟感觉程序员们的数学都挺好的. 巴特,反转来了. 来自巴黎大学的研究人员发现,小学生改用编程课学数学后,对成绩 ...
- ALIENTEK MiniSTM32开发板结构功能
前两天才收到这款板子,看起来还不错,对板子的各部分功能才有了基本的认识 1.HS0038红外接收头 用于接受购买板子时配带的红外遥控器的信号 ,这样用板子就可以控制开发板 2.DS18B20预留 ...
- Siemens PPI协议分析
大家好:我是山东临沂的郝金红,PLC解密网是我的个人网站.由于前段时间的疯狂的研究西门子PPI协议解密之故,所以无心插柳的研究出了较实用的西门子S7-200 PPI协议,今天奉献大家.我们经常要用于上 ...
- USB设备驱动学习记录
0:EHCI主控架构 1.关于设备地址SET_ADDRESS设置的逻辑: 可以看到set_address命令最终通过USB_DRV_WriteReg8(&musb->faddr, g_u ...
- 2021-03-30 一笔记 STM32基础知识
2021.3.30 第一次笔记 STM32的入门学习之基础知识 一 STM32的介绍 STM32是基于ARM内核的32位MCU系列---内核为ARM公司为要求高性能,低成本,低功耗的嵌入式应用专门设计 ...
- Android搭建ftp服务器/客户端
jar包链接https://download.csdn.net/download/weixin_40391500/10629775 ftp服务器 不设置读写权限是不能上传的文件的 private st ...
最新文章
- 算法(4)数据结构:堆
- K-BERT | 基于知识图谱的语言表示模型
- function()默认参数中ReferenceError Cannot access ‘a‘ before initialization的解决方法
- PC远程控制 NetSupport Manager
- 会写代码是你创业路上的包袱吗?
- css中background-image背景图片路径设置
- php程序员可能不了解的编程细节
- 基于java的数据结构学习——数组实现的栈以及简单应用
- sqlserver 字符串转化数值函数_Excel常见函数用法(TEXT函数)
- ubuntu安装hadoop2.9.2
- r-cnn 行人检测_了解用于对象检测的快速R-CNN和快速R-CNN。
- linux 软件逆向工程,黑莓开源软件逆向工程 PE 文件的工具PE tree作为IDA插件的安装方式...
- 软件项目组织与管理期末考试复习要点整理翻译
- 《敏捷项目管理》知识要点整理
- python线性链表
- arcgis出界址点成果表_勘测定界界址点坐标成果表(TXT文件)
- 计算机科学与技术影视,计算机科学与技术专业--水墨的影视艺术语言的研究
- w7系统事件日志服务器,win7系统事件日志服务4201错误的解决方法
- python既是无序序列又不可重复的是_python 在set里随机选一个元素_Python序列--集合(set)...
- excel如何快速将中文翻译为英文?
热门文章
- OpenSSL源码下载及编译
- C++程序设计 第2单元作业2:在线编程-名字空间
- 回归中的相关度和决定系数及应用
- iOS:编译问题Presenting view controllers on detached view controllers is discouraged
- 电脑能复制不能粘贴的问题
- 谈谈基因的黑科技 - 抛砖引玉篇
- 上亿用户,如何高效统计独立用户访问量?
- html5文本缩进,CSS怎样缩进文本?
- Revit二次开发--为管道添加标注
- bluehost 盗版_如何免费使用bluehost设置电子邮件地址并连接到gmail或Outlook 2020