簡體   English   中英

我應該如何在 Mbed 中有效地寫入 sd 卡?

[英]how should i write to sd card effectively in Mbed?

我一直在嘗試使用 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 卡,還是我的代碼有問題?

干杯,

阿里

健太郎在評論中給出了正確答案。 格式化您的 SD 卡以重新開始,然后始終關閉代碼中的文件。

背景:文件操作通常是緩沖的。 因此,即使您編寫代碼,這些字節也只會存在於 RAM 中,直到達到某個閾值,或者通常它們會保留在 RAM 中,直到您關閉它。 然后它將實際文件寫入一個 go。 這樣可以節省代碼運行的時間。 此外,關閉可能會對 SD 卡 FAT 表進行一些清理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM