我应该如何在 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("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表进行一些清理
相关文章:
- 有效地使用std::unordered_map来插入或增加键的值
- 如何有效地在 std::vector 中插入一对?
- 有效地计算多维数组的累积和?
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- 有效地将大数存储为 2 的幂用于路径问题
- 如何在C++中写入 1000 个文件时有效地缓冲
- 如何有效地找到数组中三元组和的最小差异?
- 如何在C++中有效地将数字值重新分配给字符数组
- C++有效地找到向量中第一个最接近的匹配值?
- 如何有效地操作满足给定谓词的向量中的所有项目?
- 有效地将数据加载到 std::vector 中<char>
- 如何在使用 cin 请求 int 时有效地使用户输入万无一失?
- C++:有效地将Sha256摘要放入OpenSSL Bignum?
- 如何有效地收集给定数组中的重复元素?
- 如何有效地修剪和合并四叉树中的节点?
- 可以有效地转换 std::any 与 std::any_cast
- 只需要知道我在c ++中打印模式的方式是否有效,或者有另一种方法可以有效地做到这一点
- 如何使用包含内部类的类实例有效地从内部类访问成员?
- 当表示为对象的一维向量时,有效地旋转 NxM 矩阵 (C++)
- 我应该如何在 Mbed 中有效地写入 SD 卡?