IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 1.30 Cubemx_STM32H743 SD_Card纳入文件管理系统 -> 正文阅读

[嵌入式]1.30 Cubemx_STM32H743 SD_Card纳入文件管理系统

Cubemx_STM32H743 SD_Card纳入文件管理系统

1、简介

和前面文章原理其实一样的。
1.29 Cubemx_STM32F429\H743 nandflash、spifalsh纳入文件管理系统
现在一并将SD卡、NandFlash、SPIFlash一并作为文件管理。
下面直接介绍SDcard,其他参考前面文章。

2、CubeMX配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 、bsp

#include <stdio.h>
#include <string.h>
#include "ff.h"
#include "fatfs.h"
#include "bsp_led.h"

#define FILE_NAME_SD   "0:sudaroot.txt"

extern  uint8_t mk_buffer[4096]; /* a work buffer for the f_mkfs() */
extern  unsigned int count;
extern  unsigned char work[4096];
extern  unsigned char read_buf[50] ;
extern  unsigned char write_buf[50];

void test_mkfs_sdcard(void)
{
	FRESULT retSD;
	retSD = f_mount(&SDFatFS, SDPath, 1);
	retSD = f_mkfs((TCHAR const*)SDPath, FM_FAT32, 0, mk_buffer, sizeof(mk_buffer));

	// retSD = f_mount(&SDFatFS, “0:”, 1);
	// retSD = f_mkfs(“0:”, FM_FAT32, 0, mk_buffer, sizeof(mk_buffer));
	__NOP();
}


void test_SD_FATFS(void)
{
	    FRESULT retSD;
     printf("\r\n ****** FatFs Example ******\r\n\r\n");
    /*##-1- Register the file system object to the FatFs module ##############*/
	//	f_mount(&spi_fs,"0:/",1);
    retSD = f_mount(&SDFatFS, SDPath, 1);
    if(retSD != FR_OK)
    {
        if(retSD == FR_NO_FILESYSTEM)
        {
            printf("f_mount 没有文件系统,开始格式化spi-flash\r\n");
            retSD = f_mkfs((TCHAR const*)SDPath, FM_FAT32, 0, mk_buffer, sizeof(mk_buffer));
            if(retSD != FR_OK)
            {
                printf("f_mkfs 格式化失败,err = %d\r\n", retSD);
                while(1);
            }
            else
            {
                printf("格式化成功,开始重新挂载spi-flash\r\n");
                retSD = f_mount(&SDFatFS,SDPath, 1);
                if(retSD != FR_OK)
                {
                    printf("f_mount 发生错误,err = %d\r\n", retSD);
                }
                else printf("spi-flash文件系统挂载成功\r\n");
            }
        }
        else
        {
            printf("f_mount 发生其他错误,err = %d\r\n", retSD);
            while(1);
        }
    }
    else printf("sd_card文件系统挂载成功\r\n");
    /*----------------------- 文件系统测试:写测试 -----------------------------*/
    printf("\r\n****** 即将进行文件写入测试... ******\r\n");
    retSD = f_open(&SDFile,FILE_NAME_SD, FA_OPEN_ALWAYS | FA_WRITE);
    if(retSD == FR_OK)
    {
        printf("打开/创建sudaroot.txt文件成功,向文件写入数据。\r\n");
        retSD = f_write(&SDFile, write_buf, strlen((const char *)write_buf), &count);
        if(retSD != FR_OK)
        {
            printf("f_write 发生错误,err = %d\r\n", retSD);
            printf("关闭打开的sudaroot.txt文件\r\n");
            count = 0;
            f_close(&SDFile);
        }
        else
        {
            printf("文件写入成功,写入字节数据:%d\n", count);
            printf("向文件写入的数据为:\r\n%s\r\n", write_buf);
            printf("关闭打开的sudaroot.txt文件\r\n");
            count = 0;
            f_close(&SDFile);
        }
    }
    else printf("打开/创建sudaroot.txt文件失败,err = %d\r\n", retSD);
    /*------------------- 文件系统测试:读测试 ------------------------------------*/
    printf("****** 即将进行文件读取测试... ******\r\n");
    retSD = f_open(&SDFile, FILE_NAME_SD, FA_OPEN_EXISTING | FA_READ);
    if(retSD == FR_OK)
    {
        printf("打开sudaroot.txt文件成功\r\n");
        retSD = f_read(&SDFile, read_buf, sizeof(read_buf), &count);
        if(retSD != FR_OK)
        {
            printf("f_read 发生错误,err = %d\r\n", retSD);
            printf("关闭打开的sudaroot.txt文件\r\n");
            f_close(&SDFile);
        }
        else
        {
            printf("文件读取成功,读取字节数据:%d\n", count);
            printf("向文件读取的数据为:\r\n%s\r\n", read_buf);
            printf("关闭打开的sudaroot.txt文件\r\n");
            f_close(&SDFile);
        }
    }
    else printf("打开sudaroot.txt文件失败,err = %d\r\n", retSD);
//			/* 不再使用文件系统,取消挂载文件系统 */
//	f_mount(NULL,"0:",1);
}

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 11:06:03  更:2021-10-22 11:06:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:43:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码