我应该如何在 Mbed 中有效地写入 SD 卡?

how should i write to sd card effectively in Mbed?

本文关键字:SD 有效地 Mbed 我应该      更新时间:2023-10-16

我一直在尝试使用SD卡将数据记录到我的NUCLEO F746ZG中。这是我的代码:

#include "mbed.h"
#include "SDFileSystem.h"
//#include "Hx711.h"
#include <string>
//#include "ep29.h"
//#include "wsdef.h"
//#include "image.h"
//#include <vector>
PinName mosi = PE_6;
PinName miso = PE_5;
PinName sclk = PE_2;
PinName cs = PE_4;
PinName cd = PE_3;
SDFileSystem sd(mosi, miso, sclk, cs, "sd"); // the pinout on the mbed Cool Components workshop board
Serial pc(SERIAL_TX, SERIAL_RX);
int main(void) {
pc.baud(9600);
pc.printf("startingrn");
FILE *fp = fopen("/sd/sdtest.txt", "w");
if(fp == NULL) {
pc.printf("Could not open file for writen");
}
fprintf(fp,"starting to read from strain gauge:128G, 32G rn");
fprintf(fp,"rn");
pc.printf("worked!rn");
}

它以前工作过一两次,但只有在上传代码之前我有 sd 卡时才有效,并且在我按下重置按钮时不会重写到 sd 卡。但是,它似乎不再起作用了。

是不是我刚刚被SD卡弄脏了,还是我的代码有问题?

干杯

阿里

Kentaro在评论中给出了正确的答案。 格式化 SD 卡以重新开始,然后始终关闭代码中的文件。

背景:文件操作通常是缓冲的。 因此,即使您用代码编写,这些字节也只是存在于 RAM 中,直到达到某个阈值,或者通常,它们会保留在 RAM 中,直到您关闭它。 然后它一次性完成实际的文件写入。 这样可以节省代码运行时的时间。 此外,关闭可能会对SD卡FAT表进行一些清理