gpt4 book ai didi

c - STM32F429,FatFs,f_write。在多次输入 FR_DISK_ERR 之后,使用 f_write 在循环中创建大量文件

转载 作者:行者123 更新时间:2023-11-30 16:20:03 33 4
gpt4 key购买 nike

我正在尝试使用 FatFs libery 中的 f_write 函数循环保存 SD 卡上的大量文件,不幸的是,在最多 50 个循环条目之后,f_write 返回 FR_DISK_ERR。

做一个测试花了30多分钟,所以我做了Enity Test,它在SD卡上保存了10,000个文件,程序仍然保存了<50个文件。

for(uint16_t i = 0; i < 10000; ++i){

if(f_mount(&mfs,"0:",0) != FR_OK){

to_int.put_str("Mount error");
break;

}

if(f_chdrive("0:" ) != FR_OK){

to_int.put_str("Oper error");
break;

}

sprintf(f_name, "test%d.txt", i);
if(f_open(&fil, f_name, FA_WRITE | FA_CREATE_ALWAYS)!= FR_OK){

to_int.put_str("Write error");
break;

}

if(f_write(&fil, wtext, sizeof(wtext), (void *)&wbytes) != FR_OK){ //<------FR_DISK_ERR

to_int.put_str("Write Error\n");
break;

}

f_sync(&fil);
f_close(&fil);
f_mount(0, "0:", 0);

to_int.put_str(f_name);\
to_int.put_str(" writed!\n");

}

最佳答案

因此,这似乎可能是堆栈大小问题,特别是如果您可以在 50 处重复此操作。您的堆栈大小配置为多少?如果堆栈空间不足,ST 使用的第三方 FATFS 在读写大量文件时会出现问题。

增加堆栈大小,它应该可以正常工作。

关于c - STM32F429,FatFs,f_write。在多次输入 FR_DISK_ERR 之后,使用 f_write 在循环中创建大量文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55418995/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com