我一直试图使用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("starting\r\n");
FILE *fp = fopen("/sd/sdtest.txt", "w");
if(fp == NULL) {
pc.printf("Could not open file for write\n");
}
fprintf(fp,"starting to read from strain gauge:128G, 32G \r\n");
fprintf(fp,"\r\n");
pc.printf("worked!\r\n");
}
它以前曾经工作过一两次,但是只有在我上载代码之前拥有sd卡时才起作用,并且当我按下重置按钮时不会重写到sd卡中。但是,它似乎不再起作用。
我可能只是损坏了SD卡,还是我的代码有问题?
干杯
阿里
答案 0 :(得分:1)
健太郎在评论中给出了正确答案。格式化SD卡以重新开始,然后始终关闭代码中的文件。
背景:文件操作通常被缓冲。因此,即使您编写代码,这些字节也将一直存在于RAM中直到达到某个阈值为止;或者通常,它们将保留在RAM中直到您将其关闭为止。然后一口气将实际文件写入。这样可以节省代码运行的时间。另外,关闭可能会对SD卡FAT表进行一些清理