单片机学习小组
直播中

贾永世

7年用户 1805经验值
私信 关注

使用stm32H750进行sd卡的fatfs实验时爆出FR_NOFILESYSTEM的错误怎么解决?

使用STM32H750进行sd卡的fatfs实验时爆出FR_NOFILESYSTEM的错误怎么解决?

回帖(1)

李帅

2022-2-22 11:20:23
在使用stm32H750进行sd卡的fatfs实验时遇到了一些bug
具体步骤

1.配置时钟电路



2.配置系统

到freertos,这里使用TIM1



3.SDMMC1





除了PC12的CLK线,其他全部使用拉。不上,报FR_NOT_READY

打开报告被改写,在开启freertos之后,优先级会自动成5



4.配置fatfs第一个地方也可以选择



中文的。我直接用完中文的阻止了。cubeide出RAM用完如果sd的格式不是fat32,换exfat的话一定要启用,这里有一些会挂载失败,



爆出FR_NOFILESYSTEM的错误

5.freertosstack





设置大

.clock





下面给SDMMC1,2的数字时钟配置成48,配合SDMMC1设置的SDMMC时钟分频因子设置成5。卡的写入频率为4/(5+2) 6M。 7.程序

给大一点的heap和stack注:用cubeide





可能产生挂不上的bug。



main函数基本不用改,只做freertos.c

#include "FreeRTOS.h"
#include "task.h"
#include "main.h"
#include "cmsis_os.h"

/* Private includes ------- -------------------------------------------------- -*/
/* 用户代码开始包含 */

#include "FreeRTOS.h"
#include "task.h"
#include "main.h"
#include "cmsis_os.h"

#include "fatfs.h"
#include "sdmmc .h"

UINT br,bw; // 变换变量

char test_buf[1024] = {"0000rn"};

void StartDefaultTask(void const * argument)
{
  /* USB_DEVICE 的初始化代码 */
  MX_USB_DEVICE_Init();



  retSD = f_mount(&SDFatFS,"",1);               
        while(retSD)
        {
                retSD = f_mount(&SDFatFS,"",1);
                os延迟(10);
        }

        uint32_t 时间=0;
        uint32_t 时间2=0;
        字符我;
  /* 无限循环 */
  for(;;)
  {
         
          time = time2;
          test_buf[3] = 时间%10+'0';
          时间/= 10;
          test_buf[2] = 时间%10+'0';
          时间/= 10;
          test_buf[1] = 时间%10+'0';
          时间/= 10;
          test_buf[0] = 时间%10+'0';
         
        retSD = f_open(&SDFile, "time.txt", FA_CREATE_ALWAYS | FA_WRITE | FA_READ);
        f_lseek(&SDFile,time2*5);
        retSD = f_write(&SDFile,&test_buf,strlen(test_buf),&bw) ;

        retSD = f_close(&SDFile);

        时间2++;      
        os延迟(100);
  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分