在使用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);
}
在使用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);
}
举报